Hoy os traigo un pequeño tutorial acerca de como integrar OTRS con LDAP, existe mucha información al respecto en el foro, pero fragmentada y escasa en español. Este tutorial explica como usuarios registrados en LDAP puedan conectarse a OTRS y otras configuraciones derivadas.
Para ello, lo primero que necesitamos es disponer un usuario de LDAP que disponga de permisos de busqueda de los diferentes usuarios y sus propiedades al nivel apropiado del arbol LDAP deseado. Este usuario sera el que realizara la busqueda en LDAP cuando un Agente intente entrar en el sistema.
Configuración básica
Una vez dispuestos los requisitos, accedemos al archivo Config.pm situado en /otrs/Kernel.
Dentro del mismo, observaremos una funcion en la que se declaran las configuraciones especiales como esta, nos situamos al final de la funcion y emepzamos a escribir las siguientes lineas:
Code: Select all
########### INTEGRACION LDAP ##################
$Self->{'AuthModule'} = 'Kernel::System::Auth::LDAP';
$Self->{'AuthModule::LDAP::Host'} = '10.10.10.10';
$Self->{'AuthModule::LDAP::BaseDN'} = 'dc=test,dc=local';
$Self->{'AuthModule::LDAP::UID'} = 'sAMAccountName';
$Self->{'AuthModule::LDAP::SearchUserDN'} = 'CN=pruebas,OU=pruebas,DC=test,DC=local';
$Self->{'AuthModule::LDAP::SearchUserPw'} = '12345';
$Self->{'AuthModule::LDAP::Params'} = {
port => 389,
timeout => 120,
async => 0,
version => 3,
};
- $Self->{'AuthModule::LDAP::Host'}: Direccion ip del servidor LDAP.
$Self->{'AuthModule::LDAP::BaseDN'}: Nombre del dominio (distinguishedName).
$Self->{'AuthModule::LDAP::UID'}: Formato de busqueda del login del usuario puede ser sAMAccountName (login usuario) o userPrincipalName (login usuario @ dominio ).
$Self->{'AuthModule::LDAP::SearchUserDN'}: Nombre distintivo del usuario que ejecuta las busquedas (distinguisedName).
$Self->{'AuthModule::LDAP::SearchUserPw'}: Contraseña del usuario que ejecuta las busquedas.
Como muchos os preguntareis ahora, esto por si solo no permitiria entrar a cualquier usuario de LDAP, solamente a los usuarios de LDAP registrados previamente en OTRS.
Ahora bien se disponen de mas formas de autenticacion con LDAP que requieren de esta (previa) conexion basica, sigue leyendo.
Restricción de acceso por grupos LDAP
En la fase de busqueda del usuario que intenta logear por LDAP, es posible realizar un filtrado especifico en funcion de X grupo asignado a los usuarios dentro del LDAP. Esto permite limitar una parte de los usuarios del LDAP a aquellos que sean miembros del grupo x.
Para realizarlo: Abra el fichero Config.pm, situese en el apartado de integracion LDAP de la conexión básica e inserte las siguientes lineas:
Code: Select all
$Self->{'AuthModule::LDAP::GroupDN'} = 'CN=SG,OU=pruebas,DC=gidtest,DC=local';
$Self->{'AuthModule::LDAP::AccessAttr'} = 'member';
$Self->{'AuthModule::LDAP::UserAttr'} = 'DN';
- $Self->{'AuthModule::LDAP::GroupDN'}: Nombre distintivo del grupo (distinguisedName).
$Self->{'AuthModule::LDAP::AccessAttr'}: Atributo de búsqueda sobre el grupo, en este caso "member".
Creación automática de usuarios en BBDD de OTRS autenticados contra LDAP
Con las configuraciones previas disponemos de 2 niveles de autenticacion con los que asegurar el acceso a OTRS. No obstante, en determinadas situaciones es incomodo la necesidad de crear a mano todos los usuarios registrados en LDAP en el OTRS (y con razon) y se echa en falta un registro automatico.
Con esta nueva configuracion es posible, al realizar esta configuracion es altamente recomendable (sino imprescindible) añadir conjuntamente a la configuracion de restriccion de grupos descrita anteriormente. De lo contrario cualqueir usuario de LDAP podria acceder a OTRS.
Para realizarlo debemos acceder al fichero Config.pm e introducir las siguientes lineas dentro de nuestro apartado de integracion LDAP:
Code: Select all
# agent data sync against ldap
$Self->{'AuthSyncModule'} = 'Kernel::System::Auth::Sync::LDAP';
$Self->{'AuthSyncModule::LDAP::Host'} = '10.10.10.10';
$Self->{'AuthSyncModule::LDAP::BaseDN'} = 'dc=test,dc=local';
$Self->{'AuthSyncModule::LDAP::UID'} = 'sAMAccountName';
$Self->{'AuthSyncModule::LDAP::SearchUserDN'} = 'CN=pruebas,OU=pruebas,DC=gidtest,DC=local';
$Self->{'AuthSyncModule::LDAP::SearchUserPw'} = '12345';
$Self->{'AuthSyncModule::LDAP::UserSyncMap'} = {
# DB -> LDAP
UserFirstname => 'givenName',
UserLastname => 'name',
UserEmail => 'mail',
};
$Self->{'AuthSyncModule::LDAP::UserSyncInitialGroups'} = [
'users',
];
Aparte de los campos ya familiares de puntos anteriores en su nueva version de sincronizacion, se describen 2 nuevos campos:
- $Self->{'AuthSyncModule::LDAP::UserSyncMap'}: Recolecta los diferentes datos del LDAP para la creación del usuario. Es requisito mínimo disponer de estos 3 campos de OTRS rellenos (UserFirstname, UserLastname y UserEmail). Los diferentes campos pasados deben corresponderse con aquellos atributos del LDAP que contiene dicha información, como se expone en el comentario: el primer elemento corresponde al nombre de la columna en la base de datos y el segundo al elemento de LDAP donde se extraera esa información.
Como ya podeis intuir, se pueden agregar nuevos campos en la tabla de usuarios de la base de datos para recolectar informaciones addicionales como departamentos, ips del puesto, etc. A lo cual seria necesario implementar backends de usuario (ver viewtopic.php?f=84&p=64483#p64483 )
$Self->{'AuthSyncModule::LDAP::UserSyncInitialGroups'}: Asigna permisos por defecto a usuarios creados tras la autenticación en LDAP que no estén dispuestos en OTRS, es preciso declarar un grupo especifico inicial y limitado para que el usuario pueda cursar una petición posterior dentro del OTRS solicitando sus permisos conforme a su actividad.
Adicionalmente, esta implementacion sincronizara automaticamente a los usuarios que ya hayan sido registrados. Por tanto, un usuario registrado al iniciar sesion, actualizara sus datos personales sincronizados en la base de datos de OTRS. El usuario que ejecutara la actualizacion de campos en la base de datos de OTRS sera el usuario general declarado en el propio archivo Config.pm.
Autenticación múltiple de usuarios por LDAP y Base de datos
A veces, se da la necesidad de implementar una integracion LDAP que no impida la sesion de algunos usuarios que ya dispusieramos en la base de datos y que no esten registrados en LDAP. Por ejemplo, nuestra politica de usuarios de LDAP podria restringirnos el uso de usuarios genericos en este entorno, pero no en OTRS donde podriamos disponer de algun usuario generico impersonal empleado para X acciones. Para permitir esta situacion generaremos una autenticacion multiple.
Debemos acceder al fichero Config.pm y junto al resto de configuraciones de la integracion de LDAP incluir esta:
Code: Select all
# Autenticacion Multple: Segundo Nivel
$Self->{'AuthModule2'} = 'Kernel::System::Auth::DB';
$Self->{'AuthModule::DB::CryptType2'} = 'crypt';
No obstante, tenga en mente que de existir previamente un usuario en Base de datos que si este en LDAP, seguira un proceso de autenticacion validado en LDAP y de existir la sincronizacion su informacion personal sera machacada en el logeo de sesion. Para el resto de usuarios que no estuvieran en LDAP, podran conectarse manteniendo su informacion personal.
LDAP Troubleshooting
Por último, os enlazo un post de nuestro vecino Crythias donde se detallan los posibles errores que os mostrara el log de OTRS y su interpretacion para determinar que falla en la configuración.
viewtopic.php?f=60&t=16543
Espero que os sirva de ayuda,
Un saludo.