HomeApache Geronimo v1.1 > Documentation > Apache Geronimo v1.1 - Guía de Usuario > Administrando Geronimo > A. Tareas Administrativas > C. Configurando seguridad > Administrando reinos de seguridad > Reino LDAP
Activación de Consola de Geronimo

Actualmente la activación LDAP desde la consola Geronimo falla con un Error: Unable to initialize LoginModule: null (Error: No es posible inicializar LoginModule: null). Hasta que se arregle dicho error, usa la Herramienta de Activación para activar reinos LDAP.

Ejemplo XML de Activación LDAP
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="http://geronimo.apache.org/xml/ns/deployment-1.1">
	<environment>
		<moduleId>
			<groupId>groupName</groupId>
			<artifactId>artifactName</artifactId>
			<version>1.0</version>
		</moduleId>
		<dependencies>
			<dependency>
				<groupId>geronimo</groupId>
				<artifactId>j2ee-security</artifactId>
				<version>1.1</version>
				<type>car</type>
			</dependency>
		</dependencies>
	</environment>
	
	<gbean name="ldap-login"
		class="org.apache.geronimo.security.jaas.LoginModuleGBean">
		<attribute name="loginModuleClass">org.apache.geronimo.security.realm.providers.LDAPLoginModule</attribute>
		<attribute name="serverSide">true</attribute>
		<attribute name="options">
			initialContextFactory=com.sun.jndi.ldap.LdapCtxFactory
                        connectionURL=ldap://localhost:1389
                        connectionUsername=uid=admin,ou=system
                        connectionPassword=secret
                        connectionProtocol=
                        authentication=simple
                        userBase=ou=users,ou=system
                        userSearchMatching=uid={0}
                        userSearchSubtree=false
                        roleBase=ou=groups,ou=system
                        roleName=cn
                        roleSearchMatching=(uniqueMember={0})
                        roleSearchSubtree=false
                        userRoleName=
		</attribute>
		<attribute name="loginDomainName">ldap-realm</attribute>
	</gbean>
	
	<gbean name="ldap-realm" class="org.apache.geronimo.security.realm.GenericSecurityRealm">
		<attribute name="realmName">ldap-realm</attribute>
		<reference name="LoginModuleConfiguration">
			<name>ldap-login</name>
		</reference>
		<reference name="ServerInfo">
			<name>ServerInfo</name>
		</reference>
		
		<reference name="LoginService">
			<name>JaasLoginService</name>
		</reference>
	</gbean>
	
	<gbean name="ldap-login" class="org.apache.geronimo.security.jaas.JaasLoginModuleUse">
		<attribute name="controlFlag">REQUIRED</attribute>
		<reference name="LoginModule">
			<name>ldap-login</name>
		</reference>
	</gbean>
</module>

Para activar ldap-realm.xml ejecuta al siguiente comando desde el directorio <geronimo_home>/bin:

{{*java -jar deployer.jar --user system --password manager deploy <ubicación_ldap>/<nombre_de_archivo>.xml*}}

Una vez activado, deberías ver un mensaje de confirmación similar al siguiente ejemplo:

E:\geronimo\bin>java -jar deployer.jar --user system --password manager deploy e:/ldap-jetty/ldap-realm.xml
Deployed <groupName>/<artifactName>/<version>/car

Configuración de LDAPLoginModule

class = org.apache.geronimo.security.realm.providers.LDAPLoginModule

Tip: La clave para trabajar con el módulo LDAP es: CONOCE TU ESQUEMA LDAP.

Solicitando Roles de Usuario LDAP

El LDAPLoginModule puede ser configurado para encontrar roles de usuario (membresías de grupo) usando dos métodos distintos:

Encuentra los roles mediante un atributo de pertenencia a grupo que contiene usuarios miembros (por ej. atributo member)

Para usar este método, se deben establecer las opciones roleName y roleSearchMatching. LDAPLoginModule ejecutará la búsqueda LDAP mediante el filtro roleSearchMatching para buscar el nombre distinguido del usuario atenticado, dentro del atributo de pertenencia roleName de cada grupo. Para evitar este método, la opción roleName NO DEBE dejarse establecida. Si la opción roleName se encuentra establecida y la opción roleSearchMatching no se encuentra establecida, LDAPLoginModule intentará ejecutar la búsqueda y lanzará una excepción.

Encuentra los roles mediante un atributo de pertenencia a grupo que contenga los grupos a los cuales es miembro el usuario (por ej. un atributo memberOf).

Para usar este método la opción userRoleName debe establecerse con el nombre del atributo de pertenencia a grupo que contenga la lista de membresía del grupo. Para evitar este método, debería no establecerse la opción userRoleName.

Opciones LDAPLoginModule

Opción Descripción
initialContextFactory Nombre de clase del context factory inicial. Usualmente com.sun.jndi.ldap.LdapCtxFactory.
connectionURL URL de conexión LDAP, como ldap://localhost:1389 . Nota que el puerto LDAP usual es 389.
connectionUsername El DN usado por el módulo login para autenticarse al servidor directorio.
connectionPassword La credencial (password) que se usa por el módulo login para autenticarse al servidor directorio.
connectionProtocol El protocolo de seguridad a usar. Este valor se determina por el proveedor de servicio. Puede dejarse en blanco. Un ejemplo sería SSL.
authentication El nivel de seguridad a usar. Su valor es una de las siguientes cadenas: "none" (ninguno), "simple", "strong" (fuerte). Si no se especifica esta propiedad, el comportamiento lo determina el proveedor de servicio.
userBase El DN base para la búsqueda de membresía de grupo.
userSearchMatching La especificación de filtro para el como buscar para atributos de usuario. Filtros RFC 2254 son permitidos. Además puedes pasar un parámetro al filtro de búsqueda en lugar de un valor literal. Por ejemplo: ese es una especificación de filtro RFC 2254: (cn=Babs Jensen). Si quieres parametrizar el valor de un tipo de atributo CN, especifica (cn = {0}). Este entero se refiere al número de parámetro. El valor de parámetro es el nombre de usuario. Esta búsqueda debe devolver exactamente un objeto.
userSearchSubtree Define la perspectiva de búsqueda para atributos de usuario. Si se establece true (verdadero), la búsqueda de directorio es de perspectiva SUBTREE (sub-árbol), si es false (falso), la búsqueda de directorio es de perspectiva ONE-LEVEL (un-nivel).
roleBase DN base para la búsqueda de membresía de grupo.
roleName Atributo LDAP que identifica al nombre de grupo en el resultado proporcionado por la búsqueda de membresía de grupo. Nota que una búsqueda de membresía de grupo es definida por el parámetro roleSearchMatching. Usualmente el parámetro nombre de grupo es cn.
roleSearchMatching Especificación de filtro para cómo buscar los roles. Se permiten filtros RFC 2254. Además, puedes pasar parámetros al filtro de búsqueda en lugar del valor literal. Por ejemplo: (uniqueMember = {0}). Este entero se refiere al número de parámetro. Este parámetro es el DN del usuario autenticado. Nota que si la membresía de rol para el usuario es definida en el atributo member-of-like (ver parámetro userRoleName) puede ser que no necesites buscar membresía de grupo en la búsqueda.
roleSearchSubtree Define la perspectiva de búsqueda de directorio para roles. Si es true (verdadero), la búsqueda de directorio es de perspectiva SUBTREE (sub-árbol), si es false (falso), la búsqueda de directorio es de perspectiva ONE-LEVEL (un-nivel).
userRoleName Atributo de membresía de grupo para un usuario. Esquemas distintos LDAP representan membresía de grupo de usuario en distintas maneras. Ejemplos son: memberOf, isMemberOf, member, etc. Valores a esos atributos son identificadores de grupos a los cuales un usuario es miembro de. Por ejemplo, si tienes: memberOf: cn=admin,ou=groups,dc=foo, especifica memberOf como el valor para el atributo userRoleName. Considera la relación entre este parámetro y la búsqueda roleSearchMatching. En muchas ocasiones regresarán los mismos datos.