IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Wildfly/JBoss Java Discussion :

Authentification JAAS avec MySQL


Sujet :

Wildfly/JBoss Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Par défaut Authentification JAAS avec MySQL
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    AuthDS{
        org.jboss.security.ClientLoginModule required;
    };
    Voici a tout hasard le jndi.properties :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !!!!

  2. #2
    Membre Expert
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Par défaut
    Dans ta configuration, ton client s'authentifie via un ClientLoginModule. Ca signifie qu'aucune vérification n'est réalisée, mais que le login et le password sont transmis au serveur. Il n'y aura vérification que si le client se connecte à un composant sécurisé dans le serveur (EJB par exemple).

    Si tu veux que ton client simple s'authentifie, il faut que tu lui configure un vrai login module, avec vérification à distance auprès de mysql.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Par défaut
    Dans ce cas, je ne comprends pas du tout car je pensais que c'était le serveur qui s'occupait de la vérification login/mdp et qu'il transmettait la réponse au serveur.

    Pourrais-je avoir plus d'informations sur ce qu'il faut que je développe au niveau du client ?

    Merci par avance !

  4. #4
    Membre Expert
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Par défaut
    JBoss s'occupe de sécuriser les composants qui y sont déployés. Si tu veux vraiment utiliser ce fonctionnement, tu peux déployer un EJB sécurisé qui ne fait rien !

    Sinon, il faut que ton client ait accès à un loginmodule qui utilise la DB et que ton auth.conf y fasse référence. Par contre, je n'ai jamais utilisé ce mode de fonctionnement, je ne peux donc pas te dire si tu peux réutiliser le DatabaseServerLoginModule de JBoss, si d'autres loginmodules existent ou si tu dois développer le tien.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Par défaut
    Je comprends. En fait, pour palier au problème, il suffit que je garde ce mode de fonctionnement : j'interroge le serveur sur un EJB sécurisé pour savoir si j'ai un accès autorisé, sinon je repropose l'authentification. Correct ?

Discussions similaires

  1. Servlet d'authentification avec MySQL
    Par Drakerz dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 10/12/2014, 08h49
  2. Log out après authentification BASIC avec JAAS
    Par susu39 dans le forum Java EE
    Réponses: 0
    Dernier message: 09/11/2011, 00h09
  3. [MySQL] Authentification avec MYSQL ?
    Par Kenshin86 dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 23/03/2007, 21h21
  4. Probleme avec Mysql
    Par kevinss dans le forum Administration
    Réponses: 5
    Dernier message: 31/10/2003, 10h43
  5. Problème d'insertion avec MySQL
    Par Sonny dans le forum ASP
    Réponses: 13
    Dernier message: 28/08/2003, 13h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo