Hallo ihr da draussen, da ich mir bei der LDAP Anbindung oft genug wie ein Dummie vorgekommen bin hab hier ein Beispielscript für alle die eine LDAP Anbindung haben wollen, und es genau wie ich nicht direkt auf Anhieb raffen :)
Alles weitere steht in dem Script. Konstruktive Kritik wird natürlich gerne gelesen. Boris P.S. für die die nicht im Forum sind:-)
# Hallo Admins, # bei mir hat es ziemlich lange gedauert bis ich eine LDAP Anbindung hinbekommen habe. # Es hat mich viele Stunden Recherche und bestimmt einige Jahre meines Lebens gekostet:-) # Das versuche ich euch hiermit zu ersparen. # einen ähnlichen Beitrag hab ich zwar schonmal ins Forum geschrieben aber der war noch ein bißchen...fehlerhafter:-) # Das alles hab ich im OTRS- Forum (http://forums.otrs.org/) und er Mailing- Liste (http://www.otrs.org/lists/) gelernt und versuch es hier mal etwas zusammen zu raffen. # Um LDAP erstmal grundlegend zu verstehen hat mir diese Seiten hier sehr geholfen. # Lest euch das mal durch... das spart sehr viel Zeit und viele Fehlversuche. # http://www.selfadsi.de/ldap-path.htm#DNs # http://www.selfadsi.de/bind.htm # http://www.selfadsi.de/search.htm # ladet euch einem LDAP- Browser runter z.B. hier http://www.ldapadministrator.com/ # damit wird es wesentlich einfacher # und vielleicht einen anständigen Editor, ich hab Notepad++, hilft auch viele Tippfehler (vergessene ' usw.) zu vermeiden. # In diesem Sinne hier eine Beispielconfig die euch hoffentlich bei der LDAP Anbindung hilft. # Ich werd Sie mit Kommentaren vollmüllen damit die einzelnen Punkte klarer werden, zumindest hat es da bei mir gehakt... # Diese Config ist bestimmt nicht perfekt und kann sicherlich noch verbessert werden, aber sie funtioniert:-) ################################################################################################################################ #----------------------------------------------------------# # # # LDAP Authentifizierung Agenten und Customer # # # #----------------------------------------------------------# #Agenten Authentifizierung DB # Backend DB fuer Agenten #$Self->{'AuthModule10'} = 'Kernel::System::Auth::DB'; #$Self->{'AuthModule::DB::CryptType10'} = 'crypt'; # hab ich deaktiviert weil sich unsere Agents auch gegen das LDAP Authentifizieren sollen # nach meinem Wissenstand müssen die Agenten aber trotzdem in der Datenbank stehen. ################################################################################################################################ ################################################################################################################################ #------------------------------------------------------------------------------------------------------------------------------# # LDAP Anbindung Firma # #------------------------------------------------------------------------------------------------------------------------------# #------------------------------------------------------------------------------------------------------------------------------# # Authentifizierung Agenten via LDAP (AD) Firma # #------------------------------------------------------------------------------------------------------------------------------# # Hier steht überall 1 hinter (AuthModule1, Host1, ...) # habe ich drin gelassen weil ich mehrere ADs abfrage und auch mehrere Firmen im OTRS habe # wenn ihr nur eine habt kann die 1 überall weg. Ansonsten müsst ihr den ganzen Block halt pro Firma anlegen und einfach durchnummerieren # Aber hier steht ein wichtiger Beitrag von jojo # http://forums.otrs.org/viewtopic.php?f=17&t=7423 # da bin ich auch drauf reingefallen bezüglich der Nummerierung, muss man halt erst mal wissen:-) $Self->{'AuthModule1'} = 'Kernel::System::Auth::LDAP'; $Self->{'AuthModule::LDAP::Host1'} = 'IP-Domänencontroller';# hier kann auch ein DNS Eintrag rein $Self->{'AuthModule::LDAP::BaseDN1'} = 'dc=Firma,dc=local'; # lest euch die Seiten die ich oben verlinkt habe durch, # dann wird DN,OU, DC usw. alles klar:-) $Self->{'AuthModule::LDAP::UID1'} = 'samaccountname'; $Self->{'AuthModule::LDAP::GroupDN1'} = 'CN=otrsagents,OU=Gruppen,DC=Firma,DC=local'; # nur Mitlieder dieser Gruppe dürfen sich einloggen $Self->{'AuthModule::LDAP::AccessAttr1'} = 'member'; # bei 2008er Domänen ist es 'member' bei 2003er ist es 'memberUID'* $Self->{'AuthModule::LDAP::UserAttr1'} = 'DN'; $Self->{'AuthModule::LDAP::SearchUserDN1'} = 'CN=otrsldap,CN=Users,DC=COMPASS,DC=local'; #hier geht es auch mit dem user Principal Name, # 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'} = 'Passwort'; $Self->{'UserSyncLDAPMap1'} = { 'UserEmail' => 'mail', 'UserFirstname' => 'givenName', 'UserLastname' => 'sn', 'UserLogin' => 'sAMAccountName' }; ################################################################################################################################ #------------------------------------------------------------------------------------------------------------------------------# # Customer # #------------------------------------------------------------------------------------------------------------------------------# $Self->{'Customer::AuthModule1'} = 'Kernel::System::CustomerAuth::LDAP'; $Self->{'Customer::AuthModule::LDAP::Host1'} = 'IP-Domänencontroller'; $Self->{'Customer::AuthModule::LDAP::BaseDN1'} ='OU=Users,DC=Firma,DC=local'; # 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=otrscustomer,CN=Users,DC=Firma,DC=local'; # das gleiche wie bei den Agents # nur wer in der Gruppe 'otrscustomer' ist darf sich einloggen $Self->{'Customer::AuthModule::LDAP::AccessAttr1'} = 'member'; #s.o. $Self->{'Customer::AuthModule::LDAP::SearchUserDN1'} = 'otrsldap@Firma.local'; #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'} = 'Passwort'; $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'} = 'IP-Domänencontroller'; $Self->{'AuthModule::LDAP::BaseDN1'} = 'DC=Firma,DC=local'; $Self->{'AuthModule::LDAP::UID1'} = 'sAMAccountName'; $Self->{'AuthModule::LDAP::SearchUserDN1'} = 'otrsldap@Firma.local'; $Self->{'AuthModule::LDAP::SearchUserPw1'} = 'Passwort'; $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 => 'IP-Domänencontroller', BaseDN => 'DC=Firma,DC=local', SSCOPE => 'sub', UserDN => 'otrsldap@Firma.local', # wieder DN oder UserPrincipalName UserPw => 'Passwort', AlwaysFilter => '(&(objectclass=user)(mail=*.*@Firma.de))', # 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 # #------------------------------------------------------------------------------------------------------------------------------# ################################################################################################################################ # jetzt solltet ihr eine LDAP Anbindung haben. # Falls ihr mehr als 200 Kunden habt und denen Gruppen zuweisen wollt gukct mal hier: # http://forums.otrs.org/viewtopic.php?f=17&t=7516 # das hat mich auch fast in den Wahnsinn getrieben, aber ist wie man sieht eigentlich ganz einfach:-) # so ich hoffe das hilft dem ein oder anderen es schneller hinzubekommen und zu verstehen als ich # kommetare hab ich da eingefügt wo ich die meisten Verständnisprobleme hatte. # An alle die es besser wissen als ich: # Ihr dürft mich gerne korrigieren oder das Script hier anpassen, ich bin für jede konstruktive Kritik dankbar.
--------------------------------------------------------------------- OTRS mailing list: otrs-de - Webpage: http://otrs.org/ Archive: http://lists.otrs.org/pipermail/otrs-de To unsubscribe: http://lists.otrs.org/mailman/listinfo/otrs-de