Autenticación aplicación tomcat contra Active Directory

292 views
Skip to first unread message

ale

unread,
Nov 17, 2009, 10:47:21 AM11/17/09
to JavaSOS
Buenas, estoy intentando que el acceso a una aplicación en tomcat
realize una autenticación contra usuarios de active directory,
pertenecientes a un grupo concreto por ejemplo, o de alguna manera tal
que sólo deje acceder a esos usuarios comprobando sus credenciales
contra active directory.

He probado la siguiente configuración de realm jndi, me pide
autenticación, por el método BASIC, pero no funciona correctamente, no
acabo de entender muy bien como funciona esto así que supongo que sera
un problema de parametrización, os pongo los datos a ver si alguien me
puede guiar un poco.

Gracias por adelantado.

Saludos.



En el fichero context.xml de la aplicacion en conf/Catalina/localhost
defino lo siguiente:


<?xml version="1.0" encoding="UTF-8"?>

<Context docBase="${catalina.home}/webapps/aplicacion">
<Realm className="org.apache.catalina.realm.JNDIRealm" debug="99"
connectionURL="ldap://5.2.1.8:389"
UserPattern="uid={0},ou=Users,dc=activedirectorydomain,dc=es"
roleBase="ou=Groups,dc=activedirectorydomain,dc=es"
roleName="cn"
roleSearch="(uniqueMember={0})" />
</Context>


En el fichero web.xml dentro de WEB-INF

<!-- Security definitions -->

<!-- Define a Security Constraint on this Application -->
<security-constraint>
<web-resource-collection>
<web-resource-name>nombreaplicacion</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>Administrators</role-name>
</auth-constraint>
</security-constraint>

<!-- Define the Login Configuration for this Application -->
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>usuario</realm-name>
</login-config>

<!-- Security roles referenced by this web application -->
<security-role>
<description>ol de identificaciód</description>
<role-name>administrators</role-name>
</security-role>


Mirando el log catalina.out veo lo siguiente:

17-nov-2009 16:56:57 org.apache.catalina.startup.ContextConfig
validateSecurityRoles
ADVERTENCIA: El nombre de papel de seguridad Administrators es usado
en un <auth-constraint> sin haber sido definido en <security-role>
17-nov-2009 16:57:07 org.apache.catalina.startup.ContextConfig
validateSecurityRoles
ADVERTENCIA: El nombre de papel de seguridad Administrators es usado
en un <auth-constraint> sin haber sido definido en <security-role>




Martin LA

unread,
Nov 18, 2009, 9:39:54 AM11/18/09
to jav...@googlegroups.com
Asegurate del case-sensitive:

"Administrators" vs. "administrators"

y decime si aun persiste el error.

2009/11/17 ale <migue...@gmail.com>

ale

unread,
Nov 23, 2009, 6:19:22 AM11/23/09
to JavaSOS
Buenas ya he conseguido que funcione con la siguiente configuración:

server.xml

<Realm className="org.apache.catalina.realm.JNDIRealm" debug="99"
connectionURL="ldap://host:389"
connectionName="cn=prp,ou=Users,dc=domain,dc=es"
connectionPassword="prp"
userRoleName="member"
userPattern="cn={0},cn=Users, dc=domain, dc=es"
userBase="ou=Users,dc=intranetfass, dc=es"
userSubtree="true"
roleBase="ou=Grupos, dc=intranetfass, dc=es"
roleName="cn"
roleSearch="(member={0})"
roleSubtree="true"/>



web.xml

<security-constraint>
<web-resource-collection>
<web-resource-name>pfirma</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>grupo</role-name>
</auth-constraint>
</security-constraint>

<!-- Define the Login Configuration for this Application -->
<login-config>
<auth-method>BASIC</auth-method>
</login-config>

<!-- Security roles referenced by this web application -->
<security-role>
<description>Descripcion para grupo de acceso a la aplicacion</
description>
<role-name>grupo</role-name>
</security-role>


Ahora el problema es que para que funcione encuentro la siguiente
limitación:

los usuarios y grupos tiene que estar alojados en una unidad
organizativa de primer nivel, que cuelgue directamente del dominio,
por ejemplo:
Usuarios -> ou=Users,dc=domain,dc=es.
Grupos -> ou=Grupos,dc=domain,dc=es.

Pero el caso es que sólo me funciona con esos contenedores concretos,
si creo una unidad organizativa al mismo nivel, o subtrees no me
funciona.
He visto que estos objetos tienen las propiedades

CN=Container,CN=Schema,CN=Configuration,DC=intranetfass,DC=es

mientras que si yo creo una carpeta se crea con la siguiente
objectcategory:

CN=Organizational-Unit,CN=Schema,CN=Configuration,DC=intranetfass,DC=

Parece que tiene que tener esa categoria el objeto o que puede pasar.

Saludos.


On 18 nov, 15:39, Martin LA <chercu...@gmail.com> wrote:
> Asegurate del case-sensitive:
>
> "Administrators" vs. "administrators"
>
> y decime si aun persiste el error.
>
> 2009/11/17 ale <miguelac...@gmail.com>
Reply all
Reply to author
Forward
0 new messages