LDAP OTRS 6

Hilfe zu OTRS Problemen aller Art
Post Reply
shinduke
Znuny newbie
Posts: 27
Joined: 12 Jan 2018, 09:06
Znuny Version: 6 Free

LDAP OTRS 6

Post by shinduke »

Hallo,

da ich mich nun seit einem Tag damit rumschlage und den Fehler einfach nicht finden kann hoffe ich auf eure Hilfe.
Ich bin noch recht unerfahren was OTRS angeht, jedoch versuche ich eine LDAP Anbindung für OTRS herzustellen, damit meine User sich als Kunden an OTRS anmelden können.
Hierzu gibt es:
- einen Testuser für Agenten: OTRS-Admin
- Eine Gruppe für Agenten: OTRS_Agenten (User ist drin)
- einen Testuser für Customer: Kunde
- eine Gruppe: OTRS_Customer (in der der User drin ist)
- im AD liegen die User alle unter XXX->Ulm
- es wurde ein User für die Authentifizierung angelegt: OTRS
- der User OTRS ist sowohl Domänen-Admin als auch in der Windows-Authorisierungsgruppe
- der User OTRS liegt unter XXX->IT->Systemkonten

Wenn ich mich nun mit dem "OTRS-Admin" anmelde bekomme ich folgende Fehlermeldung: [Error][Kernel::System::User::UserLookup][Line:968]: No UserID found for 'otrs-admin'!

Wenn ich mich mit dem User "Kunde" anmelden möchte bekomme ich die Fehlermeldung: [Error][Kernel::System::CustomerUser::SetPreferences][Line:1130]: No such user 'kunde'!
Authentifizierung erfolgreich, aber im Kunden Backend wurde kein Kunden Eintrag gefunden. Bitte kontaktieren Sie Ihren Administrator.

Hier noch meine Config.pm

Code: Select all

################################################################################################################################

################################################################################################################################
#------------------------------------------------------------------------------------------------------------------------------#
#                                                        LDAP Anbindung Firma                                                  #
#------------------------------------------------------------------------------------------------------------------------------#

#------------------------------------------------------------------------------------------------------------------------------#
#                                     Authentifizierung Agenten via LDAP (AD) Firma                                            #
#------------------------------------------------------------------------------------------------------------------------------#



        $Self->{'AuthModule1'} = 'Kernel::System::Auth::LDAP';
        $Self->{'AuthModule::LDAP::Host1'} = '192.168.157.10';
        $Self->{'AuthModule::LDAP::BaseDN1'} = 'dc=testdom,dc=local';
        $Self->{'AuthModule::LDAP::UID1'} = 'samaccountname';
        $Self->{'AuthModule::LDAP::GroupDN1'} = 'CN=OTRS_Agenten,OU=Ulm,OU=Gruppen,OU=XXX,DC=testdom,DC=local';
        $Self->{'AuthModule::LDAP::AccessAttr1'} = 'member';
        $Self->{'AuthModule::LDAP::UserAttr1'} = 'member';
        $Self->{'AuthModule::LDAP::SearchUserDN1'} = 'CN=OTRS,OU=Systemkonten,OU=IT,OU=XXX,DC=testdom,DC=local';
        $Self->{'AuthModule::LDAP::SearchUserPw1'} = '132456789';

        $Self->{'UserSyncLDAPMap1'} =  {
         'UserEmail' => 'mail',
         'UserFirstname' => 'givenName',
         'UserLastname' => 'sn',
         'UserLogin' => 'sAMAccountName'
                };

################################################################################################################################
#------------------------------------------------------------------------------------------------------------------------------#
#                                                            Customer                                                          #
#------------------------------------------------------------------------------------------------------------------------------#
        $Self->{'Customer::AuthModule1'} = 'Kernel::System::CustomerAuth::LDAP';
        $Self->{'Customer::AuthModule::LDAP::Host1'} = '192.168.157.10';
        $Self->{'Customer::AuthModule::LDAP::BaseDN1'} ='OU=Ulm,OU=XXX,DC=testdom,DC=local';
        $Self->{'Customer::AuthModule::LDAP::UID1'} = 'sAMAccountName';
        $Self->{'Customer::AuthModule::LDAP::GroupDN1'} = 'CN=OTRS_Customer,OU=Ulm,OU=Gruppen,OU=XXX,DC=testdom,DC=local';
        $Self->{'Customer::AuthModule::LDAP::AccessAttr1'} = 'member'; #s.o.
        $Self->{'Customer::AuthModule::LDAP::SearchUserDN1'} = 'CN=OTRS,OU=Systemkonten,OU=IT,OU=XXX,DC=testdom,DC=local'; #s.o.
        $Self->{'Customer::AuthModule::LDAP::SearchUserPw1'} = '123456789';
        $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'} =  '192.168.157.10';
        $Self->{'AuthModule::LDAP::BaseDN1'} =  'OU=Ulm,OU=XXX,DC=testdom,DC=local';
        $Self->{'AuthModule::LDAP::UID1'} =  'sAMAccountName';
        $Self->{'AuthModule::LDAP::SearchUserDN1'} =  'CN=OTRS,OU=Systemkonten,OU=IT,OU=XXX,DC=testdom,DC=local';
        $Self->{'AuthModule::LDAP::SearchUserPw1'} =  '123456798';
        $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 => 'LDAP Data Source',
    Module => 'Kernel::System::CustomerUser::LDAP',
    Params => {
    Host => '192.168.157.10',
    BaseDN => 'DC=testdom,DC=local',
    SSCOPE => 'sub',
    UserDN => 'CN=OTRS,OU=Systemkonten,OU=IT,OU=XXX,DC=testdom,DC=local',
    UserPw => '123456789',
    # AlwaysFilter =>  '(&(objectclass=user)(mail=*.*@Firma.de))',
    SourceCharset => 'iso-8859-1',
    },
    CustomerKey => 'sAMAccountName',
    CustomerID => 'mail',
    CustomerUserListFields => ['sAMAccountName', 'cn', 'mail'],
    CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail'],
    CustomerUserPostMasterSearchFields => ['mail'],
    CustomerUserNameFields => ['givenname', 'sn'],
    CustomerUserSearchListLimit => 1000,


    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' ],
    [ 'UserLogin', 'Login', 'uid', 1, 1, 'var' ],
    [ 'UserEmail', 'Email', 'mail', 1, 1, 'var' ],
    [ 'UserCustomerID', 'CustomerID', 'mail', 0, 1, 'var' ],
    [ 'UserPhone', 'Phone', 'telephonenumber', 1, 0, 'var' ],
    ],
    };

#------------------------------------------------------------------------------------------------------------------------------#
#                                                     Firma Ende                                                               #
#------------------------------------------------------------------------------------------------------------------------------#
################################################################################################################################

Ich würde mich freuen wenn ihr mir helfen könnt, da ich mich durch etliche Foren geklickt und gelesen habe und meinen Fehler einfach nicht finden kann. Die Anleitungen bringen mich auch nicht weiter.

Danke schon mal für die Antworten
shinduke
Znuny newbie
Posts: 27
Joined: 12 Jan 2018, 09:06
Znuny Version: 6 Free

Re: LDAP OTRS 6

Post by shinduke »

Danke kann geschlossen werden. Lösung habe ich wo anders gefunden.
Ich habe OTRS 6 im Einsatz. Für alle die das gleiche Problem haben, mein Code sieht so aus:

Code: Select all

# This is an example configuration for using an MS AD backend
    $Self->{'AuthModule'} = 'Kernel::System::Auth::LDAP';
    $Self->{'AuthModule::LDAP::Host'} = 'Servername.domäne.local';
    $Self->{'AuthModule::LDAP::BaseDN'} = 'dc=domäne,dc=local';
    $Self->{'AuthModule::LDAP::UID'} = 'sAMAccountName';

    # Check if the user is allowed to auth in a posixGroup
    # (e. g. user needs to be in a group OTRS_Agents to use otrs)
    $Self->{'AuthModule::LDAP::GroupDN'} = 'CN=OTRS_Agents,OU=Ordner2,OU=Gruppen,OU=Überordner,DC=domäne,DC=local';
    $Self->{'AuthModule::LDAP::AccessAttr'} = 'member';
    $Self->{'AuthModule::LDAP::UserAttr'} = 'DN';
	
    # Bind credentials to log into AD
    $Self->{'AuthModule::LDAP::SearchUserDN'} = 'CN=OTRS_binduser,OU=Systemkonten,OU=IT,OU=Überordner,DC=domäne,DC=local';
    $Self->{'AuthModule::LDAP::SearchUserPw'} = 'Passwort';

    # in case you want to add always one filter to each ldap query, use
    # this option. e. g. AlwaysFilter => '(mail=*)' or AlwaysFilter => '(objectclass=user)'
    $Self->{'AuthModule::LDAP::AlwaysFilter'} = '';

    # Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
    $Self->{'AuthModule::LDAP::Params'} = {
        port => 389,
        timeout => 120,
        async => 0,
        version => 3,
    };

# Now sync data with OTRS DB
    $Self->{'AuthSyncModule'} = 'Kernel::System::Auth::Sync::LDAP';
    $Self->{'AuthSyncModule::LDAP::Host'} = 'Servername.domäne.local';
    $Self->{'AuthSyncModule::LDAP::BaseDN'} = 'dc=domäne,dc=local';
    $Self->{'AuthSyncModule::LDAP::UID'} = 'sAMAccountName';
    $Self->{'AuthSyncModule::LDAP::SearchUserDN'} = 'CN=OTRS_binduser,OU=Systemkonten,OU=IT,OU=Überordner,DC=domäne,DC=local';
    $Self->{'AuthSyncModule::LDAP::SearchUserPw'} = 'Passwort';
    $Self->{'AuthSyncModule::LDAP::AccessAttr'} = 'member';
    $Self->{'AuthSyncModule::LDAP::UserAttr'} = 'DN';

    $Self->{'AuthSyncModule::LDAP::UserSyncMap'} = {
        # DB -> LDAP
        UserFirstname => 'givenName',
        UserLastname  => 'sn',
        UserEmail     => 'mail',
    };

    # AuthSyncModule::LDAP::UserSyncInitialGroups
    # (sync following group with rw permission after initial create of first agent
    # login)
    $Self->{'AuthSyncModule::LDAP::UserSyncInitialGroups'} = [
        'users',
    ];
        # AuthSyncModule::LDAP::UserSyncGroupsDefinition
    # (If "LDAP" was selected for AuthModule and you want to sync LDAP
    # groups to otrs groups, define the following.)
    $Self->{'AuthSyncModule::LDAP::UserSyncGroupsDefinition'} = {
        # ldap group
        'CN=OTRS_Admins,OU=Ordner,OU=Gruppen,OU=Überordner,DC=domäne,DC=local' => {
            # otrs group
            'admin' => {
                # permission
                rw => 1,
                ro => 1,
            },
        },
        'CN=OTRS_User,OU=Ordner2,OU=Gruppen,OU=Überordner,DC=domäne,DC=local' => {
            'users' => {
                move_into => 1,
            },
        }
    };

    # ---------------------------------------------------- #
    # ---------------------------------------------------- #
    #                                                      #
    # LDAP Anbindung für Customer                          #
    #                                                      #
    # ---------------------------------------------------- #
    # ---------------------------------------------------- #


$Self->{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::LDAP';
$Self->{'Customer::AuthModule::LDAP::Host'} = 'Servername.domäne.local';
$Self->{'Customer::AuthModule::LDAP::BaseDN'} = 'dc=domäne,dc=local';
$Self->{'Customer::AuthModule::LDAP::UID'} = 'sAMAccountName';
# The following is valid but would only be necessary if the
# anonymous user do NOT have permission to read from the LDAP tree
$Self->{'Customer::AuthModule::LDAP::SearchUserDN'} = 'CN=OTRS_binduser,OU=Systemkonten,OU=IT,OU=Überordner,DC=domäne,DC=local';
$Self->{'Customer::AuthModule::LDAP::SearchUserPw'} = 'Passwort';
#
# LDAP/AD Backend
#
$Self->{CustomerUser1} = {
   Name => 'XYZ Inc. Active Directory or LDAP',
   Module => 'Kernel::System::CustomerUser::LDAP',
   Params => {
          Host => 'Servername.domäne.local',
          BaseDN => 'Ordner-der-User,OU=Überordner,DC=domäne,DC=local',
          SSCOPE => 'sub',
          UserDN =>'CN=OTRS_binduser,OU=Systemkonten,OU=IT,OU=Überordner,DC=domäne,DC=local',
          UserPw => 'Passwort',
   },
   # customer unique id
   CustomerKey => 'sAMAccountName',
   CustomerID => 'mail',
   CustomerUserListFields => ['sAMAccountName', 'cn', 'mail'],
   CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail'],
   CustomerUserSearchPrefix => '',
   CustomerUserSearchSuffix => '*',
   CustomerUserSearchListLimit => 250,
   CustomerUserPostMasterSearchFields => ['mail'],
   CustomerUserNameFields => ['givenname', 'sn'],
   Map => [
          # note: Login, Email and CustomerID needed!
          # var, frontend, storage, shown, required, storage-type
          #[ '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' ],
          #[ 'UserAddress', 'Address', 'postaladdress', 1, 0, 'var' ],
          #[ 'UserComment', 'Comment', 'description', 1, 0, 'var' ],
   ],
};

    # ---------------------------------------------------- #
    # ---------------------------------------------------- #
    #                                                      #
    # Ende LDAP Anbindung                                  #
    #                                                      #
    # ---------------------------------------------------- #
    # ---------------------------------------------------- #
Hierbei müssen die OU Einträge zu eurem AD passen. Dabei habe ich erst am Schluss gemerkt, dass es in umgekehrter Reihenfolge steht. Als Bsp.:
'domäne.local -> Überordner -> Ordner-der-User' sieht dann so aus
'Ordner-der-User,OU=Überordner,DC=domäne,DC=local'
oder
'domäne.local -> Überordner -> IT -> Systemkonten' sieht dann so aus (Hierbei ist mein User, der das AD durchsucht "OTRS_binduser") 'CN=OTRS_binduser,OU=Systemkonten,OU=IT,OU=Überordner,DC=domäne,DC=local'

In meinem Fall habe ich einen Agent/Admin, der in der Gruppe OTRS_Agents und OTRS Admins ist. Meine Customer sind quasi meine User, die im AD im Ordner-der-User liegen
spinnnor
Znuny newbie
Posts: 1
Joined: 15 Dec 2016, 08:42
Znuny Version: OTRS5
Real Name: Sebastian
Company: Vignold

Re: LDAP OTRS 6

Post by spinnnor »

Hi,

ich bin noch nicht so fit in OTRS.

Wir benutzen OTRS C 6.0.9 auf eine Centos VM, könntest du mir noch sagen in welcher Config das eingetragen werden muss?

Danke


VG
jojo
Znuny guru
Posts: 15019
Joined: 26 Jan 2007, 14:50
Znuny Version: Git Master
Contact:

Re: LDAP OTRS 6

Post by jojo »

in der Config.pm.

Du solltest upgraden, die 6.0.9 hat eine große Sicherheitslücke
"Production": OTRS™ 8, OTRS™ 7, STORM powered by OTRS
"Testing": ((OTRS Community Edition)) and git Master

Never change Defaults.pm! :: Blog
Professional Services:: http://www.otrs.com :: enjoy@otrs.com
Post Reply