Hallo
Ich habe die Autorisierung im OTRS in den letzten Tagen für die Kunden
von der otrs MySQL DB auf LDAP (Active Directory) umgestellt. System
ist FreeBSD 6.2 mit OTRS 2.2.7 und ITSM 1.0.6
Das Problem ist, das ich aus unerfindlichen Gründen im Ticket jetzt
keine CustomerID (Kunden-Firma) mehr habe. Eine SQL Abfrage in
"Ticket.pm" fällt auf die Nase weil "IN ()" leer ist (siehe Zeile 3
und 6):
Log (Debug):
--------------------------------------
Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch
nachschlagen bei ') ORDER BY st.create_time_unix DESC LIMIT 10000' in
Zeile 1,
SQL:
1 'SELECT DISTINCT st.id, st.tn, st.create_time_unix FROM ticket st,
queue sq
2 WHERE sq.id = st.queue_id
3 AND (LOWER(st.customer_id) IN ( )
4 OR st.customer_user_id = '[EMAIL PROTECTED]')
5 AND sq.group_id IN (1)
6 AND LOWER(st.customer_id) IN ( )
7 ORDER BY st.create_time_unix DESC LIMIT 10000'
--------------------------------------
Effekt ist, dass in der Ticket-Übersicht ("Meine Tickets",
"Firmenticket") für die Kunden keine Tickets mehr erscheinen (und ich
Ticket.pm hacken muss damit es trotzdem klappt).
Ich habe in Ticket.pm mal eine Log-Anweisung an der Stelle, an der
diese SQL Anfrage zusammengebaut wird, eingefügt, wo man sehen kann
das das Array "@CustomerIDs" leer ist.
Version 2.2.7 ~otrs/Kernel/System/Ticket.pm, Zeile 3451 ff:
--------------------------------------
# get secondary customer ids
my @CustomerIDs = $Self->{CustomerUserObject}-
>CustomerIDs(User => $Param{CustomerUserID});
# add own customer id
my %CustomerData = $Self->{CustomerUserObject}-
>CustomerUserDataGet(User => $Param{CustomerUserID});
if ($CustomerData{UserCustomerID}) {
push (@CustomerIDs, $CustomerData{UserCustomerID});
}
$Self->{LogObject}->Log(
Priority => 'notice',
Message => "Inhalt CustomerID:".($CustomerIDs[0]).
($CustomerIDs[1]).".",
);
-------------------------------------
Ergebnis im Log:
Jul 20 19:16:27 inet OTRS-FCGI-10[45828]: [Notice]
[Kernel::System::Ticket::TicketSearch] Inhalt CustomerID:.
Verstehen kann ich es bisher leider nicht. In "@CustomerIDs" müsste
eigentlich die eMail-Adresse des Kunden stehen, als auch der
Firmenname ("company" im AD LDAP)
So ist die Konfiguration in Config.pm - vielleicht sieht ja jmd. was
ich nicht sehe:
-------------------------------------
# ---------------------------------------------------- #
# Customer Authentifizirung via LDAP #
# ---------------------------------------------------- #
$Self->{'Customer::AuthModule'} =
'Kernel::System::CustomerAuth::LDAP';
$Self->{'Customer::AuthModule::LDAP::Host'} = '192.168.1.1';
$Self->{'Customer::AuthModule::LDAP::BaseDN'} = '';
$Self->{'Customer::AuthModule::LDAP::BaseDN'} =
'dc=meinedomain,dc=local';
$Self->{'Customer::AuthModule::LDAP::AlwaysFilter'} = '';
$Self->{'Customer::AuthModule::LDAP::GroupDN'} =
'cn=OTRSUser,cn=users,dc=meinedomain,dc=local';
$Self->{'Customer::AuthModule::LDAP::SearchUserDN'} = '[EMAIL PROTECTED]
';
$Self->{'Customer::AuthModule::LDAP::SearchUserPw'} =
'Otrs321';
$Self->{'Customer::AuthModule::LDAP::AlwaysFilter'} =
'(&(company=MeineFirma)(objectClass=Person)(!(objectClass=Computer))(!
(objectClass=publicFolder)))';
$Self->{'Customer::AuthModule::LDAP::AccessAttr'} = 'member';
$Self->{'Customer::AuthModule::LDAP::UID'} = 'sAMAccountName';
$Self->{'Customer::AuthModule::LDAP::UserAttr'} = 'DN';
$Self->{'Customer::AuthModule::LDAP::Params'} = {
# port => 389,
# timeout => 120,
# async => 0,
# version => 3,
SourceCharset => 'utf-8',
DestCharset => 'utf-8',
};
# ---------------------------------------------------- #
# customer Auth #
# ---------------------------------------------------- #
# CustomerUser
# (customer user ldap backend and settings)
$Self->{CustomerUser} = {
Module => 'Kernel::System::CustomerUser::LDAP',
Name => 'Active Directory',
Params => {
# ldap host
Host => '192.168.1.1',
# ldap base dn
BaseDN => 'dc=meinedomain,dc=local',
# search scope (one|sub)
SSCOPE => 'sub',
UserDN => '[EMAIL PROTECTED]',
UserPw => 'Otrs321',
AlwaysFilter => '(&(company=MeineFirma)
(objectClass=Person)(!(objectClass=Computer))(!
(objectClass=publicFolder)))',
SourceCharset => 'utf-8',
DestCharset => 'utf-8',
},
# customer uniq id
CustomerKey => 'sAMAccountName',
# customer #
CustomerID => 'mail',
CustomerUserListFields => ['sAMAccountName', 'cn', 'mail'],
CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail'],
CustomerUserSearchPrefix => '',
CustomerUserSearchSuffix => '*',
CustomerUserExcludePrimaryCustomerID => 0,
CustomerUserSearchListLimit => 2500,
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', '', 0 ],
[ 'UserLastname', 'Lastname', 'sn', 1,
1, 'var', '', 0 ],
[ 'UserLogin', 'Login', 'mail', 1,
1, 'var', '', 0 ],
[ 'UserEmail', 'Email', 'mail', 1,
1, 'var', '', 0 ],
[ 'UserCustomerID', 'CustomerID', 'mail', 0,
1, 'var', '', 0 ],
[ 'UserCustomerIDs', 'CustomerIDs', 'company', 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 ],
],
};
-------------------------------------
Meine vorherige Mail könnt Ihr vergessen, weil ich die Frage über den
"company" Eintrag im LDAP halbwegs gelöst habe - naja "hätte" wenn es
denn gehen würde.
Viele Grüße
Nicola
_______________________________________________
OTRS-de Mailingliste: otrs-de - Webpage: http://otrs.org/
Archiv: http://lists.otrs.org/pipermail/otrs-de/
Listenabo verwalten: http://lists.otrs.org/cgi-bin/listinfo/otrs-de/
Support oder Consulting fuer Ihr OTRS System?
=> http://www.otrs.com/