OTRS 3.0 Active Directory für Customer

Hilfe zu Znuny Problemen aller Art
Locked
globalrain
Znuny newbie
Posts: 2
Joined: 26 Nov 2010, 14:43
Znuny Version: 3.0

OTRS 3.0 Active Directory für Customer

Post by globalrain »

Hallo Zusammen
Ich versuche gerade OTRS 3.0.2 unter Windows zu installieren. Folgendes funktioniert
- Alle User der Gruppe IT sind Agents und können sich mit ihrem Windowslogin anmelden
- Alle Übrigen User sind Customer

Ich möchte nun, dass sich die Customer auf der Seite Customer.pl mit ihren AD Daten anmelden können. Leider erhalte ich dabei immer folgende Meldung: "Anmeldung fehlgeschlagen! Benutzername oder Passwort wurden falsch eingegeben." Im Log steht dann folgendes:
[Thu Dec 2 16:54:24 2010][Error][Kernel::System::CustomerAuth::LDAP::Auth][280] Search failed! base='CN=Domänen-Benutzer,CN=Users,DC=domain,DC=local', filter='(member=CN=user1,OU=Verkauf,OU=1 Benutzer,DC=domain,DC=local)', Success
Was passt hier nicht?

Mein Config.pm sieht wie folgt aus:

Code: Select all

    # ---------------------------------------------------- #
    # Agents  Active Directory Login                       #
    # ---------------------------------------------------- #
    $Self->{'AuthModule'} = 'Kernel::System::Auth::LDAP';
    $Self->{'AuthModule::LDAP::Host'} = 'dc2.domain.local';
    $Self->{'AuthModule::LDAP::BaseDN'} = 'dc=domain,dc=local';
    $Self->{'AuthModule::LDAP::UID'} = 'sAMAccountName';

    $Self->{'AuthModule::LDAP::GroupDN'} = 'cn=IT,ou=Gruppen,dc=domain,dc=local';
    $Self->{'AuthModule::LDAP::AccessAttr'} = 'member';
    $Self->{'AuthModule::LDAP::UserAttr'} = 'DN';
 
    $Self->{'AuthModule::LDAP::SearchUserDN'} = 'otrs-support@domain.local';
    $Self->{'AuthModule::LDAP::SearchUserPw'} = 'password';
 
    $Self->{'AuthModule::LDAP::AlwaysFilter'} = '';
 
    $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'} = 'dc2.domain.local';
    $Self->{'AuthSyncModule::LDAP::BaseDN'} = 'dc=domain, dc=local';
    $Self->{'AuthSyncModule::LDAP::UID'} = 'sAMAccountName';
    $Self->{'AuthSyncModule::LDAP::SearchUserDN'} = 'otrs-support@domain.local';
    $Self->{'AuthSyncModule::LDAP::SearchUserPw'} = 'password';
 
    $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'} = [
        'admin',
    ];



    # ---------------------------------------------------- #
    # Customers Active Directory Login                     #
    # ---------------------------------------------------- #
    $Self->{CustomerUser} = {
        Name => 'Active Directory',
        Module => 'Kernel::System::CustomerUser::LDAP',
        Params => {
            # ldap host
            Host => 'dc2.domain.local',
            # ldap base dn
            BaseDN => 'dc=domain, dc=local',
            # search scope (one|sub)
            SSCOPE => 'sub',
            # The following is valid but would only be necessary if the
            # anonymous user does NOT have permission to read from the LDAP tree
            UserDN => 'otrs-support@domain.local',
            UserPw => 'support',
            # in case you want to add always one filter to each ldap query, use
            # this option. e. g. AlwaysFilter => '(mail=*)' or AlwaysFilter => '(objectclass=user)'
            AlwaysFilter => '(objectCategory=Person)',
            # if your frontend is e. g. iso-8859-1 and the charset of your
            # ldap server is utf-8, use these options.
    #            SourceCharset => 'utf-8',
    #            DestCharset => 'iso-8859-1',
                # if both your frontend and your LDAP are unicode, use this:
                SourceCharset => 'utf-8',
                DestCharset   => 'utf-8',
                # Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
                Params => {
                    port => 389,
                    timeout => 120,
                    async => 0,
                    version => 3,
                },
        },
        # customer unique id
        CustomerKey => 'sAMAccountName',
        # customer #
        CustomerID => 'mail',
        CustomerUserListFields => ['sAMAccountName', 'cn', 'mail'],
        CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail'],
        CustomerUserSearchPrefix => '',
        CustomerUserSearchSuffix => '*',
        CustomerUserSearchListLimit => 250,
        CustomerUserPostMasterSearchFields => ['mail'],
        CustomerUserNameFields => ['givenname', 'sn'],
        # show not own tickets in customer panel, CompanyTickets
        CustomerUserExcludePrimaryCustomerID => 0,
        # add an ldap filter for valid users (expert setting)
    #    CustomerUserValidFilter => '(!(description=locked))',
        # administrator can't change customer preferences
        AdminSetPreferences => 0,
    #    # cache time to live in sec. - cache any database queries
    #    CacheTTL => 0,
        Map => [
            # note: Login, Email and CustomerID are mandatory!
            # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
            [ 'UserSalutation', 'Title',      'title',           1, 0, 'var', '', 0 ],
            [ 'UserFirstname',  'Firstname',  'givenname',       1, 1, 'var', '', 0 ],
            [ 'UserLastname',   'Lastname',   'sn',              1, 1, 'var', '', 0 ],
            [ 'UserLogin',      'Username',   'sAMAccountName',  1, 1, 'var', '', 0 ],
            [ 'UserEmail',      'Email',      'mail',            1, 1, 'var', '', 0 ],
            [ 'UserCustomerID', 'CustomerID', 'mail',            0, 1, 'var', '', 0 ],
    #        [ 'UserCustomerIDs', 'CustomerIDs', 'second_customer_ids', 1, 0, 'var', '', 0 ],
            [ 'UserPhone',      'Phone',      'telephonenumber', 1, 0, 'var', '', 0 ],
            [ 'UserAddress',    'Address',    'postaladdress',   1, 0, 'var', '', 0 ],
            [ 'UserComment',    'Comment',    'description',     1, 0, 'var', '', 0 ],
        ],
    };
    




    # This is an example configuration for an LDAP auth. backend.
    # (make sure Net::LDAP is installed!)
    $Self->{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::LDAP';
    $Self->{'Customer::AuthModule::LDAP::Host'} = 'dc2.domain.local';
    $Self->{'Customer::AuthModule::LDAP::BaseDN'} = 'dc=domain,dc=local';
    $Self->{'Customer::AuthModule::LDAP::UID'} = 'sAMAccountName';

    # Check if the user is allowed to auth in a posixGroup
    # (e. g. user needs to be in a group xyz to use otrs)
    $Self->{'Customer::AuthModule::LDAP::GroupDN'} = 'CN=Domänen-Benutzer,CN=Users,DC=domain,DC=local';
    $Self->{'Customer::AuthModule::LDAP::AccessAttr'} = 'member';
    # for ldap posixGroups objectclass (just uid)
    #$Self->{'Customer::AuthModule::LDAP::UserAttr'} = 'uid';
    # for non ldap posixGroups objectclass (full user dn)
    $Self->{'Customer::AuthModule::LDAP::UserAttr'} = 'DN';

    # The following is valid but would only be necessary if the
    # anonymous user does NOT have permission to read from the LDAP tree
    $Self->{'Customer::AuthModule::LDAP::SearchUserDN'} = 'otrssupport@domain.local';
    $Self->{'Customer::AuthModule::LDAP::SearchUserPw'} = 'support';

    # 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->{'Customer::AuthModule::LDAP::AlwaysFilter'} = '(objectclass=user)';

    # in case you want to add a suffix to each customer login name, then
    # you can use this option. e. g. user just want to use user but
    # in your ldap directory exists user@domain.
    #$Self->{'Customer::AuthModule::LDAP::UserSuffix'} = '@domain.com';

    # Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
    $Self->{'Customer::AuthModule::LDAP::Params'} = {
        port => 389,
        timeout => 120,
        async => 0,
        version => 3,
    };
Danke für eure Hilfe!
globalrain
Znuny newbie
Posts: 2
Joined: 26 Nov 2010, 14:43
Znuny Version: 3.0

Re: OTRS 3.0 Active Directory für Customer

Post by globalrain »

So ich weiss jetzt ungefähr wo das Problem liegt, aber nicht wie ich es beheben kann.

Ist der User Max ein Mitglied der Gruppe Verkauf, so funktioniert das einloggen. Ist Max jedoch ein Mitglied der Gruppe Verkauf Technik und die ist wiederum ein Mitglied der Gruppe Verkauf, so funktioniert es nicht.

Kennt ihr das Problem und könnt mir evt. helfen?
jojo
Znuny guru
Posts: 15020
Joined: 26 Jan 2007, 14:50
Znuny Version: Git Master
Contact:

Re: OTRS 3.0 Active Directory für Customer

Post by jojo »

Gruppen in Gruppen sind nicht möglich. Mach am besten eine Gruppe OTRS User in die die User kommen
"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
Locked