ich habe erneut eine Frage.
Zur Zeit arbeite ich an der Anbindung von OTRS an das LDAP.
Die Agenten-Authentifizierung über LDAP funktioniert einwandfrei. Und dies funktioniert auch so, wie wir es uns in unserem Unternehmen wünschen. Das ein Nutzer sich an das System mit seinem LDAP Account anmeldet und dieser automatisch ausgelesen wird ohne das er vorher in der Datenbank oder ähnliches vorhanden sein muss.
Soweit so gut.
Nun würde wir auch gern die Kundenseite an LDAP anbinden. Leider funktioniert dies nicht. In der Übersicht Kunden (auf der Agenten Seite, steht das LDAP verwendet wird, die Namen werde nicht angezeigt)
Sobald ich nun auf die Kundenseite gehe, möchte ich mich mit dem LDAP Benutzernamen und Passwort anmelden und bekomme den Fehler, dass der Benutzername oder das Passwort falsch ist.
Das heißt ja aber schon mal, dass LDAP erkannt wird, sonst würde dort ja stehen, dass das System den Nutzer gar nicht kennt.
Nun ist meine Frage, wie ich das hinbekomme das sich der Nutzer über LDAP anmelden kann, ohne das er vorher in einer Datenbank angelegt werden muss...
PS: Im Code ist die CustomerID die Kundennummer, richtig? Wir haben keine Kundennummer als soclhe und würden dort gern eine vom LDAP generierte Nummer verwenden, ist das möglich? Wenn ja wo muss ich diese im Code überall eintragen?
Vielen Dank
Der Code der Kundenanbindung:
Code: Select all
# --------------------------------------------------- #
# customer authentication settings #
# LDAP Customer #
# --------------------------------------------------- #
# CustomerUser
# (customer ldap backend and settings)
$Self->{CustomerUser} = {
Name => 'LDAP Data Source',
Module => 'Kernel::System::CustomerUser::LDAP',
Params => {
# ldap host
Host => $LDAP_Host,
# ldap base dn
BaseDN => $LDAP_BaseDN,
# 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 => $LDAP_SearchUserDN,
UserPw => $LDAP_SearchUserPw,
# 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 => '(uid=*)',
# if both your frontend and your LDAP are unicode, use this:
# SourceCharset => 'utf-8',
# DestCharset => 'utf-8',
# if your frontend is unicode and the charset of your
# ldap server is iso-8859-1, use these options.
# SourceCharset => 'iso-8859-1',
# DestCharset => 'utf-8',
# Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
Params => {
port => 398,
timeout => 120,
async => 0,
version => 3,
},
},
# customer unique id
CustomerKey => 'uid',
# customer #
CustomerID => 'uidNumber',
CustomerUserListFields => ['cn', 'mail'],
CustomerUserSearchFields => ['uid', '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
[ 'title', 'Title', 'title', 1, 0, 'var', '', 0 ],
[ 'givenName', 'Firstname', 'givenname', 1, 1, 'var', '', 0 ],
[ 'sn', 'Lastname', 'sn', 1, 1, 'var', '', 0 ],
[ 'cn', 'Username', 'uid', 1, 1, 'var', '', 0 ],
[ 'mail', 'Email', 'mail', 1, 1, 'var', '', 0 ],
[ 'uidNumber', 'CustomerID', 'uidNumber', 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 configuration for an LDAP auth. backend.
# (make sure Net::LDAP is installed!)
$Self->{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::LDAP';
$Self->{'Customer::AuthModule::LDAP::Host'} = $LDAP_Host;
$Self->{'Customer::AuthModule::LDAP::BaseDN'} = $LDAP_BaseDN;
$Self->{'Customer::AuthModule::LDAP::UID'} = $LDAP_UID;
# 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=otrsallow,ou=posixGroups,dc=example,dc=com';
# $Self->{'Customer::AuthModule::LDAP::AccessAttr'} = 'memberUid';
# 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'} = $LDAP_SearchUserDN;
#$Self->{'Customer::AuthModule::LDAP::SearchUserPw'} = '';
$Self->{'Customer::AuthModule::LDAP::SearchUserPw'} = $LDAP_SearchPw;
# 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'} = '(uidNumber=*)';
# 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 => 398,
timeout => 120,
async => 0,
version => 3,
};