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 :

Authentification JSF Spring


Sujet :

JSF Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 14
    Par défaut Authentification JSF Spring
    Bonjour,

    Je fais une petite application avec jsf, spring et hibernate et je souhaiterai mettre en place un système d'authentification. A savoir un système de login mot de passe, et si l'authentification n'a pas été faite, l'accés aux autres pages redirige vers la page login.jsp. Quelles sont les différentes méthodes d'authentification et la plus simple à mettre en place? Et ou trouver les informations pour les mettre en place, des tutoriaux si possible?

    Merci d'avance pour vos réponses.

  2. #2
    Membre actif Avatar de mr1azl
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 77
    Par défaut
    La plus simple c'est utiliser Spring-Security.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 14
    Par défaut
    Merci pour le lien. J'ai pu mettre en place un système de login mot de passe qui fonctionne mais pour l'instant il y a que 2 identifiants qui peuvent se connecter (admin ou guest).
    J'ai configuré comme est indiqué dans le tutorial :

    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
    <security:authentication-provider>
      <security:user-service>
        <security:user name="admin" password="admin"
                       authorities="ROLE_ADMIN,ROLE_USER" /> 
        <security:user name="guest" password="guest"
                       authorities="ROLE_USER" /> 
      </security:user-service>
    </security:authentication-provider>
     
    <security:http>
      <security:intercept-url pattern="/editerproduit.do" access="ROLE_ADMIN"/>
      <security:intercept-url pattern="/**" access="ROLE_USER"/>
     
      <security:http-basic/>
    </security:http>
    Mais cette solution est restrictive , je voulais savoir s'il était possible de configurer la méthode d'authentification dans un bean pour pouvoir par exemple faire un appel à une méthode dao sur les utilisateurs autorisés en base de données.

  4. #4
    Membre actif Avatar de mr1azl
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 77
    Par défaut
    Tu utilise quel type d'authentification ? si tu utilise une base de donnée avec les Role pense à remplir une table authorities par exemple

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 14
    Par défaut
    Je vais utiliser la solution la plus simple possible.

    J'ai 2 tables :

    - une table role avec comme attribut id, label

    - une table utilisateur avec comme attribut id, username, password et idrole (un seul role par utilisateur)

    Pour l'authentification, je voudrais donc tester dans un premier temps que le couple (login, mot de passe) existe dans la table utilisateur, puis vérifier le role dans la table role.

    La méthode Utilisateur getUtilisateur(username,password) est accessible par un bo (qui fait appel à un dao hibernate) et Utilisateur.getRole récupère le role.

    Ma question est donc de savoir comment il est possible de gérer "dynamiquement" les utilisateurs et les roles en faisant appel à mes méthodes et non par la seule définition des balises de spring security dans le fichier application-context.xml vu plus haut.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 14
    Par défaut
    Finalement j'ai trouvé une autre solution pour gérer l'authentification, même si ca doit etre possible avec spring security.
    J'ai définit un bean Login qui a les méthodes login et logout qui controle le login mot de passe et le role associé à l'utilisateur en faisant appel à mes méthodes métiers. Est défini aussi une variable de session pour le login qui est supprimé pour le logout.
    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
    	public String login(){
     
    		//controle de username et password  et du role avec appel des bo
                    //si test ok on définit la variable de session isLogged
    			HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
    			session.setAttribute("islogged", true);
    			return "login";
     
    	}
     
    	public String logout(){
     
    			HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
    			session.removeAttribute("islogged");
    			return "logout";
    	}
    J'ai ensuite redéfini un filtre et je redirige la requête vers login.jsp si la variable de session n'est pas défini.
    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
    37
    38
    39
    40
     
    public class LoginFilter implements Filter {
     
    	FilterConfig fc;
    	@Override
    	public void destroy() {
    		// TODO Auto-generated method stub
     
    	}
     
    	@Override
    	public void doFilter(ServletRequest arg0, ServletResponse arg1,
    			FilterChain arg2) throws IOException, ServletException {
     
    		HttpServletRequest req = (HttpServletRequest) arg0;
    		HttpServletResponse resp = (HttpServletResponse)arg1;
    		HttpSession session = req.getSession(true);
    		String requestUri = req.getRequestURI().toString();
     
    		if ((session.getAttribute("islogged") == null) && (!requestUri.contains("index.jsp")) && (!requestUri.contains("login"))){
    			if (requestUri.contains("faces"))
    				resp.sendRedirect("login.jsp");
    			else
    				resp.sendRedirect("login.jsf");
    		}
    		else
    		{
    			arg2.doFilter(arg0, arg1);
    		}
     
    	}
     
    	@Override
    	public void init(FilterConfig arg0) throws ServletException {
    		fc = arg0;
    		// TODO Auto-generated method stub
     
    	}
     
    }
    Cette solution semble marcher mais je suis preneur s'il existe de meilleurs méthodes d'authentification.

Discussions similaires

  1. Réponses: 15
    Dernier message: 29/01/2014, 18h42
  2. jsf spring hibernate invoke methode
    Par rasmusin dans le forum JSF
    Réponses: 3
    Dernier message: 17/04/2008, 09h01
  3. Réponses: 7
    Dernier message: 24/10/2007, 18h44
  4. Réponses: 4
    Dernier message: 10/09/2006, 10h49
  5. [JSF-SPRING-HIBERNATE] Freeze . .
    Par gondek dans le forum JSF
    Réponses: 5
    Dernier message: 04/09/2006, 14h04

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