So klappt die LDAP Anbindung

Hilfe zu Znuny Problemen aller Art
Locked
boris
Znuny wizard
Posts: 554
Joined: 22 Feb 2010, 18:27
Znuny Version: 3.0.4

So klappt die LDAP Anbindung

Post by boris »

Hi Forum,
nach langer langer Zeit habe ich endlich eine funktionierende LDAP Anbindung.
Damit eure Nerven geschont bleiben und ich euch diese Wahnsinn-Grenzerfahrung gerne ersparen würde hier meine Config.
Wir haben hier mehrere Domänen und eine Domäne für alle gemeinsamen Dienste. Der OTRS Server steht in der Domäne für gemeinsame Dienste, und fragt die AD Server in der jeweiligen Domäne ab.

Nicht vergessen die Agenten trotzdem in der Datenbank "von Hand" anzulegen. Nur die Agenten.

So hier nun der Codeschnipsel der mich bestimmt 5 Jahre meines Lebens gekostet hat :lol:
Hier im Beispiel ist die Anbindung an zwei Firmen. Bei uns sind es vier aber da ändert sich ja nichts ausser der Nummerierung.

Ach ja... das sind teilweise 2008er ADs und telweise 2003er.

Ob jetzt alles 100%ig richtig ist weiss ich nicht. Auf jeden Fall funktioniert es hier.
Verbesserungsvorschläge werden natürlich gerne angenommen.

Viel Spass damit

bowa
Produktiv:
OTRS 3.1.7
CentOS 6.3
Apache2/MySQL

Test:
OTRS 3.1.7
CentOS 6.3
Apache2/MySQL
boris
Znuny wizard
Posts: 554
Joined: 22 Feb 2010, 18:27
Znuny Version: 3.0.4

Re: So klappt die LDAP Anbindung

Post by boris »

so, da ich ein paar Fehler eingebaut hatte hier das Update:

http://forums.otrs.org/viewtopic.php?f=17&t=7558
Last edited by boris on 13 Jan 2011, 12:17, edited 2 times in total.
Produktiv:
OTRS 3.1.7
CentOS 6.3
Apache2/MySQL

Test:
OTRS 3.1.7
CentOS 6.3
Apache2/MySQL
rvaldovinos
Znuny newbie
Posts: 9
Joined: 04 Nov 2010, 13:20
Znuny Version: OTRS 2.4.9 ITSM 2.0.

Re: So klappt die LDAP Anbindung

Post by rvaldovinos »

Hallo Bowa

ich bin ziemlich neu in OTRS uns bin zum Glück uns nach viel googlen zu deiner Lösung gekommen um mein OTRS Customers in verschiedenen Domänen zu Ferfügung zu stellen. Ich habe es so gemacht wie du es zeigst nur mit zwei Domäne (sscc.gam und actuamillenium.grupo) Mit den Agenten hat es gerlappt, ich vermute weil ich diese direkt in OTRS eingetragen habe, aber mit den Customer nicht. Bei mir passiert, dass alle Customer in sscc.gam gesucht werden, obwohl sie zu actuamillenium.grupo gehören.

Das habe ich anhand von logs gemerkt:

Dec 22 17:36:05 b1httpd003 OTRS-CGI-01[6043]: [Notice][Kernel::System::CustomerAuth::LDAP::Auth] CustomerUser: actuam1 authentication failed, no LDAP entry found!BaseDN='dc=sscc,dc=gam', Filter='(sAMAccountName=actuam1)', (REMOTE_ADDR: 172.16.96.252).

Bei mir ist dieser Domän in Frontend::Customer::Auth definiert und kann es auch nicht löschen...

Würdest du mir ein Rat geben wie du es verhindert hast, d.h. , dass OTRS in verschienenen Domänen sucht, oder wo man so etwas konfigurieren kann?

Vielen Dank uns Entschuldigung für mein Deutsch, es ist nicht so gut wie vorher...
OTRS 2.4.7 ITSM 2.0.3
CentOS release 5.5 (Final) Mysql Ver 14.12
rvaldovinos
Znuny newbie
Posts: 9
Joined: 04 Nov 2010, 13:20
Znuny Version: OTRS 2.4.9 ITSM 2.0.

Re: So klappt die LDAP Anbindung

Post by rvaldovinos »

Oops

ich meine

Würdest du mir ein Rat geben wie du es verhindert hast, d.h. , dass OTRS nur in eine Domäne sucht, oder wo man so etwas konfigurieren kann?
OTRS 2.4.7 ITSM 2.0.3
CentOS release 5.5 (Final) Mysql Ver 14.12
boris
Znuny wizard
Posts: 554
Joined: 22 Feb 2010, 18:27
Znuny Version: 3.0.4

Re: So klappt die LDAP Anbindung

Post by boris »

Hi,

hast du die Module numeriert?

$Self->{'AuthModule1'} = 'Kernel::System::Auth::LDAP';
...
$Self->{'AuthModule2'} = 'Kernel::System::Auth::LDAP';

usw.

Ist so auf Anhieb das einzige was mir einfällt. Da hatte ich auch mal zahlendreher drin und dann das selbe Problem.
Produktiv:
OTRS 3.1.7
CentOS 6.3
Apache2/MySQL

Test:
OTRS 3.1.7
CentOS 6.3
Apache2/MySQL
rvaldovinos
Znuny newbie
Posts: 9
Joined: 04 Nov 2010, 13:20
Znuny Version: OTRS 2.4.9 ITSM 2.0.

Re: So klappt die LDAP Anbindung

Post by rvaldovinos »

Hi Boris

nach ein Paar Tage Urlaub habe mich nochmal damit Beschäftigt und mir die ganze Nummerierung nachgeschaut. Du hast Recht, dort war der Fehler. Jetzt habe ich meine zwei Domäne in OTRS. In Zukunft werden es 10 oder mehr Domäne sein und ich hoffe, dass keine Probleme auftreten.

Noch was, bei mir braucht man die Agenten nicht selber in der OTRS-Datenbank einzutragen. Ich habe es so gemacht, dass Sie nur in einer bestimmten AD-Gruppe sein müssen und dann werden sie beim ersten login automatich mit OTRS-Datenbank synchronisiert. Falls jemand an diese Lösung interessiert ist, sags Bescheid und ich kann auch im Forum hängen. Ich werde froh sein wenn ich, obwohl ich ein OTRS-Anfänger bin, zumindest ein Mal andere Leute helfen kann

Frohes Neues Jahr an die ganze OTRS-Community
Rafael
OTRS 2.4.7 ITSM 2.0.3
CentOS release 5.5 (Final) Mysql Ver 14.12
boris
Znuny wizard
Posts: 554
Joined: 22 Feb 2010, 18:27
Znuny Version: 3.0.4

Re: So klappt die LDAP Anbindung

Post by boris »

Hmmm...da bin ich dran interessiert.
Ich muss die Agenten eintragen. Dann zeig mal deine Lösung:-)
Produktiv:
OTRS 3.1.7
CentOS 6.3
Apache2/MySQL

Test:
OTRS 3.1.7
CentOS 6.3
Apache2/MySQL
rvaldovinos
Znuny newbie
Posts: 9
Joined: 04 Nov 2010, 13:20
Znuny Version: OTRS 2.4.9 ITSM 2.0.

Re: So klappt die LDAP Anbindung

Post by rvaldovinos »

Da hast du ...

#------------------------------------------------------------------------------------------------------------------------------#
# Autenticacion de Agentes por LDAP #
#------------------------------------------------------------------------------------------------------------------------------#

#----------------------------
# Dominio SSCC.GAM ----------
#----------------------------

# This is an example configuration for using an MS AD backend
$Self->{'AuthModule'} = 'Kernel::System::Auth::LDAP';
$Self->{'AuthModule::LDAP::Host'} = '172.16.x.x';
$Self->{'AuthModule::LDAP::BaseDN'} = 'dc=sscc,dc=gam';
$Self->{'AuthModule::LDAP::UID'} = 'sAMAccountName';

# Check if the user is allowed to auth in a posixGroup
# (e. g. user needs to be in a group OTRS_Agents to use otrs)
$Self->{'AuthModule::LDAP::GroupDN'} = 'CN=OTRS Agents,CN=Users,dc=sscc,dc=gam';
$Self->{'AuthModule::LDAP::AccessAttr'} = 'member';
$Self->{'AuthModule::LDAP::UserAttr'} = 'DN';

# Bind credentials to log into AD
$Self->{'AuthModule::LDAP::SearchUserDN'} = 'CN=OTRS Searcher,CN=Users,dc=sscc,dc=gam';
$Self->{'AuthModule::LDAP::SearchUserPw'} = 'password;

# 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->{'AuthModule::LDAP::AlwaysFilter'} = '';

# in case you want to add a suffix to each 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->{'AuthModule::LDAP::UserSuffix'} = '';

# Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
$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'} = '172.16.x.x';
$Self->{'AuthSyncModule::LDAP::BaseDN'} = 'dc=sscc,dc=gam';
$Self->{'AuthSyncModule::LDAP::UID'} = 'sAMAccountName';
$Self->{'AuthSyncModule::LDAP::SearchUserDN'} = 'CN=OTRS Searcher,CN=Users,dc=sscc,dc=gam';
$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'} = [
'users',
];

#---------------------------------
# Dominio ACTUAMILLENIUM.GRUPO ---
#---------------------------------


# This is an example configuration for using an MS AD backend
$Self->{'AuthModule1'} = 'Kernel::System::Auth::LDAP';
$Self->{'AuthModule::LDAP::Host1'} = '172.16.x.y';
$Self->{'AuthModule::LDAP::BaseDN1'} = 'dc=actuamillenium,dc=grupo';
$Self->{'AuthModule::LDAP::UID1'} = 'sAMAccountName';

# Check if the user is allowed to auth in a posixGroup
# (e. g. user needs to be in a group OTRS_Agents to use otrs)
$Self->{'AuthModule::LDAP::GroupDN1'} = 'CN=OTRS Agents,CN=Users,dc=actuamillenium,dc=grupo';
$Self->{'AuthModule::LDAP::AccessAttr1'} = 'member';
$Self->{'AuthModule::LDAP::UserAttr1'} = 'DN';

# Bind credentials to log into AD
$Self->{'AuthModule::LDAP::SearchUserDN1'} = 'CN=OTRS Searcher,CN=Users,dc=actuamillenium,dc=grupo';
$Self->{'AuthModule::LDAP::SearchUserPw1'} = 'password';

# 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->{'AuthModule::LDAP::AlwaysFilter'} = '';

# in case you want to add a suffix to each 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->{'AuthModule::LDAP::UserSuffix'} = '';

# Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
$Self->{'AuthModule::LDAP::Params1'} = {
port => 389,
timeout => 120,
async => 0,
version => 3,
};

# Now sync data with OTRS DB
$Self->{'AuthSyncModule1'} = 'Kernel::System::Auth::Sync::LDAP';
$Self->{'AuthSyncModule::LDAP::Host1'} = '172.16.x.y;
$Self->{'AuthSyncModule::LDAP::BaseDN1'} = 'dc=actuamillenium,dc=grupo';
$Self->{'AuthSyncModule::LDAP::UID1'} = 'sAMAccountName';
$Self->{'AuthSyncModule::LDAP::SearchUserDN1'} = 'CN=OTRS Searcher,CN=Users,dc=actuamillenium,dc=grupo';
$Self->{'AuthSyncModule::LDAP::SearchUserPw1'} = 'password';

$Self->{'AuthSyncModule::LDAP::UserSyncMap1'} = {
# 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::UserSyncInitialGroups1'} = [
'users',
];
#------------------------------------------------------------------------------------------------------------------------------#
# Autenticacion de Clientes por LDAP #
#------------------------------------------------------------------------------------------------------------------------------#

#----------------------------
# Dominio SSCC.GAM ----------
#----------------------------

$Self->{'Customer::AuthModule2'} = 'Kernel::System::CustomerAuth::LDAP';
$Self->{'Customer::AuthModule::LDAP::Host2'} = '172.16.x.x';
$Self->{'Customer::AuthModule::LDAP::BaseDN2'} = 'dc=sscc,dc=gam';
$Self->{'Customer::AuthModule::LDAP::UID2'} = 'sAMAccountName';
$Self->{'Customer::AuthModule::LDAP::SearchUserDN2'} = 'CN=OTRS Searcher,CN=Users,dc=sscc,dc=gam';
$Self->{'Customer::AuthModule::LDAP::SearchUserPw2'} = 'password';
$Self->{'Customer::AuthModule::LDAP::Params2'} = {
port => 389,
timeout => 120,
async => 0,
version => 3,
};



#------------------------------------------------------------------------------------------------------------------------------#
# UserSyncLDAPMap #
#------------------------------------------------------------------------------------------------------------------------------#

$Self->{'UserSyncLDAPMap2'} = {
'UserEmail' => 'mail',
'UserFirstname' => 'givenName',
'UserLastname' => 'sn',
'UserLogin' => 'sAMAccountName'
};

$Self->{CustomerUser2} = {
Name => 'otrs',
Module => 'Kernel::System::CustomerUser::LDAP',
Params => {
Host => '172.16.x.x',
BaseDN => 'dc=sscc,dc=gam',
SSCOPE => 'sub',
UserDN => 'CN=OTRS Searcher,CN=Users,dc=sscc,dc=gam',
UserPw => 'password',
},
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', 'Comment', 'description', 1, 0, 'var' ],
],
};



#------------------------------------------------------------------------------------------------------------------------------#
# LDAP System Users #
#------------------------------------------------------------------------------------------------------------------------------#
$Self->{'AuthModule2'} = 'Kernel::System::Auth::LDAP';
$Self->{'AuthModule::LDAP::Host2'} = '172.16.x.x';
$Self->{'AuthModule::LDAP::BaseDN2'} = 'DC=sscc,DC=gam';
$Self->{'AuthModule::LDAP::UID2'} = 'sAMAccountName';
$Self->{'AuthModule::LDAP::SearchUserDN2'} = 'CN=OTRS Searcher,CN=Users,dc=sscc,dc=gam';
$Self->{'AuthModule::LDAP::SearchUserPw2'} = 'password;
$Self->{'AuthModule::LDAP::Params2'} = {
'async' => '0',
'timeout' => '120',
'version' => '3',
'port' => '389'
};

$Self->{'AuthModule::LDAP::Die2'} = 1;



#----------------------------------------
# Dominio ACTUAMILLENIUM.GRUPO ----------
#----------------------------------------

$Self->{'Customer::AuthModule3'} = 'Kernel::System::CustomerAuth::LDAP';
$Self->{'Customer::AuthModule::LDAP::Host3'} = '172.16.x.y';
$Self->{'Customer::AuthModule::LDAP::BaseDN3'} = 'dc=actuamillenium,dc=grupo';
$Self->{'Customer::AuthModule::LDAP::UID3'} = 'sAMAccountName';
$Self->{'Customer::AuthModule::LDAP::SearchUserDN3'} = 'CN=OTRS Searcher,CN=Users,dc=actuamillenium,dc=grupo';
$Self->{'Customer::AuthModule::LDAP::SearchUserPw3'} = 'password';
$Self->{'Customer::AuthModule::LDAP::Params3'} = {
port => 389,
timeout => 120,
async => 0,
version => 3,
};



#------------------------------------------------------------------------------------------------------------------------------#
# UserSyncLDAPMap #
#------------------------------------------------------------------------------------------------------------------------------#

$Self->{'UserSyncLDAPMap3'} = {
'UserEmail' => 'mail',
'UserFirstname' => 'givenName',
'UserLastname' => 'sn',
'UserLogin' => 'sAMAccountName'
};

$Self->{CustomerUser3} = {
Name => 'otrs',
Module => 'Kernel::System::CustomerUser::LDAP',
Params => {
Host => '172.16.x.y',
BaseDN => 'dc=actuamillenium,dc=grupo',
SSCOPE => 'sub',
UserDN => 'CN=OTRS Searcher,CN=Users,dc=actuamillenium,dc=grupo',
UserPw => 'password',
},
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', 'Comment', 'description', 1, 0, 'var' ],
],
};



#------------------------------------------------------------------------------------------------------------------------------#
# LDAP System Users #
#------------------------------------------------------------------------------------------------------------------------------#
$Self->{'AuthModule3'} = 'Kernel::System::Auth::LDAP';
$Self->{'AuthModule::LDAP::Host3'} = '172.16.x.y';
$Self->{'AuthModule::LDAP::BaseDN2'} = 'dc=actuamillenium,dc=grupo';
$Self->{'AuthModule::LDAP::UID2'} = 'sAMAccountName';
$Self->{'AuthModule::LDAP::SearchUserDN2'} = 'CN=OTRS Searcher,CN=Users,dc=actuamillenium,dc=grupo';
$Self->{'AuthModule::LDAP::SearchUserPw2'} = ''password';
$Self->{'AuthModule::LDAP::Params2'} = {
'async' => '0',
'timeout' => '120',
'version' => '3',
'port' => '389'
};

$Self->{'AuthModule::LDAP::Die3'} = 1;



#------------------------------------------------------------------------------------------------------------------------------#
# Fin Autenticacion LDAP #
#------------------------------------------------------------------------------------------------------------------------------#
OTRS 2.4.7 ITSM 2.0.3
CentOS release 5.5 (Final) Mysql Ver 14.12
Locked