OTRS 4.0.3 und ActiveDirectory Authentifizierung

Hilfe zu Znuny Problemen aller Art
Locked
stephanwild
Znuny newbie
Posts: 8
Joined: 08 Jan 2015, 08:44
Znuny Version: 4.0.3

OTRS 4.0.3 und ActiveDirectory Authentifizierung

Post by stephanwild »

Guten morgen zusammen,
ich bin gerade dabei OTRS zu evaluieren, und würde gerne gegen ADS authentifizieren. Alle Anleitungen, die ich gefunden habe sind für die Version 3.x geschrieben, und das Handbuch verrät mir leider auch nicht wirklich viel zu diesem Thema.
Was ich allerdings gelesen habe, ist, dass man anscheinend nicht mehr direkt die "Config.pm" bearbeiten soll sondern über das Admininterface. Da habe ich jetzt in der Sysconfig Framework -> Frontend::Customer::Auth die Parameter für LDAP gesetzt (siehe Configdatei). Allerdings kann ich mich nicht am Frontend anmelden, und die nächste Frage die aufkommt, wie funktioniert das dann mit den Agents?

OTRS läuft auf einem Cents 6.6 x64 und laut "otrsCheckModules.pl" sind auch alle Perlmodule installiert.

Ich hoffe, dass mir jemand helfen kann.

Vielen Dank

Code: Select all

cat Kernel/Config/Files/ZZZAuto.pm
# OTRS config file (automatically generated)
# VERSION:1.1
package Kernel::Config::Files::ZZZAuto;
use strict;
use warnings;
no warnings 'redefine';
use utf8;
sub Load {
    my ($File, $Self) = @_;
$Self->{'Frontend::Module'}->{'AdminGenericInterfaceMappingSimple'} =  {
  'Description' => 'Admin',
  'Group' => [
    'admin'
  ],
  'Loader' => {
    'CSS' => [
      'Core.Agent.Admin.GenericInterface.css'
    ],
    'JavaScript' => [
      'Core.Agent.Admin.GenericInterfaceMappingSimple.js'
    ]
  },
  'Title' => 'GenericInterface Webservice Mapping GUI'
};
$Self->{'Frontend::Module'}->{'AdminGenericInterfaceDebugger'} =  {
  'Description' => 'Admin',
  'Group' => [
    'admin'
  ],
  'Loader' => {
    'CSS' => [
      'Core.Agent.Admin.GenericInterface.css'
    ],
    'JavaScript' => [
      'Core.Agent.Admin.GenericInterfaceDebugger.js'
    ]
  },
  'Title' => 'GenericInterface Debugger GUI'
};
$Self->{'Customer::AuthModule::LDAP::Params'} =  {
  'async' => '0',
  'port' => '389',
  'timeout' => '120',
  'version' => '3'
};
$Self->{'Customer::AuthModule::LDAP::UserSuffix'} =  '@mydomain.local';
$Self->{'Customer::AuthModule::LDAP::AlwaysFilter'} =  '(!objectclass=computer)';
$Self->{'Customer::AuthModule::LDAP::SearchUserPw'} =  'mypassword';
$Self->{'Customer::AuthModule::LDAP::SearchUserDN'} =  'CN=searchuser,CN=Users,DC=mydomain,DC=local';
$Self->{'Customer::AuthModule::LDAP::UserAttr'} =  'DN';
$Self->{'Customer::AuthModule::LDAP::UID'} =  'sAMAccountName';
$Self->{'Customer::AuthModule::LDAP::BaseDN'} =  'dc=mydomain,dc=local';
$Self->{'Customer::AuthModule::LDAP::Host'} =  'ad.mydomain.local';
$Self->{'Customer::AuthModule'} =  'Kernel::System::CustomerAuth::LDAP';
delete $Self->{'PreferencesGroups'}->{'SpellDict'};
$Self->{'SendmailModule::Port'} =  '25';
$Self->{'SendmailModule::Host'} =  'mail.mydomain.local';
$Self->{'SendmailModule'} =  'Kernel::System::Email::SMTP';
$Self->{'DefaultLanguage'} =  'de';
$Self->{'Organization'} =  'My Company';
$Self->{'AdminEmail'} =  'administrator@mydomain.local';
$Self->{'FQDN'} =  'otrs.mydomain.local';
$Self->{'SystemID'} =  '71';
$Self->{'SecureMode'} =  1;
}
1;
stephanwild
Znuny newbie
Posts: 8
Joined: 08 Jan 2015, 08:44
Znuny Version: 4.0.3

Re: OTRS 4.0.3 und ActiveDirectory Authentifizierung

Post by stephanwild »

Hallo,

ich bin ein Stück weitergekommen, es ist jetzt so, dass ich das Usersuffix rausgenommen habe, und den Searchuser mit dem "Principalname" angegeben habe. jetzt erhalte ich allerdings den Fehler, dass es keinen Customer zum User gibt.
Rooobaaat
Znuny wizard
Posts: 432
Joined: 11 Sep 2014, 16:28
Znuny Version: OTRS 5.0.x

Re: OTRS 4.0.3 und ActiveDirectory Authentifizierung

Post by Rooobaaat »

Pass das mal an deine Config an:
# (customer user ldap backend and settings)
$Self->{CustomerUser} = {
Name => 'LDAP Backend',
Module => 'Kernel::System::CustomerUser::LDAP',
Params => {
# ldap host
Host => 'bay.csuhayward.edu',
# ldap base dn
BaseDN => 'ou=seas,o=csuh',
# 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 => '',
UserPw => '',
# 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 => '',
# die if backend can't work, e. g. can't connect to server
Die => 0,
# 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 => 'uid',
# customer #
CustomerID => 'mail',
CustomerUserListFields => ['cn', 'mail'],
CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail'],
CustomerUserSearchPrefix => '',
CustomerUserSearchSuffix => '*',
CustomerUserSearchListLimit => 250,
CustomerUserPostMasterSearchFields => ['mail'],
CustomerUserNameFields => ['givenname', 'sn'],
# show now own tickets in customer panel, CompanyTickets
CustomerUserExcludePrimaryCustomerID => 0,
# add a ldap filter for valid users (expert setting)
# CustomerUserValidFilter => '(!(description=gesperrt))',
# admin can't change customer preferences
# AdminSetPreferences => 0,
# cache time to live in sec. - cache any ldap queries
CacheTTL => 0,
Map => [
# note: Login, Email and CustomerID needed!
# var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
[ 'UserTitle', '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.
# (take care that Net::LDAP is installed!)
$Self->{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::LDAP';
$Self->{'Customer::AuthModule::LDAP::Host'} = 'ldap.example.com';
$Self->{'Customer::AuthModule::LDAP::BaseDN'} = 'dc=example,dc=com';
$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=otrsallow,ou=posixGroups,dc=example,dc=com';
# 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 do NOT have permission to read from the LDAP tree
$Self->{'Customer::AuthModule::LDAP::SearchUserDN'} = '';
$Self->{'Customer::AuthModule::LDAP::SearchUserPw'} = '';


# 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,
};
My english is better than your german :P

"Produktiv": OTRS: 5.0.x, OTRS::ITSM 5.0.x
"Testing": OTRS 6 git
OS: Debian 8.0 (Jessie)
Apache2.4.10/MySQL 5.5.41
stephanwild
Znuny newbie
Posts: 8
Joined: 08 Jan 2015, 08:44
Znuny Version: 4.0.3

Re: OTRS 4.0.3 und ActiveDirectory Authentifizierung

Post by stephanwild »

Hallo Rooobaaat,

ich habe den Block in die Config.pm eingetragen, und angepasst an meine Domäne.
Zusätzlich habe ich noch folgende Zeilen erst original gelassen, dann noch angepasst, jedoch beide male mit der gleichen Fehlermeldung im 'messagelog' (siehe unten).

Code: Select all

# customer unique id
CustomerKey => 'company',
# customer #
CustomerID => 'department',
CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail', 'department', 'company'],
Map => [
# note: Login, Email and CustomerID needed!
# var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
[ 'UserTitle', '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', 'department', 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 ],
],
};

Code: Select all

Jan  8 10:31:40 otrs OTRS-CGI-71[7763]: [Notice][Kernel::System::CustomerAuth::LDAP::Auth] CustomerUser: user.name (CN=user name,OU=Anwender,DC=mydomain,DC=local) authentication ok (REMOTE_ADDR: 10.0.x.x).
Jan  8 10:31:40 otrs OTRS-CGI-71[7763]: [Error][Kernel::System::CustomerUser::SetPreferences][Line:570]: No such user 'user.name'!
Rooobaaat
Znuny wizard
Posts: 432
Joined: 11 Sep 2014, 16:28
Znuny Version: OTRS 5.0.x

Re: OTRS 4.0.3 und ActiveDirectory Authentifizierung

Post by Rooobaaat »

Steht doch alles drin... Wenn du das Customer::AuthModule nicht konfigurierst, dann kann es nicht klappen ;)
My english is better than your german :P

"Produktiv": OTRS: 5.0.x, OTRS::ITSM 5.0.x
"Testing": OTRS 6 git
OS: Debian 8.0 (Jessie)
Apache2.4.10/MySQL 5.5.41
stephanwild
Znuny newbie
Posts: 8
Joined: 08 Jan 2015, 08:44
Znuny Version: 4.0.3

Re: OTRS 4.0.3 und ActiveDirectory Authentifizierung

Post by stephanwild »

Sorry, aber ich glaub jetzt steh ich voll auf der Leitung...
Rooobaaat
Znuny wizard
Posts: 432
Joined: 11 Sep 2014, 16:28
Znuny Version: OTRS 5.0.x

Re: OTRS 4.0.3 und ActiveDirectory Authentifizierung

Post by Rooobaaat »

Kopiere dir meinen kompletten Quote, passe ihn an und dann sollte es funktionieren :)

Der Part CustomerUser ist für das Agenten-Frontend, der Part Customer::AuthModule für die Authentifizierung am Kunden-Frontend
My english is better than your german :P

"Produktiv": OTRS: 5.0.x, OTRS::ITSM 5.0.x
"Testing": OTRS 6 git
OS: Debian 8.0 (Jessie)
Apache2.4.10/MySQL 5.5.41
stephanwild
Znuny newbie
Posts: 8
Joined: 08 Jan 2015, 08:44
Znuny Version: 4.0.3

Re: OTRS 4.0.3 und ActiveDirectory Authentifizierung

Post by stephanwild »

Also ich habe jetzt nur die Domäneninfos, den Bind- / Searchuser angepasst, bekomme aber immer noch die gleiche Fehlermeldung und der Kundenbenutzer wird nicht mehr im Adminfrontend angezeigt.
Ich glaube, dass ich das Thema bis nach Mittag ruhen lasse, vielleicht bin ich bereits Betriebsblind...
stephanwild
Znuny newbie
Posts: 8
Joined: 08 Jan 2015, 08:44
Znuny Version: 4.0.3

Re: OTRS 4.0.3 und ActiveDirectory Authentifizierung

Post by stephanwild »

Hallo,
erstmal vielen Dank für die Hilfe. Die Anmeldung als Customer am Fronten funktioniert nun einwandfrei, aber jetzt sind weitere Phänomene aufgetaucht:
In den Kundenbenutzern tauchen alle Benutzer, Gruppen und Computer der Domäne auf, obwohl ich eigentlich nur Benutzer mit Emailadresse haben möchte. Dazu habe ich unter den Searchuser folgenden Alwaysfilter hinzugefügt:

Code: Select all

$Self->{'AuthModule::LDAP::AlwaysFiler'} = '(&(objectClass=user)(mail=*)';
Und ich kann im Kundeninformationscenter nicht nach "Kunden" suchen, sondern nur nach "Kundenbenutzern".

Vielen Dank nochmal und im Voraus
stephanwild
Znuny newbie
Posts: 8
Joined: 08 Jan 2015, 08:44
Znuny Version: 4.0.3

[Gelöst]Re: OTRS 4.0.3 und ActiveDirectory Authentifizierung

Post by stephanwild »

Ich habe die Lösung doch noch gefunden. Ich habe den Filter an die falsche Stelle geschrieben, und somit hat er nicht gegriffen. Parallel dazu wurde anscheinend auch die Kundensuche beeinträchtigt.

Sorry für den Beitrag.
Locked