SlideShare una empresa de Scribd logo
1 de 17
Descargar para leer sin conexión
INTEGRACIÓN OTRS LDAP
Guía de configuración


16/07/2010
PLENUMSOFT
ISC Manuel Jesús Soberanis Várguez
INTEGRACIÓN OTRS LDAP

Contenido

OBJETIVO ....................................................................................................................................... 1
SOFTWARE UTILIZADO ................................................................................................................... 1
REQUERIMIENTOS PARA FUNCIONAMIENTO .................................................................................. 1
CONFIGURACION ........................................................................................................................... 2
REFERENCIAS ............................................................................................................................... 15
OBJETIVO

Lograr que el sistema OTRS (Open Ticket Request System) esté integrado con el directorio activo para ser
usado como método de autenticación en el sistema, así mismo se busca la sincronización y asignación de
manera automática de grupos de otrs a los usuarios con respecto a cómo se encuentren organizados en el
árbol del directorio activo.


SOFTWARE UTILIZADO

    y   Fedora Core release 6 x86 (Sistema operativo)
    y   Servidor web apache versión 2.0
    y   Sistema gestor de base de datos MySQL 5.0.91- Community Edition (GPL)
    y   OTRS versión 2.4.7 (http://ftp.otrs.org/pub/otrs/RPMS/fedora/4/otrs-2.4.7-01.noarch.rpm )

Este documento no cubre la instalación de estos componentes, su objetivo es explicar la configuración
necesaria para que OTRS funcione en conjunto con el directorio activo.




REQUERIMIENTOS PARA FUNCIONAMIENTO

    y   Tener instalado los siguientes programas y componentes .
             o Módulo Net::LDAP instalado en el sistema. (http://ldap.perl.org/)
    y   Conocer/ Contar con los siguientes datos:
             o El nombre del servidor de directorio activo (hostname)
             o La Base DN (es el punto inicial en la jerarquía del directorio activo en el que comenzará la
                  búsqueda)
             o Nombre de usuario y contraseña de una cuenta para hacer búsquedas dentro del directorio
                  activo.
    y   Asegurarse de que existe un usuario administrador (de otrs) con el mismo nombre en otrs como en el
        directorio activo, esto servirá para la primera vez que se entre a la aplicación.




                                                                                                           1
CONFIGURACION

El archivo donde residirán todas las configuraciones se encuentra en la siguiente ubicación.

/<OTRS_HOME>/otrs/Kernel/Config.pm

Este archivo se interpreta cuando se accede al sistema, de dicho archivo se toman todas las configuraciones
que serán cargadas durante la ejecución del software.

Una vez abierto el archivo y se esté listo para editar su contenido, lo primero que hay que hacer es agregar la
siguiente línea justo después de las configuraciones que el sistema trae por default, esto es fácil identificar,
pues trae una leyenda al final que dice: Start your own config options!!!.

$Self->{'AuthModule'} = Kernel::System::Auth::LDAP';

Esto indica que el sistema utilizará LDAP como tipo de autenticación, ahora hay que agregar la configuración
para poder acceder al directorio activo.

$Self->{'AuthModule::LDAP::Host'} = 'DICONSAADPHDC1.diconsa.net';

$Self->{'AuthModule::LDAP::BaseDN'} = 'ou=Usuarios,dc=diconsa,dc=net';

$Self->{'AuthModule::LDAP::UID'} = 'sAMAccountName';

$Self->{'AuthModule::LDAP::UserAttr'} = 'sAMAccountName';

Ahora se le agregan los parámetros para realizar las búsquedas.

$Self->{'AuthModule::LDAP::SearchUserDN'} = ŧnombre_usuario@diconsa.gob.mxŨ;

$Self->{'AuthModule::LDAP::SearchUserPw'} = 'password_usuario';

$Self->{'AuthModule::LDAP::Params'} = {

         port => 389,

         timeout => 120,

         async => 0,

         version => 3,

};




Ya teniendo configurado todo lo anterior, hay que configurar otrs para hacer búsquedas de clientes, es decir
que tome los clientes del mismo directorio activo. Para esto hay que agregar las siguientes líneas.


                                                                                                               2
$Self->{CustomerUser} = {

      Module => 'Kernel::System::CustomerUser::LDAP',

      Params => {

      Host => 'DICONSAADPHDC1.diconsa.net',

      BaseDN => 'ou=Usuarios,dc=diconsa,dc=net',

      SSCOPE => 'sub',

      UserDN =>'nombre_usuario@diconsa.gob.mx',

      UserPw => 'password_usuario',

    },

# customer unique id

    CustomerKey => 'sAMAccountName',

    # customer #

    CustomerID => 'mail',

    CustomerUserListFields => ['sAMAccountName', 'cn', 'mail'],

    CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail'],

    CustomerUserSearchPrefix => '',

    CustomerUserSearchSuffix => '*',

    CustomerUserSearchListLimit => 250,

    CustomerUserPostMasterSearchFields => ['mail'],

    CustomerUserNameFields => ['givenname', 'sn'],

    Map => [

      # note: Login, Email and CustomerID needed!

      # var, frontend, storage, shown, required, storage-type

      #[ 'UserSalutation', 'Title', 'title', 1, 0, 'var' ],

      [ 'UserFirstname', 'Firstname', 'givenname', 1, 1, 'var' ],

      [ 'UserLastname', 'Lastname', 'sn', 1, 1, 'var' ],

      [ 'UserLogin', 'Login', 'sAMAccountName', 1, 1, 'var' ],

                                                                    3
[ 'UserEmail', 'Email', 'mail', 1, 1, 'var' ],

         [ 'UserCustomerID', 'CustomerID', 'sAMAccountName', 0, 1, 'var' ],

         [ 'UserPhone', 'Phone', 'telephoneNumber', 1, 0, 'var' ],

         [ 'UserAddress', 'Address', 'department', 1, 0, 'var' ],

         [ 'UserComment', 'Comment', 'description', 1, 0, 'var' ],

     ],

    };

Lo que viene a continuación es para hacer la sincronía automática de los usuarios de otrs con el directorio
activo, esto es, sincronizar o asignar grupos y permisos al usuario de forma automática dependiendo de su
grupo o unidad operativa en el directorio activo.

Se tienen que configurar los siguientes parámetros para que funcione adecuadamente la sincronía.

$Self->{'AuthSyncModule'} = 'Kernel::System::Auth::Sync::LDAP';

$Self->{'AuthSyncModule::LDAP::Host'} ='DICONSAADPHDC1.diconsa.net';

$Self->{'AuthSyncModule::LDAP::BaseDN'} = 'ou=Usuarios,dc=diconsa,dc=net';

$Self->{'AuthSyncModule::LDAP::UID'} = 'sAMAccountName';

$Self->{'AuthSyncModule::LDAP::AccessAttr'} = 'distinguishedName';

$Self->{'AuthSyncModule::LDAP::SearchUserDN'} = 'nombre_usuario@diconsa.gob.mx';

$Self->{'AuthSyncModule::LDAP::SearchUserPw'} = ŧpassword_usuarioŨ

$Self->{'AuthSyncModule::LDAP::UserSyncMap'} = {

# DB -> LDAP

UserFirstname => 'givenName',

UserLastname       => 'sn',

UserEmail          => 'mail',

};

A continuación, hay que agregar la configuración que especifica los permisos efectivos al usuario, de acuerdo
a su ubicación en el árbol del directorio activo.

El siguiente código determina los grupos y permisos de los usuarios que ingresan al sistema.

$Self->{'AuthSyncModule::LDAP::UserSyncAttributeGroupsDefinition'}=

{

                                                                                                              4
'memberOf'=>

      {              #Usuarios desarrollo de sistemas

'CN=gsg_Desarrollo de Sistemas,OU=Grupos,DC=diconsa,DC=net'=>

                                 {

                                                        #empiezan permisos por grupo

                                 'gpoUsuarioFinal'=>

                                        {

                                        ro=>1,

                                        create=>1,

                                        priority=>1,

                                        },

                                 'gpoUsuarioInformatico'=>

                                        {

                                        ro=>1,

                                        create=>1,

                                        owner=>1,

                                        priority=>1,

                                        rw=>1,

                                        },

                                 'gpoUsuarioBasico'=>

                                        {

                                             # permission

                                             ro => 0,

                                        },

                                 'gpoGerenciaInformatica'=>

                                        {

                                             rw => 1,

                                                                                   5
ro => 1,

                                      },

                                'gpoMesa'=>

                                      {

                                      ro=>1,

                                      move_into=>1,

                                      },

                   },

            #usuarios desarrollo de sistemas

'CN=Grupo Gerencia de Informatica,CN=Users,DC=diconsa,DC=net'=>

                   {

                                                      #empiezan permisos por grupo

                                'gpoUsuarioFinal'=>

                                      {

                                      ro=>1,

                                      create=>1,

                                      priority=>1,

                                      },

                                'gpoUsuarioInformatico'=>

                                      {

                                      ro=>1,

                                      create=>1,

                                      owner=>1,

                                      priority=>1,

                                      rw=>1,

                                      },

                                'gpoUsuarioBasico'=>

                                      {

                                                                                 6
# permission

                        ro => 0,

                   },

            'gpoGerenciaInformatica'=>

                   {

                        rw => 1,

                        ro => 1,

                   },

            'gpoMesa'=>

                   {

                   ro=>1,

                   move_into=>1,

                   },



},

#Usuarios informaticos

'CN=gsg_Informaticos,OU=Grupos,DC=diconsa,DC=net'=>

{

                            'gpoUsuarioFinal' =>

                            {

                                 # permission

                            ro => 1,

                            create=>1,

                            owner=>1,

                            priority=>1,

                            },

                   #el mismo

                   'gpoUsuarioInformatico' =>

                                                      7
{

                              # permission

                         ro => 1,

                                  create=>1,

                                  owner=>1,

                                  priority=>1,

                                  rw=>1,

                         },

                   'gpoUsuarioBasico' =>

                         {

                                  # permission

                                  ro => 0,

                         },

                   'gpoGerenciaInformatica' =>

                         {

                              # permission

                                  ro => 0,

                         },

                   'gpoMesa' =>

                         {

                              # permission

                    ro => 0,

                         move_into=>1,

                         },



}     ,

#usuarios finales o usuarios de sistemas

'CN=gsg_usuariossistemas,OU=Grupos,DC=diconsa,DC=net'=>

                                                          8
{

                     #el mismo

                           'gpoUsuarioFinal'=>

                                 {

                                 ro=>1,

                                 rw=>1,

                                 },

                           'gpoUsuarioInformatico'=>

                                 {

                                 ro=>0,

                                 },

                           'gpoUsuarioBasico' =>

                                 {

                                      # permission

                                      ro => 0,

                                 },

                           'gpoGerenciaInformatica' =>

                                 {

                                      ro => 0,

                                 },

                           'gpoMesa'=>

                                 {

                                 move_into=>1,

                                 },

            },



},

'sAMAccountName'=>

                                                         9
{



      'gabrielt'=>

            {

                     'admin'=>{rw=>1, ro=>1,},

                   'gpoUsuarioFinal'=>{
ro=>1,create=>1,priority=>1,},

                   'gpoUsuarioInformatico'=>{
ro=>1,create=>1,owner=>1,priority=>1,rw=>1,},

                     'gpoUsuarioBasico'=> {ro => 0,},

                     'gpoGerenciaInformatica'=> {rw => 1,ro => 1,},

                     'gpoMesa'=>{ ro=>1,move_into=>1,},

            },

      'dba'=>

            {

                     'admin'=>{rw=>1, ro=>1,},

                   'gpoUsuarioFinal'=>{
ro=>1,create=>1,priority=>1,},

                   'gpoUsuarioInformatico'=>{
ro=>1,create=>1,owner=>1,priority=>1,rw=>1,},

                     'gpoUsuarioBasico'=> {ro => 0,},

                     'gpoGerenciaInformatica'=> {rw => 1,ro => 1,},

                     'gpoMesa'=>{ ro=>1,move_into=>1,},

            },

      'psevilla'=>

            {

                     'gpoUsuarioFinal'=>{ro=>1,},

                     'gpoUsuarioInformatico'=>{ro=>1,},

                     'gpoMesa'=>{rw=>1, ro=>1,},



                                                                      10
'gpoGerenciaInformatica'=>{ro=>1, move_into=>1,},

                    },

     'pcamacho'=>

                    {

                         'gpoUsuarioFinal'=>{ro=>1,},

                         'gpoUsuarioInformatico'=>{ro=>1,},

                         'gpoMesa'=>{rw=>1, ro=>1,},

                         'gpoGerenciaInformatica'=>{ro=>1, move_into=>1,},

                    },

     'soporte-sif'=>

                    {

                         'gpoUsuarioFinal'=>{ro=>1,},

                         'gpoUsuarioInformatico'=>{ro=>1,},

                         'gpoMesa'=>{rw=>1, ro=>1,},

                         'gpoGerenciaInformatica'=>{ro=>1, move_into=>1,},

                    },

           'soporte-sistemas'=>

                    {

                         'gpoUsuarioFinal'=>{ro=>1,},

                         'gpoUsuarioInformatico'=>{ro=>1,},

                         'gpoMesa'=>{rw=>1, ro=>1,},

                         'gpoGerenciaInformatica'=>{ro=>1, move_into=>1,},

                    },

     },




};



                                                                             11
Ahora asignamos los roles, de acuerdo al directorio activo.

$Self->{'AuthSyncModule::LDAP::UserSyncRolesDefinition'} =

        {

      'OU=Usuarios Sistemas,OU=Usuarios,DC=diconsa,DC=net'=>{ 'rolUsuarioFinal'
=> 1, },

      'OU=Informaticos,OU=Usuarios,DC=diconsa,DC=net'=>{
'rolUsuarioInformatico' => 1, },

      'OU=Usuarios Basicos,OU=Usuarios,DC=diconsa,DC=net'=>{ 'rolUsuarioBasico'
=> 1, },

      'OU=Desarrollo de sistemas,OU=Usuarios,DC=diconsa,DC=net'=>{
'rolGerenciaInformatica' => 1, },



      'CN=PEDRO PABLO SEVILLA BAUTISTA,OU=Desarrollo de
sistemas,OU=Usuarios,DC=diconsa,DC=net'=>{'rolMesa'=>1,},

      'CN=PEDRO PABLO SEVILLA BAUTISTA,OU=Desarrollo de
sistemas,OU=Usuarios,DC=diconsa,DC=net'=>{'rolGerenciaInformatica'=>0,},



      'CN=SOPORTE EXTERNO A SISTEMAS,OU=Oficinas Centrales,OU=Usuarios
Sistemas,OU=Usuarios,DC=diconsa,DC=net'=>{'rolMesa'=>1,},

      'CN=SOPORTE EXTERNO A SISTEMAS,OU=Oficinas Centrales,OU=Usuarios
Sistemas,OU=Usuarios,DC=diconsa,DC=net'=>{'rolGerenciaInformatica'=>0,},



      'CN=PAOLA BERENICE CAMACHO BRISEÑO,OU=Desarrollo de
sistemas,OU=Usuarios,DC=diconsa,DC=net'=>{'rolMesa'=>1,},

      'CN=PAOLA BERENICE CAMACHO BRISEÑO,OU=Desarrollo de
sistemas,OU=Usuarios,DC=diconsa,DC=net'=>{'rolGerenciaInformatica'=>0,},



      'CN=SOPORTE SIF,OU=Oficinas Centrales,OU=Usuarios
Basicos,OU=Usuarios,DC=diconsa,DC=net'=>{'rolMesa'=>1,},

      'CN=SOPORTE SIF,OU=Oficinas Centrales,OU=Usuarios
Basicos,OU=Usuarios,DC=diconsa,DC=net'=>{'rolGerenciaInformatica'=>0,},

        };




                                                                             12
El siguiente código es para permitir la autenticación de usuarios finales (customers).

Primero indicamos que los usuarios serán autenticados por el directorio activo.

  $Self->{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::LDAP';

  $Self->{'Customer::AuthModule::LDAP::Host'} = 'DICONSAADPHDC1.diconsa.net';

  $Self->{'Customer::AuthModule::LDAP::BaseDN'} =
'ou=Usuarios,dc=diconsa,dc=net';

  $Self->{'Customer::AuthModule::LDAP::UID'} = 'sAMAccountName';



Lo siguiente es la configuración utilizada para permitir las búsquedas en el directorio activo.

$Self->{'Customer::AuthModule::LDAP::SearchUserDN'} =
'nombre_usuario@diconsa.gob.mx';

$Self->{'Customer::AuthModule::LDAP::SearchUserPw'} = 'password_usuario';


Ahora hay que configurar las propiedades que serán recuperadas desde el directorio activo y estarán
disponibles en el sistema.

$Self->{CustomerUser} = {

        Module => 'Kernel::System::CustomerUser::LDAP',

        Params => {

        Host => 'DICONSAADPHDC1.diconsa.net',

        BaseDN => 'ou=Usuarios,dc=diconsa,dc=net',

        SSCOPE => 'sub',

        UserDN =>'nombre_usuario@diconsa.gob.mx',

        UserPw => 'password_usuario',

     },

# customer unique id

     CustomerKey => 'sAMAccountName',

     # customer #

     CustomerID => 'mail',

     CustomerUserListFields => ['sAMAccountName', 'cn', 'mail'],


                                                                                                      13
CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail'],

 CustomerUserSearchPrefix => '',

 CustomerUserSearchSuffix => '*',

 CustomerUserSearchListLimit => 250,

 CustomerUserPostMasterSearchFields => ['mail'],

 CustomerUserNameFields => ['givenname', 'sn'],

 Map => [

     # note: Login, Email and CustomerID needed!
     # var, frontend, storage, shown, required, storage-type
     #[ 'UserSalutation', 'Title', 'title', 1, 0, 'var' ],

     [ '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' ],

     [ 'UserPhone', 'Phone', 'telephoneNumber', 1, 0, 'var' ],

     [ 'UserAddress', 'Address', 'department', 1, 0, 'var' ],

     [ 'UserComment', 'Comment', 'description', 1, 0, 'var' ],

 ],

};




                                                                          14
REFERENCIAS

http://doc.otrs.org/1.3/en/html/ldap-integration.html




                                                        15

Más contenido relacionado

Similar a Integración LDAP - OTRS

Escribir plugins para Nagios en Perl
Escribir plugins para Nagios en PerlEscribir plugins para Nagios en Perl
Escribir plugins para Nagios en PerlJose Luis Martínez
 
Php y my sql con manejo de sesiones
Php y my sql con manejo de sesionesPhp y my sql con manejo de sesiones
Php y my sql con manejo de sesionescapo1988
 
Informe grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencaInforme grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencapaulcuenca9
 
PostgreSQL: Un motor Impulsado por una comunidad
PostgreSQL: Un motor Impulsado por una comunidadPostgreSQL: Un motor Impulsado por una comunidad
PostgreSQL: Un motor Impulsado por una comunidadSantiago Zarate
 
Presentación charla puppet madrid devops 2012
Presentación charla puppet madrid devops 2012Presentación charla puppet madrid devops 2012
Presentación charla puppet madrid devops 2012Jorge Moratilla Porras
 
Wp config.php
Wp config.phpWp config.php
Wp config.phpgregozz
 
Plpgsql seguridad bd_postgresql_2011
Plpgsql seguridad bd_postgresql_2011Plpgsql seguridad bd_postgresql_2011
Plpgsql seguridad bd_postgresql_2011Lennin Caro
 
PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la DebianLeonardo Cezar
 
PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la DebianLeonardo Cezar
 

Similar a Integración LDAP - OTRS (14)

Escribir plugins para Nagios en Perl
Escribir plugins para Nagios en PerlEscribir plugins para Nagios en Perl
Escribir plugins para Nagios en Perl
 
Php y my sql con manejo de sesiones
Php y my sql con manejo de sesionesPhp y my sql con manejo de sesiones
Php y my sql con manejo de sesiones
 
Informe grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencaInforme grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuenca
 
EXAMEN
EXAMENEXAMEN
EXAMEN
 
PostgreSQL: Un motor Impulsado por una comunidad
PostgreSQL: Un motor Impulsado por una comunidadPostgreSQL: Un motor Impulsado por una comunidad
PostgreSQL: Un motor Impulsado por una comunidad
 
Sesion 3
Sesion 3Sesion 3
Sesion 3
 
APIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptxAPIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptx
 
Código Bonito con PHP
Código Bonito con PHPCódigo Bonito con PHP
Código Bonito con PHP
 
Presentación charla puppet madrid devops 2012
Presentación charla puppet madrid devops 2012Presentación charla puppet madrid devops 2012
Presentación charla puppet madrid devops 2012
 
Wp config.php
Wp config.phpWp config.php
Wp config.php
 
Php
PhpPhp
Php
 
Plpgsql seguridad bd_postgresql_2011
Plpgsql seguridad bd_postgresql_2011Plpgsql seguridad bd_postgresql_2011
Plpgsql seguridad bd_postgresql_2011
 
PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la Debian
 
PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la Debian
 

Integración LDAP - OTRS

  • 1. INTEGRACIÓN OTRS LDAP Guía de configuración 16/07/2010 PLENUMSOFT ISC Manuel Jesús Soberanis Várguez
  • 2. INTEGRACIÓN OTRS LDAP Contenido OBJETIVO ....................................................................................................................................... 1 SOFTWARE UTILIZADO ................................................................................................................... 1 REQUERIMIENTOS PARA FUNCIONAMIENTO .................................................................................. 1 CONFIGURACION ........................................................................................................................... 2 REFERENCIAS ............................................................................................................................... 15
  • 3. OBJETIVO Lograr que el sistema OTRS (Open Ticket Request System) esté integrado con el directorio activo para ser usado como método de autenticación en el sistema, así mismo se busca la sincronización y asignación de manera automática de grupos de otrs a los usuarios con respecto a cómo se encuentren organizados en el árbol del directorio activo. SOFTWARE UTILIZADO y Fedora Core release 6 x86 (Sistema operativo) y Servidor web apache versión 2.0 y Sistema gestor de base de datos MySQL 5.0.91- Community Edition (GPL) y OTRS versión 2.4.7 (http://ftp.otrs.org/pub/otrs/RPMS/fedora/4/otrs-2.4.7-01.noarch.rpm ) Este documento no cubre la instalación de estos componentes, su objetivo es explicar la configuración necesaria para que OTRS funcione en conjunto con el directorio activo. REQUERIMIENTOS PARA FUNCIONAMIENTO y Tener instalado los siguientes programas y componentes . o Módulo Net::LDAP instalado en el sistema. (http://ldap.perl.org/) y Conocer/ Contar con los siguientes datos: o El nombre del servidor de directorio activo (hostname) o La Base DN (es el punto inicial en la jerarquía del directorio activo en el que comenzará la búsqueda) o Nombre de usuario y contraseña de una cuenta para hacer búsquedas dentro del directorio activo. y Asegurarse de que existe un usuario administrador (de otrs) con el mismo nombre en otrs como en el directorio activo, esto servirá para la primera vez que se entre a la aplicación. 1
  • 4. CONFIGURACION El archivo donde residirán todas las configuraciones se encuentra en la siguiente ubicación. /<OTRS_HOME>/otrs/Kernel/Config.pm Este archivo se interpreta cuando se accede al sistema, de dicho archivo se toman todas las configuraciones que serán cargadas durante la ejecución del software. Una vez abierto el archivo y se esté listo para editar su contenido, lo primero que hay que hacer es agregar la siguiente línea justo después de las configuraciones que el sistema trae por default, esto es fácil identificar, pues trae una leyenda al final que dice: Start your own config options!!!. $Self->{'AuthModule'} = Kernel::System::Auth::LDAP'; Esto indica que el sistema utilizará LDAP como tipo de autenticación, ahora hay que agregar la configuración para poder acceder al directorio activo. $Self->{'AuthModule::LDAP::Host'} = 'DICONSAADPHDC1.diconsa.net'; $Self->{'AuthModule::LDAP::BaseDN'} = 'ou=Usuarios,dc=diconsa,dc=net'; $Self->{'AuthModule::LDAP::UID'} = 'sAMAccountName'; $Self->{'AuthModule::LDAP::UserAttr'} = 'sAMAccountName'; Ahora se le agregan los parámetros para realizar las búsquedas. $Self->{'AuthModule::LDAP::SearchUserDN'} = ŧnombre_usuario@diconsa.gob.mxŨ; $Self->{'AuthModule::LDAP::SearchUserPw'} = 'password_usuario'; $Self->{'AuthModule::LDAP::Params'} = { port => 389, timeout => 120, async => 0, version => 3, }; Ya teniendo configurado todo lo anterior, hay que configurar otrs para hacer búsquedas de clientes, es decir que tome los clientes del mismo directorio activo. Para esto hay que agregar las siguientes líneas. 2
  • 5. $Self->{CustomerUser} = { Module => 'Kernel::System::CustomerUser::LDAP', Params => { Host => 'DICONSAADPHDC1.diconsa.net', BaseDN => 'ou=Usuarios,dc=diconsa,dc=net', SSCOPE => 'sub', UserDN =>'nombre_usuario@diconsa.gob.mx', UserPw => 'password_usuario', }, # customer unique id CustomerKey => 'sAMAccountName', # customer # CustomerID => 'mail', CustomerUserListFields => ['sAMAccountName', 'cn', 'mail'], CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail'], CustomerUserSearchPrefix => '', CustomerUserSearchSuffix => '*', CustomerUserSearchListLimit => 250, CustomerUserPostMasterSearchFields => ['mail'], CustomerUserNameFields => ['givenname', 'sn'], Map => [ # note: Login, Email and CustomerID needed! # var, frontend, storage, shown, required, storage-type #[ 'UserSalutation', 'Title', 'title', 1, 0, 'var' ], [ 'UserFirstname', 'Firstname', 'givenname', 1, 1, 'var' ], [ 'UserLastname', 'Lastname', 'sn', 1, 1, 'var' ], [ 'UserLogin', 'Login', 'sAMAccountName', 1, 1, 'var' ], 3
  • 6. [ 'UserEmail', 'Email', 'mail', 1, 1, 'var' ], [ 'UserCustomerID', 'CustomerID', 'sAMAccountName', 0, 1, 'var' ], [ 'UserPhone', 'Phone', 'telephoneNumber', 1, 0, 'var' ], [ 'UserAddress', 'Address', 'department', 1, 0, 'var' ], [ 'UserComment', 'Comment', 'description', 1, 0, 'var' ], ], }; Lo que viene a continuación es para hacer la sincronía automática de los usuarios de otrs con el directorio activo, esto es, sincronizar o asignar grupos y permisos al usuario de forma automática dependiendo de su grupo o unidad operativa en el directorio activo. Se tienen que configurar los siguientes parámetros para que funcione adecuadamente la sincronía. $Self->{'AuthSyncModule'} = 'Kernel::System::Auth::Sync::LDAP'; $Self->{'AuthSyncModule::LDAP::Host'} ='DICONSAADPHDC1.diconsa.net'; $Self->{'AuthSyncModule::LDAP::BaseDN'} = 'ou=Usuarios,dc=diconsa,dc=net'; $Self->{'AuthSyncModule::LDAP::UID'} = 'sAMAccountName'; $Self->{'AuthSyncModule::LDAP::AccessAttr'} = 'distinguishedName'; $Self->{'AuthSyncModule::LDAP::SearchUserDN'} = 'nombre_usuario@diconsa.gob.mx'; $Self->{'AuthSyncModule::LDAP::SearchUserPw'} = ŧpassword_usuarioŨ $Self->{'AuthSyncModule::LDAP::UserSyncMap'} = { # DB -> LDAP UserFirstname => 'givenName', UserLastname => 'sn', UserEmail => 'mail', }; A continuación, hay que agregar la configuración que especifica los permisos efectivos al usuario, de acuerdo a su ubicación en el árbol del directorio activo. El siguiente código determina los grupos y permisos de los usuarios que ingresan al sistema. $Self->{'AuthSyncModule::LDAP::UserSyncAttributeGroupsDefinition'}= { 4
  • 7. 'memberOf'=> { #Usuarios desarrollo de sistemas 'CN=gsg_Desarrollo de Sistemas,OU=Grupos,DC=diconsa,DC=net'=> { #empiezan permisos por grupo 'gpoUsuarioFinal'=> { ro=>1, create=>1, priority=>1, }, 'gpoUsuarioInformatico'=> { ro=>1, create=>1, owner=>1, priority=>1, rw=>1, }, 'gpoUsuarioBasico'=> { # permission ro => 0, }, 'gpoGerenciaInformatica'=> { rw => 1, 5
  • 8. ro => 1, }, 'gpoMesa'=> { ro=>1, move_into=>1, }, }, #usuarios desarrollo de sistemas 'CN=Grupo Gerencia de Informatica,CN=Users,DC=diconsa,DC=net'=> { #empiezan permisos por grupo 'gpoUsuarioFinal'=> { ro=>1, create=>1, priority=>1, }, 'gpoUsuarioInformatico'=> { ro=>1, create=>1, owner=>1, priority=>1, rw=>1, }, 'gpoUsuarioBasico'=> { 6
  • 9. # permission ro => 0, }, 'gpoGerenciaInformatica'=> { rw => 1, ro => 1, }, 'gpoMesa'=> { ro=>1, move_into=>1, }, }, #Usuarios informaticos 'CN=gsg_Informaticos,OU=Grupos,DC=diconsa,DC=net'=> { 'gpoUsuarioFinal' => { # permission ro => 1, create=>1, owner=>1, priority=>1, }, #el mismo 'gpoUsuarioInformatico' => 7
  • 10. { # permission ro => 1, create=>1, owner=>1, priority=>1, rw=>1, }, 'gpoUsuarioBasico' => { # permission ro => 0, }, 'gpoGerenciaInformatica' => { # permission ro => 0, }, 'gpoMesa' => { # permission ro => 0, move_into=>1, }, } , #usuarios finales o usuarios de sistemas 'CN=gsg_usuariossistemas,OU=Grupos,DC=diconsa,DC=net'=> 8
  • 11. { #el mismo 'gpoUsuarioFinal'=> { ro=>1, rw=>1, }, 'gpoUsuarioInformatico'=> { ro=>0, }, 'gpoUsuarioBasico' => { # permission ro => 0, }, 'gpoGerenciaInformatica' => { ro => 0, }, 'gpoMesa'=> { move_into=>1, }, }, }, 'sAMAccountName'=> 9
  • 12. { 'gabrielt'=> { 'admin'=>{rw=>1, ro=>1,}, 'gpoUsuarioFinal'=>{ ro=>1,create=>1,priority=>1,}, 'gpoUsuarioInformatico'=>{ ro=>1,create=>1,owner=>1,priority=>1,rw=>1,}, 'gpoUsuarioBasico'=> {ro => 0,}, 'gpoGerenciaInformatica'=> {rw => 1,ro => 1,}, 'gpoMesa'=>{ ro=>1,move_into=>1,}, }, 'dba'=> { 'admin'=>{rw=>1, ro=>1,}, 'gpoUsuarioFinal'=>{ ro=>1,create=>1,priority=>1,}, 'gpoUsuarioInformatico'=>{ ro=>1,create=>1,owner=>1,priority=>1,rw=>1,}, 'gpoUsuarioBasico'=> {ro => 0,}, 'gpoGerenciaInformatica'=> {rw => 1,ro => 1,}, 'gpoMesa'=>{ ro=>1,move_into=>1,}, }, 'psevilla'=> { 'gpoUsuarioFinal'=>{ro=>1,}, 'gpoUsuarioInformatico'=>{ro=>1,}, 'gpoMesa'=>{rw=>1, ro=>1,}, 10
  • 13. 'gpoGerenciaInformatica'=>{ro=>1, move_into=>1,}, }, 'pcamacho'=> { 'gpoUsuarioFinal'=>{ro=>1,}, 'gpoUsuarioInformatico'=>{ro=>1,}, 'gpoMesa'=>{rw=>1, ro=>1,}, 'gpoGerenciaInformatica'=>{ro=>1, move_into=>1,}, }, 'soporte-sif'=> { 'gpoUsuarioFinal'=>{ro=>1,}, 'gpoUsuarioInformatico'=>{ro=>1,}, 'gpoMesa'=>{rw=>1, ro=>1,}, 'gpoGerenciaInformatica'=>{ro=>1, move_into=>1,}, }, 'soporte-sistemas'=> { 'gpoUsuarioFinal'=>{ro=>1,}, 'gpoUsuarioInformatico'=>{ro=>1,}, 'gpoMesa'=>{rw=>1, ro=>1,}, 'gpoGerenciaInformatica'=>{ro=>1, move_into=>1,}, }, }, }; 11
  • 14. Ahora asignamos los roles, de acuerdo al directorio activo. $Self->{'AuthSyncModule::LDAP::UserSyncRolesDefinition'} = { 'OU=Usuarios Sistemas,OU=Usuarios,DC=diconsa,DC=net'=>{ 'rolUsuarioFinal' => 1, }, 'OU=Informaticos,OU=Usuarios,DC=diconsa,DC=net'=>{ 'rolUsuarioInformatico' => 1, }, 'OU=Usuarios Basicos,OU=Usuarios,DC=diconsa,DC=net'=>{ 'rolUsuarioBasico' => 1, }, 'OU=Desarrollo de sistemas,OU=Usuarios,DC=diconsa,DC=net'=>{ 'rolGerenciaInformatica' => 1, }, 'CN=PEDRO PABLO SEVILLA BAUTISTA,OU=Desarrollo de sistemas,OU=Usuarios,DC=diconsa,DC=net'=>{'rolMesa'=>1,}, 'CN=PEDRO PABLO SEVILLA BAUTISTA,OU=Desarrollo de sistemas,OU=Usuarios,DC=diconsa,DC=net'=>{'rolGerenciaInformatica'=>0,}, 'CN=SOPORTE EXTERNO A SISTEMAS,OU=Oficinas Centrales,OU=Usuarios Sistemas,OU=Usuarios,DC=diconsa,DC=net'=>{'rolMesa'=>1,}, 'CN=SOPORTE EXTERNO A SISTEMAS,OU=Oficinas Centrales,OU=Usuarios Sistemas,OU=Usuarios,DC=diconsa,DC=net'=>{'rolGerenciaInformatica'=>0,}, 'CN=PAOLA BERENICE CAMACHO BRISEÑO,OU=Desarrollo de sistemas,OU=Usuarios,DC=diconsa,DC=net'=>{'rolMesa'=>1,}, 'CN=PAOLA BERENICE CAMACHO BRISEÑO,OU=Desarrollo de sistemas,OU=Usuarios,DC=diconsa,DC=net'=>{'rolGerenciaInformatica'=>0,}, 'CN=SOPORTE SIF,OU=Oficinas Centrales,OU=Usuarios Basicos,OU=Usuarios,DC=diconsa,DC=net'=>{'rolMesa'=>1,}, 'CN=SOPORTE SIF,OU=Oficinas Centrales,OU=Usuarios Basicos,OU=Usuarios,DC=diconsa,DC=net'=>{'rolGerenciaInformatica'=>0,}, }; 12
  • 15. El siguiente código es para permitir la autenticación de usuarios finales (customers). Primero indicamos que los usuarios serán autenticados por el directorio activo. $Self->{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::LDAP'; $Self->{'Customer::AuthModule::LDAP::Host'} = 'DICONSAADPHDC1.diconsa.net'; $Self->{'Customer::AuthModule::LDAP::BaseDN'} = 'ou=Usuarios,dc=diconsa,dc=net'; $Self->{'Customer::AuthModule::LDAP::UID'} = 'sAMAccountName'; Lo siguiente es la configuración utilizada para permitir las búsquedas en el directorio activo. $Self->{'Customer::AuthModule::LDAP::SearchUserDN'} = 'nombre_usuario@diconsa.gob.mx'; $Self->{'Customer::AuthModule::LDAP::SearchUserPw'} = 'password_usuario'; Ahora hay que configurar las propiedades que serán recuperadas desde el directorio activo y estarán disponibles en el sistema. $Self->{CustomerUser} = { Module => 'Kernel::System::CustomerUser::LDAP', Params => { Host => 'DICONSAADPHDC1.diconsa.net', BaseDN => 'ou=Usuarios,dc=diconsa,dc=net', SSCOPE => 'sub', UserDN =>'nombre_usuario@diconsa.gob.mx', UserPw => 'password_usuario', }, # customer unique id CustomerKey => 'sAMAccountName', # customer # CustomerID => 'mail', CustomerUserListFields => ['sAMAccountName', 'cn', 'mail'], 13
  • 16. CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail'], CustomerUserSearchPrefix => '', CustomerUserSearchSuffix => '*', CustomerUserSearchListLimit => 250, CustomerUserPostMasterSearchFields => ['mail'], CustomerUserNameFields => ['givenname', 'sn'], Map => [ # note: Login, Email and CustomerID needed! # var, frontend, storage, shown, required, storage-type #[ 'UserSalutation', 'Title', 'title', 1, 0, 'var' ], [ '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' ], [ 'UserPhone', 'Phone', 'telephoneNumber', 1, 0, 'var' ], [ 'UserAddress', 'Address', 'department', 1, 0, 'var' ], [ 'UserComment', 'Comment', 'description', 1, 0, 'var' ], ], }; 14