altes und nach wie vor leidiges Thema: Backends für die Authentifizierung von Agenten und Kunden.
ich möchte Agenten sowie Kunden aus einem ActiveDirectory (Server 2003) authentifizieren als auch synchronisieren. Derzeit funktioniert die Anmeldung der Agenten am OTRS-Frontend (index.pl) sowie die Anmeldung der Kunden am OTRS (index.pl) und am Kunden-Frontend (customer.pl). Dies wäre schon mein erstes Problem. Ich möchte das die Agenten sich nur am normalen Frontend anmelden können und die Kunden nur am Kunden-Frontend (customer.pl). Momentan können sich die Kunden auch am Agenten-Frontend anmelden. Die Agenten hingegen werden zudem erst nach einmaligem Anmelden in der Datenbank angezeigt. Dies ist für mich problematisch, da ich die Zuweisung der Agenten nicht von Angfang an machen kann.
Meine Kunden liegen alle in einer gesonderten OU, z.B. "Kunden",
meine Agenten liegen alle in einer OU, z.B. "Agenten".
Zusätzlich habe ich je eine Gruppe im AD angelegt:
OTRS_Agenten und
OTRS_Customers.
Ich hoffe ich habe mich deutlich ausgedrückt und mein Problem verständlich dargestellt, falls noch wichtige Infos fehlen sollten, meldet euch.
Zum besseren Verständis noch meine anonymisierte Config.pm:
Code: Select all
# ---------------------------------------------------- #
# Customers/Kunden aus LDAP importieren #
# ---------------------------------------------------- #
# $Self->{CustomerGroupSupport} = 1;
$Self->{CustomerUser} = {
Module => 'Kernel::System::CustomerUser::LDAP',
Params => {
Host => 'DomänenController',
BaseDN => 'OU=Kunden,DC=DOMÄNE,DC=LOC',
SSCOPE => 'one',
UserDN => 'user@DOMÄNE.LOC',
UserPw => 'passwort',
},
CustomerKey => 'sAMAccountName',
CustomerID => 'mail',
CustomerUserListFields => ['sAMAccountName', 'cn', 'mail'],
CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail'],
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', 'Info1', 'description', 1, 0, 'var' ],
[ 'UserInfo', 'Info2', 'physicalDeliveryOfficeName', 1, 1, 'var' ],
[ 'UserDepartment', 'Abteilung', 'department', 1, 1, 'var' ],
[ 'UserTitle', 'Position', 'title', 1, 1, 'var' ],
[ 'UserManager', 'Vorgesetzter', 'manager', 1, 1, 'var' ],
],
};
# ---------------------------------------------------- #
# Authentifizierung der Agenten via AD/LDAP #
# ---------------------------------------------------- #
$Self->{'AuthModule1'} = 'Kernel::System::Auth::LDAP';
$Self->{'AuthModule::LDAP::Host1'} = 'DomänenController';
$Self->{'AuthModule::LDAP::BaseDN1'} = 'DC=DOMÄNE,DC=LOC';
$Self->{'AuthModule::LDAP::UID1'} = 'sAMAccountName';
# LDAP Bind User
# -------------------------------------------------------- #
$Self->{'AuthModule::LDAP::SearchUserDN1'} = 'user@DOMÄNE.LOC';
$Self->{'AuthModule::LDAP::SearchUserPw1'} = 'passwort';
#-----------------------------------------------------#
# Synchronistation der Agenten aus LDAP mit OTRS DB #
#-----------------------------------------------------#
$Self->{'AuthSyncModule1'} = 'Kernel::System::Auth::Sync::LDAP';
$Self->{'AuthSyncModule::LDAP::Host1'} = 'DomänenController';
$Self->{'AuthSyncModule::LDAP::BaseDN1'} = 'dc=DOMÄNE,dc=LOC';
$Self->{'AuthSyncModule::LDAP::UID1'} = 'sAMAccountName';
$Self->{'AuthSyncModule::LDAP::SearchUserDN1'} = 'user@DOMÄNE.LOC';
$Self->{'AuthSyncModule::LDAP::SearchUserPw1'} = 'passwort';
$Self->{'AuthSyncModule::LDAP::AlwaysFilter1'} = '';
$Self->{'AuthSyncModule::LDAP::UserSyncMap1'} = {
'UserEmail' => 'mail',
'UserFirstname' => 'givenName',
'UserLastname' => 'sn',
'UserLogin' => 'sAMAccountName'
};
$Self->{'AuthModule::LDAP::Die'} = 1;
##----------------------------------------------------------#
## LDAP Anbindung fuer die Kunden #
##----------------------------------------------------------#
#-----------------------------------------------------------#
# Auth Kunden via LDAP Active Directory DOMÄNE.LOC #
#-----------------------------------------------------------#
# LDAP Customer #
$Self->{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::LDAP';
$Self->{'Customer::AuthModule::LDAP::Host'} = 'DomänenController';
$Self->{'Customer::AuthModule::LDAP::BaseDN'} = 'OU=Kunden,DC=DOMÄNE,DC=LOC';
$Self->{'Customer::AuthModule::LDAP::UID'} = 'sAMAccountName';
# $Self->{'Customer::AuthModule::LDAP::GroupDN'} = 'CN=OTRS_CUSTOMERS,OU=Gruppen,DC=DOMÄNE,dc=LOC';
# $Self->{'Customer::AuthModule::LDAP::AccessAttr'} = 'member';
$Self->{'Customer::AuthModule::LDAP::SearchUserDN'} = 'user@DOMÄNE.LOC';
$Self->{'Customer::AuthModule::LDAP::SearchUserPw'} = 'passwort';
$Self->{'Customer::AuthModule::LDAP::Params'} = {
port => 389,
timeout => 120,
async => 0,
version => 3,
};
#----------------------------------------------------------#
# UserSyncLDAPMap Customer/Kunden #
#----------------------------------------------------------#
## Sync macht man nur fuer Agenten. Die Customer werden aktiv aus dem LDAP gelesen.
## $Self->{'UserSyncLDAPMap'} = {
## 'UserEmail' => 'mail',
## 'UserFirstname' => 'givenName',
## 'UserLastname' => 'sn',
## 'UserLogin' => 'sAMAccountName'
## };
$Self->{CustomerUser1} = {
Name => 'Unternehmensbezeichnung',
Module => 'Kernel::System::CustomerUser::LDAP',
Params => {
Host => 'DomänenController',
BaseDN => 'OU=Kunden,dc=DOMÄNE,dc=LOC',
SSCOPE => 'one',
UserDN => 'user@DOMÄNE.LOC',
UserPw => 'passwort',
},
CustomerKey => 'sAMAccountName',
CustomerID => 'mail',
CustomerUserListFields => ['sAMAccountName', 'cn', 'mail'],
CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail'],
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' ],
[ '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' ],
],
};
# ---------------------------------------------------- #