Tu peux également utiliser une authentification JAAS avec des rôles et protéger tes options/modules en testant l'appartenance de l'utilisateur à tel ou tel rôle.
C'est simple et ça correspond à ce que tu cherches...
Moi je me suis fais un petit taglib pour faire des tests de rôle un peu plus avancés que le request.isUserInRole("Admin"), si ça t'intéresse...
Pour le paramétrage, c'est très simple, voici un exemple pour JBoss 4.2.2 :
- une table principals
Citation:
CREATE TABLE `principals` (
`PrincipalID` varchar(64) NOT NULL,
`Password` varchar(64) DEFAULT NULL,
PRIMARY KEY (`PrincipalID`)
)
- une table roles
Citation:
CREATE TABLE `roles` (
`PrincipalID` varchar(64) DEFAULT NULL,
`Role` varchar(64) DEFAULT NULL,
`RoleGroup` varchar(64) DEFAULT NULL
)
- dans web.xml
Citation:
...
<security-constraint>
<web-resource-collection>
<web-resource-name>Vigile Web</web-resource-name>
<url-pattern>*.do</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>Administrateur</role-name>
<role-name>Utilisateur</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-role>
<role-name>Administrateur</role-name>
</security-role>
<security-role>
<role-name>Utilisateur</role-name>
</security-role>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Application Vigile</realm-name>
</login-config>
...
- ajouter un jboss-web.xml
Citation:
<jboss-web>
<security-domain>java:/jaas/vigile</security-domain>
</jboss-web>
- dans ...\jboss-4.2.2.GA\server\default\conf, ajouter dans login-config.xml
Citation:
<application-policy name="vigile">
<authentication>
<login-module code = "org.jboss.security.auth.spi.DatabaseServerLoginModule"
flag = "required">
<module-option name = "dsJndiName">java:/VigileRealmDS</module-option>
</login-module>
</authentication>
</application-policy>
- ensuite il faut définir les sources de données dans D:\jboss-4.2.2.GA\server\default\deploy (par exemple mySQL-ds.xml)
Citation:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>MySQLDS</jndi-name>
<connection-url>jdbc:mysql://localhost/vigile</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>...</password>
<min-pool-size>10</min-pool-size>
</local-tx-datasource>
<local-tx-datasource>
<jndi-name>VigileRealmDS</jndi-name>
<connection-url>jdbc:mysql://localhost/realm</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>...</password>
</local-tx-datasource>
</datasources>
Voilà, c'est un peu long, j'espère que ça t'aidera...;)
A+