ich möchte eine MS-basierte HelpDesk-Softwarelösung durch Znuny ablösen. Mit OTRS und Znuny habe ich bisher noch keine Erfahrungen.
Ich habe mir ein Testsystem auf Ubuntu Basis eingerichtet. Znuny in der aktuellen Version 7.0.15 installiert. Grundlage dafür war die Znuny-Dokumentation.
Ich habe eine Active Directory Anbindung für das Anmelden der Agenten mit entsprechenden Gruppen-Mapping AD-Gruppen auf Znuny-Gruppen konfiguriert. Das funktioniert Problemlos.
Als zusätzliches Daten-Backened habe ich das AD angebunden. Bei der Ticketerstellung kann ich unter Kundenbenutzer die AD-Benutzer auswählen.
Unter Kundenbenutzer-Verwaltung erscheinen allerdings leere Einträge für die Benutzer: Die Suche funktioniert, es werden jedoch wieder "leere" Einträge geliefert: Dieses Problem ist jedoch sekundärer Natur.
Mein Hauptproblem ist die Anmeldung im Customer-Portal.
Benutzer können sich erfolgreich authentifizieren, werden jedoch nicht angemeldet. Es erscheint folgende Fehlermeldung:
Authentifizierung erfolgreich, aber im Kunden Backend wurde kein Kunden Eintrag gefunden. Bitte kontaktieren Sie Ihren Administrator.
Für die Zuordnung der Kundenbenutzer zu Kunden habe ich das AD-Attribut "department" gewählt, hier meine Konfiguration:
Code: Select all
# Data AD-Backend
$Self->{CustomerUser1} = {
Name => 'LDAP Backend',
Module => 'Kernel::System::CustomerUser::LDAP',
Params => {
Host => 'xxx',
BaseDN => 'xxx',
SSCOPE => 'sub',
UserDN => 'xxx',
UserPw => 'xxx',
AlwaysFilter => '(objectclass=user)',
Die => 0,
Params => {
port => 389,
timeout => 120,
async => 0,
version => 3,
},
},
CustomerKey => 'sAMAccountName',
CustomerID => 'department',
CustomerUserListFields => ['cn', 'mail'],
CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail'],
CustomerUserSearchPrefix => '',
CustomerUserSearchSuffix => '*',
CustomerUserSearchListLimit => 1000,
CustomerUserPostMasterSearchFields => ['mail'],
CustomerUserNameFields => ['givenname', 'sn'],
CustomerUserNameFieldsJoin => '',
CustomerUserExcludePrimaryCustomerID => 0,
AdminSetPreferences => 0,
CacheTTL => 0,
CustomerCompanySupport => 1,
Map => [
[ 'UserTitle', Translatable('Title or salutation'), 'title', 1, 0, 'var', '', 1, undef, undef ],
[ 'UserFirstname', Translatable('Firstname'), 'givenname', 1, 1, 'var', '', 1, undef, undef ],
[ 'UserLastname', Translatable('Lastname'), 'sn', 1, 1, 'var', '', 1, undef, undef ],
[ 'UserLogin', Translatable('Username'), 'sAMAcoountName', 1, 1, 'var', '', 1, undef, undef ],
[ 'UserEmail', Translatable('Email'), 'mail', 1, 1, 'var', '', 1, undef, undef ],
[ 'UserCustomerID', Translatable('CustomerID'), 'department', 0, 1, 'var', '', 1, undef, undef ],
[ 'UserPhone', Translatable('Phone'), 'telephonenumber', 1, 0, 'var', '', 1, undef, undef ],
[ 'UserAddress', Translatable('Address'), 'postaladdress', 1, 0, 'var', '', 1, undef, undef ],
[ 'UserComment', Translatable('Comment'), 'description', 1, 0, 'var', '', 1, undef, undef ],
],
};
# LDAP Auth Agents
$Self->{'AuthModule1'} = 'Kernel::System::Auth::LDAP';
$Self->{'AuthModule::LDAP::Host1'} = 'xxx';
$Self->{'AuthModule::LDAP::BaseDN1'} = 'xxx';
$Self->{'AuthModule::LDAP::UID1'} = 'sAMAccountName';
$Self->{'AuthModule::LDAP::GroupDN1'} = 'xxx';
$Self->{'AuthModule::LDAP::AccessAttr1'} = 'member';
$Self->{'AuthModule::LDAP::UserAttr1'} = 'DN';
$Self->{'AuthModule::LDAP::SearchUserDN1'} = 'xxx';
$Self->{'AuthModule::LDAP::SearchUserPw1'} = 'xxx';
$Self->{'AuthModule::LDAP::Params1'} = {
port => 389,
timeout => 120,
async => 0,
version => 3,
};
$Self->{'AuthModule::LDAP::UserLowerCase1'} = 1;
# LDAP Auth Sync Agents
$Self->{'AuthSyncModule1'} = 'Kernel::System::Auth::Sync::LDAP';
$Self->{'AuthSyncModule::LDAP::Host1'} = 'xxx';
$Self->{'AuthSyncModule::LDAP::BaseDN1'} = 'xxx';
$Self->{'AuthSyncModule::LDAP::UID1'} = 'sAMAccountName';
$Self->{'AuthSyncModule::LDAP::SearchUserDN1'} = 'xxx';
$Self->{'AuthSyncModule::LDAP::SearchUserPw1'} = 'xxx';
$Self->{'AuthSyncModule::LDAP::UserSyncMap1'} = {
# DB -> LDAP
UserFirstname => 'givenName',
UserLastname => 'sn',
UserEmail => 'mail',
};
$Self->{'AuthSyncModule::LDAP::AccessAttr1'} = 'member';
$Self->{'AuthSyncModule::LDAP::UserAttr1'} = 'DN';
$Self->{'AuthSyncModule::LDAP::NestedGroupSearch1'} = 1;
$Self->{'AuthSyncModule::LDAP::UserSyncGroupsDefinition1'} = {
# ldap group
'xxx' => {
# znunys group
'admin' => {
# permission
rw => 1,
ro => 1,
},
},
# ldap group
'xxx' => {
# znunys group
'xxx' => {
# permission
rw => 1,
ro => 1,
},
},
};
# LDAP Auth Customers
$Self->{'Customer::AuthModule1'} = 'Kernel::System::CustomerAuth::LDAP';
$Self->{'Customer::AuthModule::LDAP::Host1'} = 'xxx';
$Self->{'Customer::AuthModule::LDAP::BaseDN1'} = 'xxx';
$Self->{'Customer::AuthModule::LDAP::UID1'} = 'sAMAccountName';
$Self->{'Customer::AuthModule::LDAP::SearchUserDN1'} = 'xxx';
$Self->{'Customer::AuthModule::LDAP::SearchUserPw1'} = 'xxx';
$Self->{'Customer::AuthModule::LDAP::AlwaysFilter1'} = '';
$Self->{'Customer::AuthModule::LDAP::Params1'} = {
port => 389,
timeout => 120,
async => 0,
version => 3,
};
Vielleicht hat jemand von Euch dazu einen Lösungsvorschlag oder -Ansatz.
Grüße aus Hannover,
s3bag