ich versuche nun seit einer ganzen Weile das Single Sign On meines OTRS zum laufen zu kriegen.
Derzeit bin ich im Status, dass OTRS wohl bereits versucht SSO beim Aufruf von http://ticketsystem.Firma.de/otrs/index.pl durchzuführen, jedoch mit der Meldung "Anmeldung fehlgeschlagen! Benutzername oder Passwort wurden falsch eingegeben." scheitert.
Im Systemprotokoll stehen dazu die Nachrichten "Need User!" gefolgt von "Need UserLogin or UserID!".
Im Apache steht bei mir folgendes:
Code: Select all
#Anfang Konfig SSO
ServerName ticketsystem.firma.de
#<Location />
# AuthType Kerberos
# AuthName "Kerberos authenticated intranet"
# KrbAuthRealms FIRMA.DE
# KrbServiceName HTTP/ticketsystem.firma.de
# Krb5Keytab /etc/kerberos.keytab
# KrbMethodNegotiate On
# KrbMethodK5Passwd On
# require valid-user
#</Location>
#Ende Konfig SSO
LoadModule auth_kerb_module usr/lib/apache2/modules/mod_auth_kerb.so
#<Directory "/opt/otrs/bin/cgi-bin/">
#AllowOverride None
#AuthType Kerberos
#AuthName "OTRS"
#Krb5Keytab /etc/kerberos.keytab
#KrbAuthRealms FIRMA.DE
#KrbMethodNegotiate on
#KrbSaveCredentials off
#KrbMethodK5Passwd on
#Require valid-user
#Order allow,deny
#Allow from all
#</Directory>
<Directory /otrs>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
AuthType Kerberos
AuthName "OTRS"
Krb5Keytab /etc/kerberos.keytab
KrbAuthRealm FIRMA.DE
KrbMethodNegotiate on
KrbSaveCredentials on
KrbMethodK5Passwd on
KrbServiceName HTTP
Require valid-user
KrbLocalUserMapping on
</Directory>
Code: Select all
[realms]
FIRMA.DE = {
kdc = DC01.FIRMA.DE
admin_server = DC01.FIRMA.DE
default_domain = FIRMA.DE
}
[domain_realm]
.firma.de = FIRMA.DE
firma.de = FIRMA.DE
Code: Select all
################################################################################################################################
#------------------------------------------------------------------------------------------------------------------------------#
# LDAP Anbindung Firma #
#------------------------------------------------------------------------------------------------------------------------------#
#------------------------------------------------------------------------------------------------------------------------------#
# Authentifizierung Agenten via LDAP (AD) Firma #
#------------------------------------------------------------------------------------------------------------------------------#
$Self->{'AuthModule1'} = 'Kernel::System::Auth::LDAP';
$Self->{'AuthModule::LDAP::Host1'} = 'dc01.firma.de';
$Self->{'AuthModule::LDAP::BaseDN1'} = 'dc=firma,dc=de'; # lest euch die Seiten die ich oben verlinkt habe durch,
$Self->{'AuthModule::LDAP::UID1'} = 'samaccountname';
$Self->{'AuthModule::LDAP::GroupDN1'} = 'CN=\x,OU=xx,OU=xxx,OU=xxxx,OU=\xxxxx,DC=firma,DC=de';
$Self->{'AuthModule::LDAP::AccessAttr1'} = 'member';
$Self->{'AuthModule::LDAP::UserAttr1'} = 'DN';
$Self->{'AuthModule::LDAP::SearchUserDN1'} = 'OTRS@firma.de';
# oder eben die DN des Bindusers, war bei mir ne böse Falle weil ich es nicht wörtlich genug genommen habe. Die SearchUserDN ist nicht die DN
# in der der User liegt sondern die eindeutige des Users, das gleiche gilt für die GroupDNs
# der Search User muss Mitglied in "Domänen-Benutzer" und in "Windows-Authentifizierungszugriffgruppe" sein
$Self->{'AuthModule::LDAP::SearchUserPw1'} = 'XXXXX';
$Self->{'UserSyncLDAPMap1'} = {
'UserEmail' => 'mail',
'UserFirstname' => 'givenName',
'UserLastname' => 'sn',
'UserLogin' => 'sAMAccountName'
};
################################################################################################################################
#------------------------------------------------------------------------------------------------------------------------------#
# Customer #
#------------------------------------------------------------------------------------------------------------------------------#
$Self->{'Customer::AuthModule1'} = 'Kernel::System::CustomerAuth::LDAP';
$Self->{'Customer::AuthModule::LDAP::Host1'} = 'dc01.firma.de';
$Self->{'Customer::AuthModule::LDAP::BaseDN1'} ='OU=\x,DC=xx,DC=de'; # hier die DN
# in der eure User liegen, kommt halt drauf an wie eurer AD strukturiert ist
$Self->{'Customer::AuthModule::LDAP::UID1'} = 'sAMAccountName';
$Self->{'Customer::AuthModule::LDAP::GroupDN1'} = 'CN=\x,OU=xx,OU=xxx,OU=xxxx,OU=xxxxx,DC=firma,DC=de';
# nur wer in der Gruppe 'otrscustomer' ist darf sich einloggen
$Self->{'Customer::AuthModule::LDAP::AccessAttr1'} = 'member';
$Self->{'Customer::AuthModule::LDAP::SearchUserDN1'} = 'OTRS@firma.de'; #s.o. das hier wäre dann der userPrincipalName
#ob es irgenwelche Nachteile hat wenn man den userPrincipalName anstatt der DN nimmt weiss ich nicht...
$Self->{'Customer::AuthModule::LDAP::SearchUserPw1'} = 'XXXXX';
$Self->{'Customer::AuthModule::LDAP::Params1'} = {
port => 389,
timeout => 120,
async => 0,
version => 3,
};
#------------------------------------------------------------------------------------------------------------------------------#
# LDAP System Users #
#------------------------------------------------------------------------------------------------------------------------------#
$Self->{'AuthModule1'} = 'Kernel::System::Auth::LDAP';
$Self->{'AuthModule::LDAP::Host1'} = 'dc01.firma.de';
$Self->{'AuthModule::LDAP::BaseDN1'} = 'dc=firma,dc=de';
$Self->{'AuthModule::LDAP::UID1'} = 'sAMAccountName';
$Self->{'AuthModule::LDAP::SearchUserDN1'} = 'OTRS@firma.de';
$Self->{'AuthModule::LDAP::SearchUserPw1'} = 'XXXXX';
$Self->{'AuthModule::LDAP::Params1'} = {
'async' => '0',
'timeout' => '120',
'version' => '3',
'port' => '389'
};
$Self->{'AuthModule::LDAP::Die1'} = 1;
#------------------------------------------------------------------------------------------------------------------------------#
# UserSyncLDAPMap #
#------------------------------------------------------------------------------------------------------------------------------#
$Self->{'UserSyncLDAPMap1'} = {
'UserEmail' => 'mail',
'UserFirstname' => 'givenName',
'UserLastname' => 'sn',
'UserLogin' => 'sAMAccountName'
};
$Self->{CustomerUser1} = {
Name => 'Firma Customer',
Module => 'Kernel::System::CustomerUser::LDAP',
Params => {
Host => 'dc01.firma.de',
BaseDN => 'dc=firma,dc=de',
SSCOPE => 'sub',
UserDN => 'OTRS@firma.de', # wieder DN oder UserPrincipalName
UserPw => 'XXXXX',
AlwaysFilter => '(&(|(memberOf=CN=\#x,OU=Benutzer,OU=xx,OU=xxx,OU=\#xxxx,DC=xxxxx,DC=de)(memberOf=CN=\#hier funzt alles war nen langer filter
# falls ihr was ausschliessen wollt:
# AlwaysFilter => '(&(objectclass=user)(mail=*.*@Firma.de)(!((was auch immer)))',
},
CustomerKey => 'sAMAccountName',
CustomerID => 'mail',
CustomerUserListFields => ['sAMAccountName', 'cn', 'mail'],
CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail'],
CustomerUserPostMasterSearchFields => ['mail'],
CustomerUserNameFields => ['givenname', 'sn'],
CustomerUserSearchListLimit => 1000, # die Anzahl der User die in euerer Kundenübersicht maximal angezeit werden.
# die Zeile muss nicht rein, macht aber bei uns hier Sinn.
Map => [
[ 'UserSalutation', 'Title', 'title', 1, 0, 'var' ],
[ 'UserFirstname', 'Firstname', 'givenname', 1, 1, 'var' ],
[ 'UserLastname', 'Lastname', 'sn', 1, 1, 'var' ],
[ 'UserLogin', 'Login', 'sAMAccountName', 1, 1, 'var' ],
[ 'UserEmail', 'Email', 'mail', 1, 1, 'var' ],
[ 'UserCustomerID', 'CustomerID', 'mail', 0, 1, 'var' ],
[ 'UserPhone', 'Phone', 'telephonenumber', 1, 0, 'var' ],
],
};
#------------------------------------------------------------------------------------------------------------------------------#
# Firma Ende #
#------------------------------------------------------------------------------------------------------------------------------#
################################################################################################################################
################################################################################################################################
#------------------------------------------------------------------------------------------------------------------------------#
# Anpassung für Kerberos SSO #
#------------------------------------------------------------------------------------------------------------------------------#
$Self->{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::HTTPBasicAuth';
#$Self->{'Customer::AuthModule::HTTPBasicAuth::Replace'} = 'FIRMA.DE\\';
$Self->{'Customer::AuthModule::HTTPBasicAuth::ReplaceRegExp'} = '@FIRMA.DE';
$Self->{'AuthModule'} = 'Kernel::System::Auth::HTTPBasicAuth';
#$Self->{'AuthModule::HTTPBasicAuth::Replace'} = 'FIRMA.DE\\';
$Self->{'AuthModule::HTTPBasicAuth::ReplaceRegExp'} = '@FIRMA.DE';
#------------------------------------------------------------------------------------------------------------------------------#
# Anpassung für Kerberos SSO Ende #
#------------------------------------------------------------------------------------------------------------------------------#
################################################################################################################################
Der Userabgleich aus dem AD funktioniert tadellos.
Gewählte User können sich auch weiter trotz missglückter SSO Anmeldung im zweiten Schritt anmelden.
kinit username@domain funktioniert nach Passwortabfrage bzw sagt danach nichts.
Die .keytab datei wurde mit einem für OTRS angelegten User auf dem PDC erstellt und in /etc kopiert.
Ich habe im Netz und im Forum schon viel gesucht, aber langsam gehen mir die Ideen aus.
Woran ich noch dachte war, dass Email und Samaccountname in der Firma so ganz und gar nicht übereinstimmen.
Als ich jedoch in der Config.pm Samaccountname durch mail ersetzt habe ging gar nichts mehr.
Ich bin für jeden Rat sehr dankbar!
Kann ja nicht sein, dass mich der SSO, der eigentlich nur ein paar Zeilen an Code ausmacht schon über 2 Tage beschäftigt..... zum Haare rausreißen!
Falls noch weitere Erörterungen nötig sind, so liefere ich diese auf Nachfrage natürlich gerne.
Viele Grüße
RK
Mensch, er versucht doch den Login zu machen .... warum klappt es nicht?
Kann man irgendwo auslesen, welche Daten in der Anmeldemaske einzugeben versucht werden?
Man sieht einmal kurz eine zitternde Website von wegen Username und Passwort falsch, obwohl man nichts eingibt.
Sobald dann jedoch die Daten eingegeben werden funktioniert es.
Ich habe nun auch einen User erstellt, welcher alle Namen gleich hat, also OTRS als Vor, Nach, Anzeigename und mailadresse, jedoch kommt auch bei dem das gleiche Erscheinungsbild.