Вы находитесь на странице: 1из 11

Object 1

«OTRS 6»
«Dirección de Sistema»

Integración de LDAP al
Aplicativo

Documento confidencial
Tabla de contenido
1.Objetivo................................................................................................... 3
2.Descripción General................................................................................. 3
3.Descripción Detallada.............................................................................. 3
4.Plan de Configuración.............................................................................. 9
5.Glosario.................................................................................................... 9
6.Historia de Cambios............................................................................... 10
7.Aprobaciones......................................................................................... 10

Documento confidencial
Especificación Funcional

1. Objetivo
Es de este documento es guiar a los analistas de implementación para puedan
configuración del sistema OTRS 6 con el fin de integrar el protocolo LDAP al
modulo de autenticación de los usuarios y agentes (Técnicos de soporte) contra el
sistema de gestión de incidentes TI .

2. Descripción General

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á : el fichero ZZZAuto.pm que se
encuentra en la ruta “..\Kernel\Config\Files\ZZZAuto.pm“ y el Config.pm que se
encuentra en la ruta “..\Kernel\Config.pm“.
Deberemos indicarle a OTRS cómo deberá almacenar la información que recupera
del directorio activo mediante el protolo LDAP. Debemos añadir dicha configuración
en el único archivo.

3. Descripción Detallada
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';

Y en el archivo Config.pm deberá contener la siguiente información:

Documento confidencial
sub Load {
my $Self = shift;
# ---------------------------------------------------- #
# ---------------------------------------------------- #
# #
# Inicio de sus propias opciones de configuración!!! #
# ---------------------------------------------------- #
# 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'],

Documento confidencial
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' ],

],

};

Si tiene un directorio LDAP con los datos de sus clientes, puede usarlo como back-
end del cliente con OTRS, como se muestra en el Ejemplo a continuacion.

Ejemplo 3.1. Configuracion de un backend de cliente LDAP

-------------

# CustomerUser

# (cliente ldap backend y configuraciones)

$Self->{CustomerUser} = {

Name => 'LDAP Data Source',

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

Params => {

# ldap host

Host => 'nombreLDAP.mppre.gob.ve',

# ldap base dn

BaseDN => 'ou=seas,o=csuh',

# alcance de búsqueda (one|sub)

SSCOPE => 'sub',

# Lo siguiente es válido pero solo sería necesario si el

# El usuario anónimo no tiene permiso para leer desde el árbol LDAP

Documento confidencial
UserDN => '',

UserPw => '',

# En caso de que desee agregrar siempre un filtro a cada consulta ldap , use

# Esta es opcional. e. g. AlwaysFilter => '(mail=*)' or AlwaysFilter =>


'(objectclass=user)'

AlwaysFilter => '',

# Si charset de su servidor ldap es iso-8859-1, utilice este:

# SourceCharset => 'iso-8859-1',

# Net::LDAP new params (si es necesario – para otener mas información , consulte
perldoc Net::LDAP)

Params => {

port => 389,

timeout => 120,

async => 0,

version => 3,

},

},

# customer unique id

CustomerKey => 'uid',

# customer #

CustomerID => 'mail',

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

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

CustomerUserSearchPrefix => '',

CustomerUserSearchSuffix => '*',

Documento confidencial
CustomerUserSearchListLimit => 250,

CustomerUserPostMasterSearchFields => ['mail'],

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

# no mostrar entradas propias en el panel del cliente, CompanyTickets

CustomerUserExcludePrimaryCustomerID => 0,

# agregar un filtro ldap para usuarios válidos (expert setting)

#CustomerUserValidFilter => '(!(description=locked))',

# administrator can't change customer preferences

AdminSetPreferences => 0,

# tiempo de caché en seg. - caché cualquier consulta de base de datos

CacheTTL => 0,

Map => [

# note: Login, Email and CustomerID are mandatory!

# var, frontend, storage, shown (1=always,2=lite), required, storage-type, httplink,

readonly, http-link-target, link class(es)

[ 'UserTitle', 'Title', 'title', 1, 0, 'var', '', 0 ],

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

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

[ 'UserLogin', 'Username', 'uid', 1, 1, 'var', '', 0 ],

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

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

Documento confidencial
[ 'UserCustomerIDs', 'CustomerIDs', 'second_customer_ids', 1, 0, 'var', '', 0 ],

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

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

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

],

};

Si se almacenan atributos adicionales del cliente en su directorio LDAP, como el


nombre de un gerente, un numero de telefono movil o un departamento, y si desea
mostrar esta informacion en OTRS, simplemente expanda la matriz MAP en Kernel /
Config.pm con el entradas para estos atributos, como se muestra en el siguiente
script.

# var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link,

readonly, http-link-target, link class(es)

[...]

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

Script: Agregar nuevos campos al archivo Kernel / Config.pm.

3.2.1. Cliente con multiples ID (tickets de empresa)

Es posible asignar mas de un ID de cliente a un cliente, cuando se utiliza un LDAP de


fondo. Para usar los tickets de la compania, debe agregar un nuevo campo al
directorio LDAP que contiene los ID disponibles por el cliente. Si se ha creado el
nuevo campo en el directorio LDAP, la nueva entrada debe agregarse a la matriz
MAP en Kernel / Config.pm, como se muestra en el script a continuación.

# var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link,

readonly

[…]

[ 'UserCustomerIDs', 'CustomerIDs', 'customer_ids', 1, 0, 'var', '', 0 ],

Documento confidencial
Script: Maping new fields to the Kernel/Config.pm file.

El campo para las ID de clientes multiples debe editarse directamente en el directorio


LDAP. OTRS solo puede leer desde LDAP, no escribir en el.

4. Plan de Configuración

Item Parametro valor Comentario

01 Servidor LDAP Nservidor.mppre.go.ve

02 Puerto 386 El LDAP sobre SSL el puertop


es 636

03 Prefijo de enlace

04 Usuario

05 Clave ************** Consultar Área de Servidores

5. Glosario
‹‹Se definen los términos que aportan o apoyan la definición del
requerimiento.››

Glosario
Termino Descripción
LDAP Protocolo de Acceso Liviano al Directorio, para
autenticar a los usuarios.
Servidor LDAP Hace referencia al nombre de host o dirección IP del
servidor LDAP que se utiliza para autenticar a los
usuarios del dispositivo
Puerto hace referencia al número de puerto TCP/IP que utilizará
el servidor para procesar las solicitudes LDAP.
Normalmente, es el puerto 389 para un enlace Sencillo o
el puerto 636 para un enlace Simple por SSL.
Prefijo de enlace Es el atributo LDAP utilizado para crear el nombre
distintivo (DN, del inglés, Distinguished Name) del usuario
para la autenticación. Este prefijo se combina con el
nombre de usuario introducido en el panel de control para
formar el nombre distintivo relativo (RDN). Algunos de los
prefijos que se utilizan a menudo son "CN" (nombre
común) o "UID" (identidad de usuario).

Documento confidencial
Nota : (1) Cuando configure el método de autenticación LDAP, defina una
base de búsqueda para que especifique en qué lugar de los directorios del
servidor de autenticación ldap.mppre puede buscar una coincidencia de
autenticación. Si su nombre de dominio es example.com, puede utilizar la
base de búsqueda dc=example,dc=com .

(2) Para administrar grupos de usuarios, puede agregar las clases de objetos
member, memberUID, o gidNumber.

(3) DN del usuario de búsqueda, ingrese el nombre completo (DN) para


una operación de búsqueda. Puede agregar cualquier DN de usuario con el
privilegio de buscar LDAP, como administrador. Algunos administradores
crean un nuevo usuario sólo con privilegios de búsqueda. Por ejemplo,
cn=Administrator, cn=Users, dc=example, dc=com .

6. Historia de Cambios

Fecha Versión Descripción Autor


23/01/20 1.0 Integración LDAP del MPPRE a el Nelson Acevedo
aplicativo OTRS 6

7. Aprobaciones

Fecha Nombre Firma

Fecha Versión Elaboró Aprobó Observación


Nelson Ana Navarro Primera
23/01/2020 1.0
Acevedo versión

Documento confidencial
8. Anexo A
# Configuración para la autenticación del backend del agente ldap # #
$ Self -> {'AuthModule'} = 'Kernel :: System :: Auth :: LDAP';
$ Self -> {'AuthModule :: LDAP :: Host'} = 'server.domain.com';
$ Self -> {'AuthModule :: LDAP :: BaseDN'} = 'dc = dominio, dc = tld';
$ Self -> {'AuthModule :: LDAP :: UID'} = 'sAMAccountName';
# Compruebe si el usuario tiene permiso para autenticarse en un grupo posix
# (por ejemplo, el usuario debe estar en un grupo OTRS_Agents para usar otros)
# $ Self -> {'AuthModule :: LDAP :: GroupDN'} = 'cn = Agentes, ou = Grupos, dc = dominio, dc = tld';
# $ Self -> {'AuthModule :: LDAP :: AccessAttr'} = 'miembro';
# $ Self -> {'AuthModule :: LDAP :: UserAttr'} = 'DN';
# Vincular credenciales para iniciar sesión en AD
$ Self -> {'AuthModule :: LDAP :: SearchUserDN'} = 'usuario@dominio.tld';
$ Self -> {'AuthModule :: LDAP :: SearchUserPw'} = 'contraseña';
$ Self -> {'AuthModule :: LDAP :: AlwaysFilter'} = '';
# en caso de que desee agregar un sufijo a cada nombre de inicio de sesión, entonces
# puedes usar esta opción. por ejemplo, el usuario solo quiere usar el usuario pero
# en su directorio ldap existe usuario @ dominio.
# $ Self -> {'AuthModule :: LDAP :: UserSuffix'} = '';
# Net :: LDAP nuevos parámetros (si es necesario; para obtener más información, consulte perldoc Net
:: LDAP)
$ Self -> {'AuthModule :: LDAP :: Params'} = {
puerto => 389,
tiempo de espera => 120,
asíncrono => 0,
versión => 3,
sscope => 'sub'
};
# Ahora sincronice datos con OTRS DB
$ Self -> {'AuthSyncModule'} = 'Kernel :: Sistema :: Auth :: Sync :: LDAP';
$ Self -> {'AuthSyncModule :: LDAP :: Host'} = 'server.domain.com';
$ Self -> {'AuthSyncModule :: LDAP :: BaseDN'} = 'dc = dominio, dc = tld';
$ Self -> {'AuthSyncModule :: LDAP :: UID'} = 'sAMAccountName';
$ Self -> {'AuthSyncModule :: LDAP :: SearchUserDN'} = 'usuario@dominio.tld';
$ Self -> {'AuthSyncModule :: LDAP :: SearchUserPw'} = 'contraseña';
$ Self -> {'AuthSyncModule :: LDAP :: UserSyncMap'} = {
# DB -> LDAP
UserFirstname => 'givenName',
UserLastname => 'sn',
UserEmail => 'mail',
};
# AuthSyncModule :: LDAP :: UserSyncInitialGroups
# (sincronice el siguiente grupo con el permiso rw después de la creación inicial del primer agente
# iniciar sesión)
$ Self -> {'AuthSyncModule :: LDAP :: UserSyncInitialGroups'} = [ 'customer_user',
];

Documento confidencial

Вам также может понравиться