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

Antwort per Email an