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

JSF Java Discussion :

Accès sécurisé et authentification avec EJB3/JBoss


Sujet :

JSF Java

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    679
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 679
    Par défaut Accès sécurisé et authentification avec EJB3/JBoss
    salut

    Je suis sur un projet EJB3/JSF/Jboss. Je dispose une table ''utilisateur''. Je dois faire d'une sorte que chaque utilisateur puisse se connecter à sa session avec son login et mot de passe.
    de plus, je dois attribuer à chaque utilisateur un profil donné pour les droits d'accès et d'écriture sur les champs des tables (certains utilisateurs n'ont pas les mêmes droit ou fonctions que d'autres).

    quelqu'un pourrait peut être me mettre sur une piste pour commencer (avec liens de doc si possible). Je suis nouveau dans les EJB3

    Merci d'avance

  2. #2
    Membre très actif Avatar de bruneltouopi
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 308
    Par défaut
    ça dépend si tu veux utiliser la sécurité liés au serveur d'application.ou bien implémenter ta propre sécurité.
    Dans le premier cas tu devra savoir si JBOSS le fait car moi j'utilises Glassfish.
    Mais commencer par le deuxième cas est une bonne chose.
    Déjà il te faut un controller de type SessionScoped qui devra s'occuper de gerer l'authentication et faire la redirection.
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public String login(){  
      //default url in case of login failure;  
      String url="connection.xhtml";  
    //succes connection
    String url2="index.xhtml"; 
      FacesContext ctx = FacesContext.getCurrentInstance(); 
    //service EJB qui s'occupe de l'authentification
     User u=securiteUServices.getAuthentification(login,pwd);   
    if(u==null){
    ctx.getExternalContext().redirect(url); 
    }else{
    ctx.getExternalContext().redirect(url2); 
    }
    }

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    679
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 679
    Par défaut
    salut je n'arrive pas a trouver solution j'ai cherché sur web et j'ai trouvé sécuriser une application web déployée sur JBoss

    J'essaie de gérer l'authentification dans mon appli JEE (base de donnée mysql 10 et jsf2)

    Pour cela j'ai donc une jsf nommée: test.xhtml
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
       <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN'
    	  'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
    	<html xmlns='http://www.w3.org/1999/xhtml'
    	 xmlns:f='http://java.sun.com/jsf/core'
    	 xmlns:h='http://java.sun.com/jsf/html'
    	 xmlns:ui='http://java.sun.com/jsf/facelets'>
    	<h:head>
    	 <h:outputStylesheet library='css' name='main.css' />
    	</h:head>
    	<h:body>
    	 <p>Login to access secure pages:</p>
     <form method='post' action='j_security_check'>
      <h:messages layout='table' errorStyle='background: #AFEEEE;'
    	   infoStyle='background: #AFEEEE;' globalOnly='true' />
    	  <h:panelGrid columns='2'>
       <h:outputLabel value='Username: ' />
       <input type='text' id='j_username' name='j_username' />
    	   <h:outputLabel value='Password: ' />
       <input type='password' id='j_password' name='j_password' />
      <h:outputText value='' />
    	   <h:panelGrid columns='1'>
    	    <input type='submit' name='submit' value='login' />
       </h:panelGrid>
    	  </h:panelGrid>
    	  <br />
    	 </form>
    	</h:body>
    	</html>
    J'ai ajouté les security constraints dans mon web.xml:

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    <security-constraint>
       <web-resource-collection>
    	<web-resource-name>Page de recherche des organisations</web-resource-name>
        <url-pattern>*.xhtml</url-pattern>
    	<http-method>GET</http-method>
    	<http-method>POST</http-method>
    	</web-resource-collection>
    	<!-- Rôles des utilisateurs ayant le droit d'y accéder -->
    	<auth-constraint>
    		<role-name>admin</role-name>
    	</auth-constraint>
    <user-data-constraint>
        <transport-guarantee>NONE</transport-guarantee> 
    </user-data-constraint>
     
     </security-constraint>
      <login-config>
    		<auth-method>FORM</auth-method>
    			<realm-name>Default</realm-name>
    			<form-login-config>
    			    <form-login-page>/test.xhtml</form-login-page>
    				<form-error-page>/erreur.xhtml</form-error-page>
    			</form-login-config>
    	</login-config>
     
    		<!-- Rôles utilisés dans l'application -->
    <security-role>
    	<description>Administrateur</description>
    	<role-name>admin</role-name>
    </security-role>
     
    <security-role>
       <description>Utilisateur</description>
       <role-name>user</role-name> 
    </security-role>
    J'ai ajouté un fichier jboss-web.xml dans mon dossier WEB-INF:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?xml version="1.0" encoding="UTF-8"?>
     
     
    <jboss-web>
     	    <security-domain>java:/jaas/RitaLogin</security-domain>
     </jboss-web>


    puis j'ai ajouté un Realm a la fin du fichier <Repertoire Jboss>/server/default/conf/login-config.xml :
    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
     
    <application-policy name="RitaLogin">
     
             <authentication>
                <login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule"
                    flag="required">
                    <module-option name="dsJndiName">java:testDatasource</module-option>
                    <module-option name="securityDomain">java:/jaas/simple-security-domain</module-option>
                    <module-option name="principalsQuery">select password from User where
                       nom=?</module-option>
     
                </login-module>
       </authentication>
     
      </application-policy>

    Pour info , voici le code de ma DataSource: mus-ds.xml

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE datasources
        PUBLIC "-//JBoss//DTD JBOSS JCA Config 1.5//EN"
        "http://www.jboss.org/j2ee/dtd/jboss-ds_1_5.dtd">
    <datasources>
     
       <local-tx-datasource>
          <jndi-name>testDatasource</jndi-name>
          <use-java-context>true</use-java-context>
          <connection-url>jdbc:mysql://localhost:3306/testschema</connection-url>
          <driver-class>com.mysql.jdbc.Driver</driver-class>
          <user-name>root</user-name>
          <password>root</password>
       </local-tx-datasource>
     
    </datasources>
    Lorsque j'essaie d'accéder à une page protégée, l'application m'affiche bien la page de login, le problème est que quelque soit le login/pass tappé, l'appli me redirige vers la page erreur.xhtml (même lorsque le login et le mot de passe sont valides).
    Lorsque je regarde la console sur eclipse, rien n'est affiché donc je n'ai aucune info.

    je vous montre aussi fichier face-config

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?xml version="1.0" encoding="UTF-8"?>
    <faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xi="http://www.w3.org/2001/XInclude"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
     <managed-bean>
      <managed-bean-name>test</managed-bean-name>
      <managed-bean-class>test</managed-bean-class>
      <managed-bean-scope>session</managed-bean-scope>
     </managed-bean>
    </faces-config>

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    679
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 679
    Par défaut
    à chaque fois je tape ogin/pass tappé, l'appli me redirige vers la page erreur.xhtml avec URL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    http://localhost:8080/mus/j_security_check

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    679
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 679
    Par défaut
    je n'arrive pas à résoudre le problème après plusieurs tentatives toujours la page login me redirige vers page d'erreur

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    679
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 679
    Par défaut
    meme chose si je choisi une page test.xhtml par exemple elle s'affiche au lieu de redirige vers la page login
    <url-pattern>*.xhtml</url-pattern> ne fonctionne pas

  7. #7
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    679
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 679
    Par défaut
    je voudrais si l'utilisateur avec user et mot passe juste alors redirige vers la page welcome au lieu la page tapé par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    http://localhost:8080/test/page.xhtml
    quelque soit la page alors redirige vers la page welcome si login est just
    je ne sais pas si vous avez compris mon problème merci

Discussions similaires

  1. Accès sécurisé et authentification avec EJB3/jboss
    Par amola1992 dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 10/07/2014, 14h22
  2. Clustering avec les EJB3 (JBoss ou Glassfish)
    Par fred2.0 dans le forum Glassfish et Payara
    Réponses: 5
    Dernier message: 26/10/2011, 09h47
  3. [Sécurité] Accès sécurisé et authentification avec EJB3/jboss
    Par magnum_cl9 dans le forum Java EE
    Réponses: 15
    Dernier message: 26/05/2009, 10h05
  4. Accedé au répertoire réseau avec authentification
    Par infostars dans le forum Windows Forms
    Réponses: 0
    Dernier message: 04/02/2009, 14h17
  5. Authentification avec LDAP / Jboss
    Par otterley dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 11/04/2008, 12h10

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