Je voudrais faire une authentification par tomcat en utilisant les groupes dans mon ldap pour gérer l'accès à ma webapp (ex: admins, simples utilisateurs, développeurs etc). Je peux actuellement me connecter sur ma webapp en utilisant ldap si je n'utilise aucun type de groupe.Java EE: authentification via tomcat + ldap
Voici mon échantillon représentatif de code:
web.xml:
<security-constraint>
<display-name>Test</display-name>
<web-resource-collection>
<web-resource-name>Administrative Area</web-resource-name>
<url-pattern>/admin.html</url-pattern>
<url-pattern>/blabla.jsp</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>TOTOAdmins</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<display-name>Tomcat Server Configuration Security Constraint</display-name>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<url-pattern>/users/*</url-pattern>
<url-pattern>/login</url-pattern>
<url-pattern>/error</url-pattern>
<url-pattern>/welcome</url-pattern>
<url-pattern>/home.do</url-pattern>
<url-pattern>/out.do</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>Form-Based Authentication </realm-name>
<form-login-config>
<form-login-page>/login</form-login-page>
<form-error-page>/error</form-error-page>
</form-login-config>
</login-config>
<security-role>
<role-name>TOTOAdmins</role-name>
</security-role>
<security-role>
<role-name>*</role-name>
</security-role>
<welcome-file-list>
<welcome-file>welcome</welcome-file>
</welcome-file-list>
On peut voir dans cet exemple taht je voudrais donner accès à une page à tous les utilisateurs, mais seulement les utilisateurs appartenant à TOTOAdmins ont accès à blabla.jsp & admin.html.
Actuellement, toutes les personnes (quel que soit leur groupe) ont accès à la page définie dans le, mais personne ne peut accéder à blabla.jsp & admin.html.
server.xml:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="/portal_re" debug="0" reloadable="true" docBase="portal_re">
<Realm className="org.apache.catalina.realm.JNDIRealm"
debug="99"
connectionURL="ldap://XX.X.XX.XXX:XXX"
connectionName="cn=XXXXXX,ou=abc,dc=abcdef,dc=xyz"
connectionPassword="XXXXXXX"
userBase="ou=abc,dc=abcdef,dc=xyz"
userSearch="(name={0})"
userSubtree="true"
userRoleName="memberOf"
roleBase="ou=abc,dc=abcdef,dc=xyz"
roleSearch="(uniqueMember={0})"
roleSubtree="true"
roleName="cn"
/>
</Context>
Lorsque je navigue mon ldap, tous les utilisateurs ont un groupe dans le membre « memberOf », et je définis roleBase/Recherche/sous-arbre/nom en termes de groupes comment sont définis en LDAP. je me connecte à mon webapp qui a l'attribut suivant dans ldap:
memberOf CN=TOTOAdmins,OU=ABC,DC=ABCDEF,DC=xyz
(Il est encore membre de quatre différents groupes, mais je ne sais pas si elle est pertinente)
Je ne sais pas si cela aidera , mais sur la page d'accueil j'ai
<h1><% =request.getUserPrincipal()%></h1>
et lorsque je me connecte avec les utilisateurs: toto, il imprime:
GenericPrincipal [toto (CN = Administrateurs, OU = ABC, DC = ABCDEF, DC = xyz, CN = TOTOAdmins, OU = ABC, DC = ABCDEF, DC = xyz, CN = Lecteurs, CN = ABC, DC = ABCDEF , DC = xyz, CN = Users, CN = Rôles, DC = ABCDEF, DC = xyz,)
Eh bien, vous êtes un peu ma dernière chance.
Y at-il une question ici? – EJP