Voy a intentar resumir la configuración para conectar el sistema de Helpdesk OTRS con Active Directory de Microsoft.
La integración permitirá que los usuarios en el dominio de Windows correspondiente podrán loguearse como agentes a OTRS (también se puede llegar a configurar la autenticación vía Active Directory de clientes en OTRS).
Para configurar Active Directory como backend, el fichero que deberemos modificar es ~otrs/Kernel/Config.pm
En mi caso, la ubicación de OTRS es la de por defecto, /opt/otrs, por lo que sería /opt/otrs/Kernel/Config.pm
Añadiremos antes de la sección “end of your own config options!!!” lo siguiente:
# This is an example configuration for an LDAP auth. backend.
# (take care that Net::LDAP is installed!)
$Self->{AuthModule} = 'Kernel::System::Auth::LDAP';
$Self->{'AuthModule::LDAP::Host'} = 'dc.test.local';
$Self->{'AuthModule::LDAP::BaseDN'} = 'dc=test,dc=local';
$Self->{'AuthModule::LDAP::UID'} = 'sAMAccountName';
# Definimos grupo, en el que estarán los agentes de OTRS, si no definimos grupos, todos los usuarios del Active Directory
# podran hacer login como agentes
# En el caso del ejemplo, necesitarás crear el grupo otrs_agents y añadir a él los usuarios que quieres que hagan login como agentes.
$Self->{'AuthModule::LDAP::GroupDN'} = 'CN=otrs_agents,OU=grupos,DC=test,DC=local';
$Self->{'AuthModule::LDAP::AccessAttr'} = 'member';
$Self->{'AuthModule::LDAP::UserAttr'} = 'DN';
# Definimos el usuario (que crearemos previamente en AD) con el que realizaremos las consultas
$Self->{'AuthModule::LDAP::SearchUserDN'} = 'CN=otrs,OU=users,DC=test,DC=local';
$Self->{'AuthModule::LDAP::SearchUserPw'} = 'password_otrs_user';
# 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,
};
# --------------------------------------------------- #
# authentication sync settings #
# (enable agent data sync. after succsessful #
# authentication) #
# --------------------------------------------------- #
# Definimos la sincronización con BBDD de AD. Cuando se loggeen correctamente, se sincronizarán datos a BBDD.
# (take care that Net::LDAP is installed!)
$Self->{AuthSyncModule} = 'Kernel::System::Auth::Sync::LDAP';
$Self->{'AuthSyncModule::LDAP::Host'} = 'dc.test.local';
$Self->{'AuthSyncModule::LDAP::BaseDN'} = 'dc=test,dc=local';
$Self->{'AuthSyncModule::LDAP::UID'} = 'sAMAccountName';
# Definimos el usuario (que crearemos previamente en AD) con el que realizaremos las consultas
$Self->{'AuthSyncModule::LDAP::SearchUserDN'} = 'CN=otrs,OU=users,DC=test,DC=local';
$Self->{'AuthSyncModule::LDAP::SearchUserPw'} = 'password_otrs_user';
# Mapeo de campos de sincronizacion
$Self->{'AuthSyncModule::LDAP::UserSyncMap'} = {
# DB -> LDAP
UserFirstname => 'givenName',
UserLastname => 'sn',
UserEmail => 'mail',
};
Una vez realicéis estos cambios, debería ser posible loggearos con un usuario que se encuentre dentro del grupo otrs_agents de AD.
Estas configuraciones relativas a LDAP/AD (y otras más avanzadas) están sacadas del fichero /opt/otrs/Kernel/Config/Defaults.pm, por si queréis darle alguna vuelta más.
¡¡¡Acceso admin perdido!!!
Si os pasa como a mi, podréis conectar perfectamente a OTRS con usuarios de dominio, pero habréis perdido el acceso Administrador (root@localhost).
Podréis ver en los logs como intenta autenticar root@localhost con el dominio, pero no lo encuentra (evidentemente):
OTRS-CGI-10[5456]: [Notice][Kernel::System::Auth::LDAP::Auth] User: root@localhost authentication failed, no LDAP entry found!BaseDN='dc=test,dc=local', Filter='(sAMAccountName=root@localhost)', (REMOTE_ADDR: x.x.x.x).
Para poder conseguir acceso administrador, debéis revertir la configuración añadida (en mi caso tuve que reiniciar apache una vez realizados los cambios), conectaros con el usuario local root@localhost y asignar permisos/roles de Administrador al menos a uno de los usuarios de AD, que ya se han sincronizado en la base de datos.
Finalmente volvéis a configurar el fichero Config.pm con el backend AD .