I've managed to get RT 3.8.9 working with LDAP authentication using
RT-Authen-ExternalAuth 0.08_01. My internal users, the ones handling tickets,
are authenticated via LDAP and it works great. On the other hand, most of the
people submitting tickets are in an external database.
I would like to implement this behavior: when an email comes in, and RT
processes it, it gets the user info from the external database. If it is a new
user create it and if it is an old user update it, based on the information on
the external database. So for example, If an email comes in and it matches one
of the emails in the external database, get the user name, the mobile phone,
the work phone, and update RT's Users database with that information. This way
I can use the most up to date information in templates and such.
I've browsed trough the perl code and I'm sure that there is something to do
with 'CanonicalizeUserInfo' and 'UpdateUserInfo'. Any pointers on how to do
this, or even if it is possible?
Here is my RT_SiteConfig so far...
#
# RT_Config.pm
#
# basic configuration
Set($rtname, 'rt.domain.com');
Set($Organization, 'domain.com');
# logging
Set($LogToFile, 'info');
Set($LogDir, '/var/log');
Set($LogToFileNamed, 'rt.log');
# web configuration
Set( $WebDomain, 'rt.domain.com' );
# authentication
Set(@Plugins, qw(RT::Authen::ExternalAuth));
Set($ExternalAuthPriority,['MY_LDAP']);
Set($ExternalInfoPriority,['MY_LDAP','MY_Members']);
Set($ExternalServiceUsesSSLorTLS, 0);
Set($AutoCreateNonExternalUsers, 1);
Set($ExternalSettings, {
'MY_LDAP' => {
'type' => 'ldap',
'server' => '10.10.10.10',
'auth' => 1,
'info' => 1,
'base' => 'ou=People,dc=domain,dc=com',
'filter' => '(objectClass=person)',
'd_filter' => '(objectClass=FooBarBaz)',
'tls' => 0,
'net_ldap_args' => [ version => 3],
'attr_match_list' => [ 'Name' ],
'attr_map' => {
'Name' => 'uid',
'RealName' => 'cn',
'ExternalAuthId' => 'uid',
'Gecos' => 'uid',
'EmailAddress' => 'mail',
'WorkPhone' => 'telephoneNumber'
}
},
'MY_Members => {
'type' => 'db',
'server' => '10.10.10.10',
'auth' => 0,
'info' => 1,
'database' => '********',
'table' => '*******',
'user' => '********',
'pass' => '*********',
'port' => 3306,
'dbi_driver' => 'mysql',
'attr_match_list' => [ 'EmailAddress' ],
'attr_map' => {
'WorkPhone' => 'phone_office',
'MobilePhone' => 'phone_mobile',
'EmailAddress' => 'email'
}
}
});
1;