En esta breve guía encontrarás los pasos a seguir para poder configurar correctamente el acceso Multi-Dominio en Thuban.
Antes de continuar con esta guía, asegúrate de tener los siguientes datos de los LDAP contigo:
ldapHost
ldapBase
ldapName
ldapUserAttributeId
Antes de continuar con esta guía, asegúrate de tener los siguientes datos de los LDAP contigo:
ldapHost
ldapBase
ldapName
ldapUserAttributeId
ATENCIÓN! Se requiere que Thuban pueda comunicarse a los distintos dominios por la red o internet. Esto no es AD FS ni SAML ni OPENID. |
Dirigirse a la carpeta Context de la instalación de Thuban, ubicar y abrir en un editor de texto el archivo “user-application-context.xml”
Agregar los siguientes beans al mismo:
<bean id="thubanAuthenticationProvider" class="com.latintech.thuban.acegi.provider.ThubanMultiDomainAuthenticationProvider"> <property name="userDetailsService" ref="userDetailsService"/> <property name="loginService" ref="loginService"/> </bean> <bean id="userDetailsService" class="com.latintech.thuban.acegi.userdetails.ThubanMultiDomainUserDetailsService"> <property name="adminService" ref="adminService"/> <property name="securityService" ref="securityService"/> </bean> |
Estos beans sobre escriben los que vienen configurados por defecto en Thuban reemplazándolo por unos que permiten la autenticación Multi Dominio. Desde la versión 7.5.2, la aplicación soporta la autenticación contra un solo LDAP (Dominio) por defecto.
Luego se deben agregar los siguientes bean para listar y configurar los distintos dominios deseados:
<bean id="domains" class="org.apache.commons.collections.map.LinkedMap"> <constructor-arg> <map> <entry> <key><value>DOM1</value></key> <ref bean="DOM1Domain"/> </entry> <entry> <key><value>DOM2</value></key> <ref bean="DOM2Domain "/> </entry> <entry> <key><value>DOMN</value></key> <ref bean="DOMNDomain "/> </entry> </map> </constructor-arg> </bean> |
Este bean es el mapa que indicará los dominios disponibles para autenticarse. Por cada dominio que se agrega a este mapa es necesario definir el bean de conexión y datos del mismo. Nótese que el valor de la KEY es el LDAPName, es decir, lo que veremos en el login de Thuban y el ref es el ID de Bean de configuración del dominio. Prestar atención y ser prolijos para no cometer errores. Los Beans de definición de dominio se configuran de la siguiente forma:
<bean id="DOM1Domain" class="com.latintech.thuban.services.login.ldap.LdapDefinition"> <property name="ldapHost" value="ldap://example.org:389"/> <property name="ldapBase" value="dc=example,dc=org"/> <property name="ldapName" value="EX"/> <property name="ldapUserAttributeId" value="sAMAccountName"/> <property name="ldapUserAttributeName" value="name"/> <property name="ldapUserAttributeSurname" value="sn"/> <property name="ldapUserAttributeDistinguishedName" value="distinguishedName"/> <property name="ldapUserAttributeMemberOf" value="memberOf"/> <property name="ldapUserAttributeMail" value=""/> <property name="ldapUserAttributeArea" value=""/> <property name="ldapUserAttributePhone" value=""/> </bean> |
3. Guardar los cambios.
4. Abrir el administrador de servicios (o lo que utilices para iniciar y detener Thuban).
5. Reinicia Thuban.
Una vez haya iniciado Thuban nuevamente, en el login veras un combobox que dentro tendrá los 2 o más dominios que hayas configurado en el paso 2. Para loguearte con un usuario de uno u otro deberás seleccionar el dominio adecuado y poner el id de usuario y contraseña correspondientes.
Con la configuración MultiDominio de Thuban activa, no se podrán utilizar direcciones de correo electrónico como ID de Usuario de Thuban. Esto es porque como el sistema maneja la identificación de usuario en un esquema MultiDominio. |
Recuerda que los usuarios no se crearán de forma automática a menos que:
En el archivo context.properties hayas puesto en true las propiedades (Esto es general para todos los dominios, sean uno o varios):
ldap.enableUserSync
ldap.enableGroupSync
Hayas creado grupos en Thuban identificados como grupos de dominio
El usuario con el que intentas loguearte pertenece a al menos 1 grupo de dominio de los que se encuentran configurados en Thuban.
En caso de no querer la creación automática de usuarios, los prodrás crear desde el módulo de administración indicando que son cuentas unificadas de Windows y el Nombre de Dominio para cada uno.
Recuerda que los usuarios no se crearán de forma automática a menos que:
En el archivo context.properties hayas puesto en true las propiedades (Esto es general para todos los dominios, sean uno o varios):
ldap.enableUserSync
ldap.enableGroupSync
Hayas creado grupos en Thuban identificados como grupos de dominio
El usuario con el que intentas loguearte pertenece a al menos 1 grupo de dominio de los que se encuentran configurados en Thuban.
En caso de no querer la creación automática de usuarios, los prodrás crear desde el módulo de administración indicando que son cuentas unificadas de Windows y el Nombre de Dominio para cada uno.
Dirigirse a la carpeta Context de la instalación de Thuban, ubicar y abrir en un editor de texto el archivo “user-application-context.xml”
Agregar los siguientes beans al mismo:
<bean id="domains" class="org.apache.commons.collections.map.LinkedMap"> <constructor-arg> <map> <entry> <key><value>DOM1</value></key> <ref bean="DOM1Domain"/> </entry> <entry> <key><value>DOM2</value></key> <ref bean="DOM2Domain "/> </entry> <entry> <key><value>DOMN</value></key> <ref bean="DOMNDomain "/> </entry> </map> </constructor-arg> </bean> |
Este bean es el mapa que indicará los dominios disponibles para autenticarse. Por cada dominio que se agrega a este mapa es necesario definir el bean de conexión y datos del mismo. Nótese que el valor de la KEY es el LDAPName, es decir, lo que veremos en el login de Thuban y el ref es el ID de Bean de configuración del dominio. Prestar atención y ser prolijos para no cometer errores. Los Beans de definición de dominio se configuran de la siguiente forma:
<bean id="DOM1Domain" class="com.latintech.thuban.services.login.ldap.LdapDefinition"> <property name="ldapHost" value="ldap://example.org:389"/> <property name="ldapBase" value="dc=example,dc=org"/> <property name="ldapName" value="EX"/> <property name="ldapUserAttributeId" value="sAMAccountName"/> <property name="ldapUserAttributeName" value="name"/> <property name="ldapUserAttributeDistinguishedName" value="distinguishedName"/> <property name="ldapUserAttributeMemberOf" value="memberOf"/> <property name="ldapUserAttributeMail" value=""/> <property name="ldapUserAttributeArea" value=""/> <property name="ldapUserAttributePhone" value=""/> </bean> |
3. Guardar los cambios.
4. Reiniciar Thuban.
Una vez haya iniciado Thuban nuevamente, en el login verás un combobox que dentro tendrá los 2 o más dominios que hayas configurado en el paso 2. Para loguearte con un usuario de uno u otro deberás seleccionar el dominio adecuado y poner el id de usuario y contraseña correspondientes.
Recuerda que los usuarios no se crearán de forma automática a menos que:
En el archivo context.properties hayas puesto en true las propiedades (Esto es general para todos los dominios, sean uno o varios):
ldap.enableUserSync
ldap.enableGroupSync
Hayas creado grupos en Thuban identificados como grupos de dominio
El usuario con el que intentas loguearte pertenece a al menos 1 grupo de dominio de los que se encuentran configurados en Thuban.
En caso de no querer la creación automática de usuarios, los prodrás crear desde el módulo de administración indicando que son cuentas unificadas de Windows y el Nombre de Dominio para cada uno.
Recuerda que los usuarios no se crearán de forma automática a menos que:
En el archivo context.properties hayas puesto en true las propiedades (Esto es general para todos los dominios, sean uno o varios):
ldap.enableUserSync
ldap.enableGroupSync
Hayas creado grupos en Thuban identificados como grupos de dominio
El usuario con el que intentas loguearte pertenece a al menos 1 grupo de dominio de los que se encuentran configurados en Thuban.
En caso de no querer la creación automática de usuarios, los prodrás crear desde el módulo de administración indicando que son cuentas unificadas de Windows y el Nombre de Dominio para cada uno.
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> <bean id="thubanAuthenticationProvider" class="com.latintech.thuban.acegi.provider.ThubanMultiDomainAuthenticationProvider"> <property name="userDetailsService" ref="userDetailsService"/> <property name="loginService" ref="loginService"/> </bean> <bean id="userDetailsService" class="com.latintech.thuban.acegi.userdetails.ThubanMultiDomainUserDetailsService"> <property name="adminService" ref="adminService"/> <property name="securityService" ref="securityService"/> </bean> <bean id="domains" class="org.apache.commons.collections.map.LinkedMap"> <constructor-arg> <map> <entry> <key><value>CORP1</value></key> <ref bean="corp1Domain"/> </entry> <entry> <key><value>Corp2</value></key> <ref bean="corp2Domain "/> </entry> </map> </constructor-arg> </bean> <bean id="corp1Domain" class="com.latintech.thuban.services.login.ldap.LdapDefinition"> <property name="ldapHost" value="ldap://corp1.example.org:389"/> <property name="ldapBase" value="dc=corp1,dc=example,dc=org"/> <property name="ldapName" value="Corp1"/> <property name="ldapUserAttributeId" value="sAMAccountName"/> <property name="ldapUserAttributeName" value="name"/> <property name="ldapUserAttributeSurname" value="sn"/> <property name="ldapUserAttributeDistinguishedName" value="distinguishedName"/> <property name="ldapUserAttributeMemberOf" value="memberOf"/> <property name="ldapUserAttributeMail" value="mail"/> <property name="ldapUserAttributeArea" value="dept"/> <property name="ldapUserAttributePhone" value="phone"/> </bean> <bean id="corp2Domain" class="com.latintech.thuban.services.login.ldap.LdapDefinition"> <property name="ldapHost" value="ldap://corp2.example.org:389"/> <property name="ldapBase" value="dc=corp2,dc=example,dc=org"/> <property name="ldapName" value="Corp2"/> <property name="ldapUserAttributeId" value="sAMAccountName"/> <property name="ldapUserAttributeName" value="name"/> <property name="ldapUserAttributeDistinguishedName" value="distinguishedName"/> <property name="ldapUserAttributeMemberOf" value="memberOf"/> <property name="ldapUserAttributeMail" value="mail"/> <property name="ldapUserAttributeArea" value="dept"/> <property name="ldapUserAttributePhone" value="phone"/> </bean> </beans> |
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> <bean id="domains" class="org.apache.commons.collections.map.LinkedMap"> <constructor-arg> <map> <entry> <key><value>CORP1</value></key> <ref bean="corp1Domain"/> </entry> <entry> <key><value>Corp2</value></key> <ref bean="corp2Domain "/> </entry> </map> </constructor-arg> </bean> <bean id="corp1Domain" class="com.latintech.thuban.services.login.ldap.LdapDefinition"> <property name="ldapHost" value="ldap://corp1.example.org:389"/> <property name="ldapBase" value="dc=corp1,dc=example,dc=org"/> <property name="ldapName" value="Corp1"/> <property name="ldapUserAttributeId" value="sAMAccountName"/> <property name="ldapUserAttributeName" value="name"/> <property name="ldapUserAttributeDistinguishedName" value="distinguishedName"/> <property name="ldapUserAttributeMemberOf" value="memberOf"/> <property name="ldapUserAttributeMail" value="mail"/> <property name="ldapUserAttributeArea" value="dept"/> <property name="ldapUserAttributePhone" value="phone"/> </bean> <bean id="corp2Domain" class="com.latintech.thuban.services.login.ldap.LdapDefinition"> <property name="ldapHost" value="ldap://corp2.example.org:389"/> <property name="ldapBase" value="dc=corp2,dc=example,dc=org"/> <property name="ldapName" value="Corp2"/> <property name="ldapUserAttributeId" value="sAMAccountName"/> <property name="ldapUserAttributeName" value="name"/> <property name="ldapUserAttributeDistinguishedName" value="distinguishedName"/> <property name="ldapUserAttributeMemberOf" value="memberOf"/> <property name="ldapUserAttributeMail" value="mail"/> <property name="ldapUserAttributeArea" value="dept"/> <property name="ldapUserAttributePhone" value="phone"/> </bean> </beans> |
ATENCION! Verificar bien al configurar el atributo: Si están copiando la configuración de un dominio en el context.properties y lo están pasando al XML, verificar que no les queden las \ o \\ antecediendo los = en el ldapBase ya que eso hará que el sistema fallé. En el XML el ldapBase debe ser → Y no → |