Wiki Markup |
---|
{scrollbar} |
Note | ||
---|---|---|
| ||
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. |
Anchor | ||||
---|---|---|---|---|
|
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<?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:
No Format bgColor #000000 borderStyle solid
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
Info |
---|
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 |
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 | 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 |
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 |