Firstly, sorry if this is a duplicate issue - I've been unable to locate information that has been useful in helping resolve this issue.
I would like to configure the multiple backend authentication feature in OTRS, specifically for customers.
I got LDAP to work, even synchronizing the data over, however whenever I try to add the additional database it... just doesn't work.
Any pointers or tips would be appreciated, I'm still kindof new to OTRS but i'm learning fast

Environment is:
OTRS 3.0.6 running on Debian Linux with MySQL for Agents, LDAP for Customers (hopefully soon MySQL AND LDAP

Config.pm is below:
Code: Select all
package Kernel::Config;
sub Load {
my $Self = shift;
# ---------------------------------------------------- #
# ---------------------------------------------------- #
# #
# Start of your own config options!!! #
# #
# ---------------------------------------------------- #
# ---------------------------------------------------- #
# ---------------------------------------------------- #
# database settings #
# ---------------------------------------------------- #
# DatabaseHost
# (The database host.)
$Self->{'DatabaseHost'} = 'localhost';
# Database
# (The database name.)
$Self->{'Database'} = 'otrs';
# DatabaseUser
# (The database user.)
$Self->{'DatabaseUser'} = 'otrs';
# DatabasePw
# (The password of database user. You also can use bin/otrs.CryptPassword.pl
# for crypted passwords.)
$Self->{'DatabasePw'} = 'hot';
# DatabaseDSN
# (The database DSN for MySQL ==> more: "man DBD::mysql")
$Self->{DatabaseDSN} = "DBI:mysql:database=$Self->{Database};host=$Self->{DatabaseHost};";
# (The database DSN for PostgreSQL ==> more: "man DBD::Pg")
# if you want to use a local socket connection
# $Self->{DatabaseDSN} = "DBI:Pg:dbname=$Self->{Database};";
# if you want to use a tcpip connection
# $Self->{DatabaseDSN} = "DBI:Pg:dbname=$Self->{Database};host=$Self->{DatabaseHost};";
# ---------------------------------------------------- #
# fs root directory
# ---------------------------------------------------- #
$Self->{Home} = '/opt/otrs';
# ---------------------------------------------------- #
# insert your own config settings "here" #
# config settings taken from Kernel/Config/Defaults.pm #
# ---------------------------------------------------- #
# $Self->{SessionUseCookie} = 0;
# $Self->{CheckMXRecord} = 0;
# ---------------------------------------------------- #
# ---------------------------------------------------- #
# data inserted by installer #
# ---------------------------------------------------- #
# $DIBI$
$Self->{'DefaultCharset'} = 'utf-8';
########################################################
###############################Customer auth########################
# CustomerUser1
# (customer user ldap backend and settings)
$Self->{CustomerUser} = {
Module => 'Kernel::System::CustomerUser::LDAP',
Params => {
Host => 'e8group.net', # ldap host
BaseDN => 'OU=e8group, dc=e8group, dc=net', # ldap base dn
SSCOPE => 'sub', # search scope (one|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 => 'ldapquery',
UserPw => 'Password123',
## 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 => '',
AlwaysFilter => '(mail=*)',
## if both your frontend and your LDAP are unicode, use this:
##SourceCharset => 'utf-8',
##DestCharset => 'utf-8',
## if your frontend is e. g. iso-8859-1 and the character set of your
## ldap server is utf-8, use these options:
#SourceCharset => 'utf-8',
#DestCharset => 'utf-8',
#Params => { # Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
#port => 389,
#timeout => 120,
#async => 0,
#version => 3,
#},
},
#ReadOnly => 1,
CustomerKey => 'sAMAccountName', # customer unique id
CustomerID => 'mail',
CustomerUserListFields => ['cn', 'mail'],
#CustomerUserSearchFields => ['cn', 'givenname', 'mail'],
CustomerUserSearchFields => ['uid', 'cn', 'mail'],
CustomerUserSearchPrefix => '',
CustomerUserSearchSuffix => '*',
CustomerUserSearchListLimit => 250,
CustomerUserPostMasterSearchFields => ['mail'],
CustomerUserNameFields => ['givenname', 'sn'],
#CustomerUserExcludePrimaryCustomerID => 0, # show not own tickets in customer panel, CompanyTickets
#AdminSetPreferences => 0, # admin can't change customer preferences
CacheTTL => 120, # cache time to live in sec. - cache any database queries
Map => [
# note: Login, Email and CustomerID needed!
# var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
[ '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 ],
#[ 'UserPhone', 'Phone', 'telephonenumber', 1, 0, 'var', '', 0 ],
#[ 'UserSalutation', 'Title', 'title', 1, 0, 'var', '', 0 ],
#[ 'UserAddress', 'Address', 'postaladdress', 1, 0, 'var', '', 0 ],
#[ 'UserComment', 'Comment', 'description', 1, 0, 'var', '', 0 ],
#[ 'UserMobile', 'Mobile', 'mobile', 1, 0, 'var', '', 0 ],
#[ 'UserRoom', 'Room', 'physicalDeliveryOfficeName', 1, 0, 'var', '', 0 ],
],
};
# ---------------------------------------------------- #
# ---------------------------------------------------- #
# #
# End of your own config options!!! #
Currently internal customers will all be authenticating with LDAP, but we're hoping to allow external customers (that is, people outside of the company who don't have their own user account on our Active Directory infrastructure) to log in as well, which the additional backend.
Once this is done, we're hoping to customise the customer portal a bit - creating templated tickets, and hopefully a change request bit specific to internal customers, but that's secondary to the authentication issue.
Thanks in advance for any help you can provide

Nathan
The Frame Group
nathan.murphy@framegroup.com.au
*Note - edited to make the config look pretty in a code box.