Buenos días,
llevo ya un par de días peleándome con la configuración de un realm JNDI en un contexto web de Tomcat. La cuestión es que parece que me valida correctamente el usuario contra el LDAP pero parece ser que no puede asociar ese usuario al rol que tiene los permisos para acceder al contexto web de mi aplicación y siempre me devuelve una página de error HTTP 403 (no autorizado). Las trazas que veo en el tomcat así lo indican:
DEBUG http-6060-Processor25 org.apache.catalina.authenticator.AuthenticatorBas e - Calling authenticate()
DEBUG http-6060-Processor25 org.apache.catalina.authenticator.AuthenticatorBas e - Authenticated 'tssiweb' with type 'BASIC'
DEBUG http-6060-Processor25 org.apache.catalina.authenticator.AuthenticatorBas e - Calling accessControl()
DEBUG http-6060-Processor25 org.apache.catalina.realm.RealmBase - Checking roles GenericPrincipal[tssiweb()]
DEBUG http-6060-Processor25 org.apache.catalina.realm.RealmBase - El usuario tssiweb NO desempeña el papel de tssiwebuser
DEBUG http-6060-Processor25 org.apache.catalina.realm.RealmBase - No role found: tssiwebuser
DEBUG http-6060-Processor25 org.apache.catalina.authenticator.AuthenticatorBas e - Failed accessControl() test
En el LDAP tengo la siguiente información de usuario (tssiweb) y roles (tssiwebuser):
dn: cn=tssiwebuser,ou=groups, o=tmm
objectClass: groupOfUniqueNames
uniqueMember: uid=tssiweb, ou=People, o=tmm
cn: tssiwebuser
dn: uid=tssiweb,ou=People, o=tmm
mail: [email protected]
userPassword:: e1NIQX0wRFBpS3VOSXJyVm1EOElVQ3V3MWhReE5xWmM9
uid: tssiweb
objectClass: inetOrgPerson
sn: tssiweb
cn: tssiwebuser
En el fichero de contexto web tengo lo siguiente:
<Context docBase="${catalina.home}/webapps/TSSIWEB">
<Realm className="org.apache.catalina.realm.JNDIRealm" debug="99"
connectionURL="ldap://10.95.8.110:389"
userPattern="uid={0}, ou=People, o=tmm"
roleBase="ou=groups, o=tmm"
roleName="cn"
roleSearch="(uniqueMember={0})" />
</Context>
Y para acabar en el web.xml tengo las siguiente directivas de seguridad:
<!-- Security definitions -->
<!-- Define a Security Constraint on this Application -->
<security-constraint>
<web-resource-collection>
<web-resource-name>Entire Application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>tssiwebuser</role-name>
</auth-constraint>
</security-constraint>
<!-- Define the Login Configuration for this Application -->
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>TSSIWEB</realm-name>
</login-config>
<!-- Security roles referenced by this web application -->
<security-role>
<description>The role that is required to log in to the TSSIWEB Application</description>
<role-name>tssiwebuser</role-name>
</security-role>
Supongo que será alguna chorrada de configuración que esté pasando por alto. Estaría muy agradecido si alguien pudiera darme alguna pista o consejo al respecto.
Muchas gracias y saludos,
k