[rt-users] Problem configuring LDAP with AD

Andrew Hodgson andrew at plaintalkit.com
Wed Oct 18 12:40:51 EDT 2006


Hi there,

I've got RT set up and working fine on Ubuntu 6.06 Server, but we use AD
here (2003 SBS) and I'd like to get user accounts to be created
automatically. I've applied the LDAP overlay and made the changes to the
RT_SiteConfig.pm file (reproduced below), along with the auto-creation
overlay. Unfortunately, I'm still having problems getting it to recognise
my own domain account:

Oct 18 12:59:17 tracker RT: Transaction->Create couldn't, as you didn't
specify an object type and id
(/usr/share/request-tracker3.4/lib/RT/Record.pm:1451)
Oct 18 12:59:17 tracker RT: Trying LDAP authentication
Oct 18 12:59:17 tracker RT: RT::User::IsLDAPPassword search for
(&(sAMAccountName=Andrew Hodgson)(objectclass=inetOrgPerson)) failed:
LDAP_OPERATIONS_ERROR 1
Oct 18 12:59:17 tracker RT: RT::User::IsPassword auth method
IsLDAPPassword FAILED
Oct 18 12:59:17 tracker RT: RT::User::IsInternalPassword AUTH FAILED (no
passwd): Andrew Hodgson
(/usr/share/request-tracker3.4/lib/RT/User_Local.pm:232)
Oct 18 12:59:17 tracker RT: RT::User::IsPassword auth method
IsInternalPassword FAILED
Oct 18 12:59:17 tracker RT: FAILED LOGIN for Andrew Hodgson from
192.168.0.238 (/usr/share/request-tracker3.4/html/autohandler:191)

I've tweaked LdapFilter and settled on inetOrgPerson, from researches
around the 'net, but I'm still getting the LDAP_OPERATIONS_ERROR 1, so
that might not be the root problem. The first line stumps me somewhat,
talking about "object type and id".

I know this problem is essentially solved, I just need a little help
getting over the line! Here's my /etc/request-tracker3.4/RT_SiteConfig.pm:


# RT_SiteConfig.pm
#
# These are the bits you absolutely *must* edit.
#
# To find out how, please read
#   /usr/share/doc/request-tracker3.4/INSTALL.Debian

# THE BASICS:

Set($rtname, 'tracker.betgenius.local');
Set($Organization, 'betgenius.com');

Set($CorrespondAddress , 'rt at betgenius.com');
Set($CommentAddress , 'rt-comment at betgenius.com');

Set($Timezone , 'Europe/London'); # obviously choose what suits you

# THE DATABASE:

Set($DatabaseType, 'Pg'); # e.g. Pg or mysql

# These are the settings we used above when creating the RT database,
# you MUST set these to what you chose in the section above.

Set($DatabaseUser , 'rtuser');
Set($DatabasePassword , 'strongarm');
Set($DatabaseName , 'rtdb');

# THE WEBSERVER:

Set($WebPath , "/rt");
Set($WebBaseURL , "http://tracker");

Set($DatabaseHost   , 'localhost');
Set($DatabaseRTHost , 'localhost');

### LDAP Settings
#
# There are two different branches of this: LdapAuth* and LdapInfo*;
# additionally, most of the old Ldap* variables are honored, too.
#
# This means if you only have one LDAP server/config you can just set
# "LdapServer", "LdapUser", etc. and they will be used for both
# authentication and information

### Enable/Disable LDAP services
Set($LdapExternalAuth, 1);
Set($LdapExternalInfo, 1);

### Common Settings: affecting both auth and info services

# Should we create accounts for users who aren't in LDAP?
Set($LdapAutoCreateNonLdapUsers, 1);

# Map RT attributes to LDAP attributes
#
### THE MAPPING BELOW WILL NOT WORK FOR YOU UNLESS YOU CHANGE
### IT TO MATCH YOUR LDAP SCHEMA! See
http://wiki.bestpractical.com/?LdapAttrMap
### to learn how to set this variable properly for either LDAP or Windows
### Active Directory.
Set($LdapAttrMap, {'Name' => 'sAMAccountName',
                   'EmailAddress' => 'mail',
                   'Organization' => 'physicalDeliveryOfficeName',
                   'RealName' => 'cn',
                   'ExternalContactInfoId' => 'dn',
                   'ExternalAuthId' => 'sAMAccountName',
                   'Gecos' => 'sAMAccountName',
                   'WorkPhone' => 'telephoneNumber',
                   'Address1' => 'streetAddress',
                   'City' => '1',
                   'State' => 'st',
                   'Zip' => 'postalCode',
                   'Country' => 'co'}
);

# A list of RT attrs which can uniquely identify a user,
# ordered from most to least preferred.

Set($LdapRTAttrMatchList, ['ExternalContactInfoId', 'Name',
                           'EmailAddress', 'RealName',
                           'WorkPhone', 'Address2']
);

# A list of LDAP attrs to examine when canonicalizing email addresses,
# ordered from most to least preferred
Set($LdapEmailAttrMatchList, ['mail', 'mailRoutingAddress',
                              'mailAlternateAddress']
);

# A list of prefixes to apply to email address matches.
# Windows 2003 AD uses prefixes or smtp: or SMTP:.
# If not required just leave ''
Set($LdapEmailAttrMatchPrefix, ['', 'smtp:', 'SMTP:'] );

# The basics; if set, these override $RT::LdapAuth* and $RT::LdapInfo*
Set($LdapServer, 'officeserver.betgenius.local');
Set($LdapBase, 'ou="Active Users",dc=betgenius,dc=local');
Set($LdapFilter, '(objectclass=inetOrgPerson)');
#   Windows 2003 Active Directory does not allow anonymous LDAP binding
#   thus you must pass Net::LDAP a username and password that has
#   access to read the directory.
#
#   You may also need to specify the full distinguished name instead of
#   just a username for LdapUser below.
#   e.g. cn=Username,cn=Users,dc=yourdomain,dc=com
#
#Set($LdapUser, 'cn=Scanner,ou=UsersCreatedByUs,dc=betgenius,dc=local');
#Set($LdapPass, 'scanner');

# This filter is used by RT::User::UpdateFromLdap to test whether an
# LDAP user's RT account should be disabled. Any user whose LDAP record
# passes this filter (returns true) will be disabled at login
Set($LdapDisableFilter, '(employmentStatus=Terminated)');

# If you set these, only members of this group can auth via LDAP
#Set($LdapGroup, 'cn=RT,ou=Group,dc=example,dc=com');
#Set($LdapGroupAttr, 'uniqueMember');

# These turn on SSL for LDAP
#Set($LdapTLS, 0);
#Set($LdapSSLVersion, 3);

1;

EOF

Thanks,

--
Andrew Hodgson




More information about the RT-Users mailing list