Configura tu OTRS con soporte LDAP

Sunday, July 10, 2011 17:58
Posted in category Otros, Programación

OTRS (siglas en ingés de Open-source Ticket Request System), es una herramienta de gestión y solicitud de tickets de código abierto (distribuido bajo licencia GPL), que permite facilitar el seguimiento de dichas solicitudes o incidencias con los clientes o usuarios finales. Sin lugar a dudas es una herramienta fantástica que cuenta con el apoyo de compañias tales como la NASA, Fujisthsu, Nokia, o Lufthansa entre otros.

otrs logo

logo otrs

La instalación básica de OTRS utilizando como backend MySQL no tiene mucha dificultad, así que supongo que ya os habréis descargado OTRS.

Para poder configurar nuestro sistema OTRS y que la autenticación de los usuarios se realice mediante el protocolo LDAP contra el directorio activo es necesario tocar 2 ficheros de configuración. El primero de ellos será (y hablo a partir de la versión 3.0.6 de OTRS) el fichero ZZZAuto.pm que se encuentra en la ruta “..\Kernel\Config\Files\ZZZAuto.pm

En el fichero ZZZAuto.pm deberemos escribir la siguiente configuración:

$Self->{'Customer::AuthModule::LDAP::SearchUserPw'} =  'xx_password';
$Self->{'Customer::AuthModule::LDAP::SearchUserDN'} =  'CN=xx_usuario,CN=Users,DC=xx_subdominio,DC=xx_dominio';
$Self->{'Customer::AuthModule::LDAP::UserAttr'} =  'UID';
$Self->{'Customer::AuthModule::LDAP::UID'} =  'sAMAccountName';
$Self->{'Customer::AuthModule::LDAP::BaseDN'} =  'OU=xx_tu_unidad_organizativa,DC=xx_subdominio,DC=xx_dominio';
$Self->{'Customer::AuthModule::LDAP::Host'} =  'xx_nombre_de_tu_host';
$Self->{'Customer::AuthModule'} =  'Kernel::System::CustomerAuth::LDAP';

Esta configuración también es accesible y editable desde el administrador web de Otrs en el módulo Costumer::Auth

Pero no hemos terminado todavía, si quisieramos entrar al sistema con esta configuración recibiriamos el siguiente error:

Authentication succeeded, but no customer record IS found IN the customer backend. Please contact your administrator.

Deberemos indicarle a OTRS cómo deberá almacenar la información que recupera del directorio activo mediante el protolo LDAP. Sintiendolo mucho esta información parece que no se puede indicar mediante la interfaz web por lo que tendremos que añadir dicha configuración en el único archivo que no es modificado por dicha interfaz que no es otro que el Config.pm que se encuentra en la ruta “..\Kernel\Config.pm“. Dicho fichero deberá contener la siguiente información:

sub Load {
    my $Self = shift;
    # ---------------------------------------------------- #
    # ---------------------------------------------------- #
    #                                                      #
    #         Start of your own config options!!!          #
    #                                                      #
    # ---------------------------------------------------- #
    # ---------------------------------------------------- #
 
    # ---------------------------------------------------- #
    # database settings                                    #
    # ---------------------------------------------------- #
 
 
 $Self->{'Customer::AuthModule::LDAP::SearchUserPw'} =  'xx_password';
 $Self->{'Customer::AuthModule::LDAP::SearchUserDN'} =  'CN=xx_usuario,CN=Users,DC=xx_subdominio,DC=xx_dominio';
 $Self->{'Customer::AuthModule::LDAP::UserAttr'} =  'UID';
 $Self->{'Customer::AuthModule::LDAP::UID'} =  'sAMAccountName';
 $Self->{'Customer::AuthModule::LDAP::BaseDN'} =  'OU=xx_tu_unidad_organizativa,DC=xx_subdominio,DC=xx_dominio';
 $Self->{'Customer::AuthModule::LDAP::Host'} =  'xx_nombre_de_tu_host';
 $Self->{'Customer::AuthModule'} =  'Kernel::System::CustomerAuth::LDAP';
 
 
$Self->{CustomerUser} = {
			Name => 'LDAP Backend',
			Module => 'Kernel::System::CustomerUser::LDAP',
			Params => {
			Host => 'xx_nombre_de_tu_host',
			BaseDN => 'OU=xx_tu_unidad_organizativa,DC=xx_subdominio,DC=xx_dominio',
			SSCOPE => 'sub',
			UserDN => 'CN=xx_usuario,CN=Users,DC=xx_subdominio,DC=xx_dominio',
			UserPw => 'xx_password',
			},
		CustomerKey => 'sAMAccountName',
		CustomerID => 'sAMAccountName',
		CustomerUserListFields => ['sAMAccountName', 'cn', 'mail'],
		CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail'],
		CustomerUserPostMasterSearchFields => ['mail'],
		CustomerUserNameFields => ['givenname', 'sn'],
		Map => [
		[ 'UserFirstname', 'Firstname', 'givenname', 1, 1, 'var' ],
		[ 'UserLastname', 'Lastname', 'sn', 1, 1, 'var' ],
		[ 'UserLogin', 'Login', 'sAMAccountName', 1, 1, 'var' ],
		[ 'UserEmail', 'Email', 'mail', 1, 1, 'var' ],
		[ 'UserCustomerID', 'CustomerID', 'sAMAccountName', 0, 1, 'var' ],
 
		],
 
 
};

Esto es todo!

PD: Gracias Pastor, lo que nos costó eh?
Foro OTRS

You can leave a response, or trackback from your own site.

10 Responses to “Configura tu OTRS con soporte LDAP”

  1. Alejandro says:

    July 27th, 2011 at 8:41 pm

    Buenas tardes, deckerix he realizado el mismo proceso y no logro conectar Active directory con OTRS, me puedes decir por favor si:
    …\Kernel\Config.pm  la ruta completa es: /opt/otrs/Kernel/Config.pm??

    y lo otro, en donde esta  $Self->{‘Customer::AuthModule::LDAP::SearchUserPw’} =  ‘xx_password’; debo colocar mi pass de directorio activo??

    puedo poner en  $Self->{‘Customer::AuthModule::LDAP::Host’} =  ‘xx_nombre_de_tu_host’; la Ip en lugar del nombre de la maquina??

    Muchas gracias!!

  2. deckerix says:

    July 28th, 2011 at 6:24 am

    1. /opt/otrs/Kernel/Config.pm –> Si esa es la ruta
    2. $Self->{‘Customer::AuthModule::LDAP::SearchUserPw’} –> si esta debe ser la contraseña de tu usuario del directorio activo
    3.$Self->{‘Customer::AuthModule::LDAP::Host’} –> Da igual poner la IP o el nombre de la máquina.

    Yo lo que haría sería revisar los logs del OTRS para ver que te está fallando

    Un saludo!

  3. Alejandro says:

    July 28th, 2011 at 2:48 pm

    Deckerix ya revisé el log desde OTRS porque no encuentro el archivo en el equipo, y lo que mostraba era que no se conectaba con el servidor:

    Can’t connect to indermed1.medellin.gov.local: IO::Socket::INET: Bad hostname ‘indermed1.medellin.gov.local’

    Le cambié la direccion por indermed1 y ahora el mensaje  es: 

    No UserID found for ‘alejandro.pulgarin’!

    Esto es lo que le estoy cambiando al Config.pm, de resto todo queda igual.

     $Self->{‘Customer::AuthModule::LDAP::SearchUserPw’} =  ‘XXXXXXX’; $Self->{‘Customer::AuthModule::LDAP::SearchUserDN’} =  ‘CN=alejandro.pulgarin,OU=Cuentas Administradoras,DC=inder,DC=gov,DC=local’; $Self->{‘Customer::AuthModule::LDAP::UserAttr’} =  ‘UID’; $Self->{‘Customer::AuthModule::LDAP::UID’} =  ‘sAMAccountName’; $Self->{‘Customer::AuthModule::LDAP::BaseDN’} =  ‘OU=Cuentas Administradoras,DC=inder,DC=gov,DC=local’; $Self->{‘Customer::AuthModule::LDAP::Host’} =  ‘indermed1’; $Self->{‘Customer::AuthModule’} =  ‘Kernel::System::CustomerAuth::LDAP’;  $Self->{CustomerUser} = { Name => ‘LDAP Backend’, Module => ‘Kernel::System::CustomerUser::LDAP’, Params => { Host => ‘indermed1’, BaseDN => ‘OU=Cuentas Administradoras,DC=inder,DC=gov,DC=local’, SSCOPE => ‘sub’, UserDN => ‘CN=alejandro.pulgarin,OU=Cuentas Administradoras,DC=inder,DC=gov,DC=local’, UserPw => ‘XXXXXXXX’,

    Muchas gracias en lo que me podás ayudar!!

  4. deckerix says:

    July 30th, 2011 at 6:14 pm

    Has probado a poner esta configuración en el fichero ZZZAuto.pm?

  5. Alejandro says:

    July 28th, 2011 at 11:01 pm

    Hice un cambio en el archivo y el nuevo mensaje de error que me sale es:

    Search failed! 00000000: LdapErr: DSID-0C090627, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, vece

    De nuevo muchas gracias!

  6. Alejandro says:

    August 1st, 2011 at 3:10 pm

    Si eso ya se hizo y tiene la misma configuracion.

    En este momento ya reconoce los usuarios de esa unidad organizativa donde esta el usuario con el que lo configuré, sin embargo aunque los muestra en Customer (200 usuarios aprox) no me permite iniciar con ninguna cuenta, me muestra el error:
    No UserID found for ‘soporte@inder.gov.co’! ó
    No UserID found for ‘soporte’!

    Trato de ingresar con soporte o con soporte@inder.gov.co, pero con ninguna de las cuentas ingresa.

    Otro error que salia era:
    00000000: LdapErr: DSID-0C090627, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, vece

    deckerix Gracias por estar pendiente!

  7. Carlos says:

    October 22nd, 2012 at 3:25 pm

    Saludos, les escribo porque ya hice la configuración que muestran aquí, sin embargo al momento de intentar iniciar sesión en la aplicación, cuando le doy click a autenticar,  me muestra una ventana que me pregunta si quiero abrir el archivo index.pl y cuando le doy abrir solo me abre un archivo de texto vacio, no se que hacer, espero puedan ayudarme

  8. Freddy says:

    August 19th, 2013 at 9:30 pm

    Saludos, este es un post de hace 2 años pero me ha ayudado, lo que deseo indicar es que donde dice “sAMAccountName”, a mi me funciono con “uid”, cambie todas las partes donde esta esa palabra y me ha funcionado

  9. Gabriel says:

    August 23rd, 2013 at 4:44 pm

    Funciona… !!!
    Muchas gracias por Tu ayuda.

  10. nita says:

    August 28th, 2013 at 3:31 pm

    Hola a todos,

    Estoy intentado sincronizar los grupos que tengo creados en LDAP con los grupos de OTRS, pero a los usuarios no se les da los derechos que quiere cuando un usuario pertenece a mas de un grupo en ldap. Por ejemplo, cuando un usuario pertenece al grupo1 y grupo2, solo coge los derechos del grupo1. Lo estoy haciendo con los agentes que parece que con ellos se puede realizar pero no lo consigo. Un ejemplo de código que tengo es.

    $Self->{‘AuthSyncModule::LDAP::UserSyncGroupsDefinition’} = {
    ‘cn=Unix,ou=GROUPS,dc=plaza,dc=eu’ => {
    ‘OPER’ => {
    move_into => 1,
    ro => 1,
    },
    ‘Soporte Almacenamiento-Backup’ => {
    move_into => 1,
    ro => 1,
    },
    ‘Soporte Antivirus’ => {
    move_into => 1,
    ro => 1,
    },
    ‘Soporte Unix’ => {
    rw => 1,
    },

    },
    ‘cn=Almacenamiento,ou=GROUPS,dc=plaza,dc=eu’ => {
    ‘OPER’ => {
    move_into => 1,
    ro => 1,
    },
    ‘Soporte Almacenamiento-Backup’ => {
    rw => 1,
    },
    ‘Soporte Antivirus’ => {
    move_into => 1,
    ro => 1,
    },
    ‘Soporte Unix’ => {
    move_into => 1,
    ro => 1,
    },
    }
    …..
    };

    Yo lo que quiero es que el usuario que pertence a Unix y Almacenamiento tenga derechos de rw para esos grupos y para el resto solo derechos de lectura y escalado, pero no consigo porque chocan los derechos. Se puede realizar de alguna forma??

    Muchas gracias por adelantado

Leave a Reply