Bonjour,
Je rencontre des problèmes sur lesquels je galère depuis pas de jours.
Je souhaiterais établir une authentification sur une application cliente java swing auprès de mon appli serveur à l'aide de JAAS. Elle même gère les authentification par mot de passe et gère les rôles grace à mysql.
A priori ça devrait pas être trop dur ... mais je sèche.
Ce que je ne comprends pas, c'est que le client semble toujours bien authentifié. J'ai l'impression qu'il n'interroge pas le serveur.
Voici le contenu de mon fichier jboss-5.1.0.CR1/server/default/conf/login-config.xml :
Code xml :
1 2
|
<application-policy name="secuMySQLDS"> <authentication> <login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required"> <module-option name="dsJndiName">java:/MySQLDS</module-option> <module-option name="principalsQuery"> select password from SW_USERS where login=? </module-option> <module-option name="rolesQuery"> select rolename,'Roles' from SW_ROLES WHERE SW_ROLES.login=? </module-option> <module-option name = "unauthenticatedIdentity">AnonymousUser</module-option> </login-module> </authentication> </application-policy> |
Voici mon fichier META-INF/MySQLDS-ds.xml
Code xml :
<?xml version="1.0" encoding="UTF-8"?> <datasources> <local-tx-datasource> <jndi-name>MySQLDS</jndi-name> <use-java-context>false</use-java-context> <connection-url>jdbc:mysql://localhost:3306/test</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>root</user-name> <password>toto</password> <metadata> <type-mapping>mySQL</type-mapping> </metadata> </local-tx-datasource> </datasources>
Le fichier jboss.xml
Code java :
1 2 3 4 5 6 7
| <?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE jboss PUBLIC
"-//JBoss//DTD JBOSS 5.0//EN" "http://www.jboss.org/j2ee/dtd/jboss_5_0.dtd">
<jboss>
<!-- Utilise le domaine de sécurité "ObjectWS-WSDL" spécifié dans login-config.xml --> <security-domain>secuMySQLDS</security-domain> </jboss> |
Voici le code client que j'execute :
Code java :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public static void main(String[] args) { String userName = "toto";
String password = "tata";
final String authFile = "auth.conf";
System.setProperty("java.security.auth.login.config", authFile);
MyCallbackHandler handler = new MyCallbackHandler(userName,password);
try { LoginContext lc = new LoginContext("AuthDS",handler);
Subject subject = lc.getSubject();
lc.login();
} catch (Exception le) { System.out.println("Login failed");
le.printStackTrace();
} } |
Le MyCallBackHandler fonctionne correctement et pour terminer le fichier auth.conf :
1 2 3 4
|
AuthDS{
org.jboss.security.ClientLoginModule required;
}; |
Voici a tout hasard le jndi.properties :
1 2 3
| java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=jnp://localhost:1099 |
Votre aide serait très précieuse !!!!
Partager