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 par Jaas sous JSf


Sujet :

JSF Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Par défaut authentification par Jaas sous JSf
    Bonjour à tous,
    je veux utiliser Jaas pour l'authentification de mon appli.
    J'arrive à protéger les pages par formulaire, c'est à dire pour chaque page protégé je rentre le couple identifiant/motdepasse issu d'une base de donnée accessible via tomcat. J'ai suivi des tutoriel avec des champs j_user_name,.. et j_check. la page de login utilise des jsp et non les balises JSF.
    Je voudrais m'identifier une fois au démarrage de l'application et pouvoir naviguer tranquillement.

    Mais comment faire?
    J'ai fait quelques recherches sur le net. Dois je utiliser les classes LoginModule et loginContext??
    quelqu'un a t'il une méthode ou un tutorial qu'il a utilisé pour faire cela?

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Les pages de login peuvent être faites en xhtml, ça ne pose aucun problème, voici un fragment de ce que j'utilise
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    <html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:util="http://java.sun.com/jsf/composite/component"
        xmlns:p="http://primefaces.org/ui">
     
        <p:panel style="width:650px;margin:40px 0 0 0;padding:0 0 0 0;background-color:#f0f0f0">
            <form name="logInForm" action="j_security_check" method="POST">
                <p:panelGrid id="login" style="height:230px;padding:0;margin:0">
                    <p:row>
                        <p:column styleClass="img" rowspan="6">
                        </p:column>
                        <p:column colspan="2" style="height:100px">
                            <h:outputText value="#{defaultManager.getResourceBundleValue('login_text')}"/>
                            <br/>
                            <br/>
                        </p:column>
                    </p:row>
                    <p:row>
                        <p:column style="width:130px">
                            <h:outputText value="#{defaultManager.getResourceBundleValue('login_user')}" styleClass="label"/>
                        </p:column>
                        <p:column>
                            <p:inputText id="j_username"/>
                        </p:column>
                    </p:row>
                    <p:row>
                        <p:column>
                            <h:outputText value="#{defaultManager.getResourceBundleValue('login_password')}" styleClass="label"/>
                        </p:column>
                        <p:column>
                            <p:password id="j_password"/>
                        </p:column>
                    </p:row>
                    <p:row>
                        <p:column>
                        </p:column>
                        <p:column style="vertical-align:top">
                            <p:commandButton value="#{defaultManager.getResourceBundleValue('login_submit')}" rendered="false"/>
                            <input type="submit" value="Connecter"/>
                        </p:column>
                    </p:row>
                    <p:row>
                        <p:column></p:column>
                    </p:row>
                </p:panelGrid>
                <p:focus/>
            </form>
        </p:panel>
     
    </html>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Par défaut
    merci.. je ne décidément pas très malin..

    par contre, comment gères tu la redirection vers la page que tu veux?

    J'ai vu ce post

    http://www.developpez.net/forums/d12...check-adresse/

    Il utilise un mangedBean pour la redirection. mais ou met tu le chemin? existe t il une autre solution en jsf?

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Il n'y a pas à gérer une redirection, tu as mal compris le principe, voici comment ça se passe :

    - tu appelles une page protégée (1)

    - si tu n'es pas authentifié, jaas t'affiche la page de login

    ---- tu envoies ton login/mot de passe
    ---- s'il est correcte, jaas rend la main et affiche la page demandée (1)
    ---- s'il n'est pas correcte, il t'affiche la page d'erreur de login

    - si tu es déjà authentifié, il affiche la page demandée (1)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Par défaut
    je suis d'accord avec toi.
    mais ce que je veux si c possible c'est de me connecter en amont.
    - avant d'aller à une page protégé

    Je parle de redirection dans le sens ou je connecte sur une page de login avec mes identifiants et suivant le role je me dirige vers tel page.

    Actuellement je me connecte de façon basique :
    - en regardant si le couple user/password est ok dans la bdd
    - puis suivant le type de l'objet retourné je vais sur tel page
    - puis je met cet objet dans le contexte et je teste cet objet pour voir s'il permet d'acceder à la page souhaité

    je veux utiliser Jaas pour remplacer cela. est ce un bon raisonnement de ma part?

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Le plus simple alors est de protéger un répertoire racine de toutes tes pages...
    Dans ce cas, quelque soit la page demandée, il te demandera de t'authentifier
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Par défaut
    t'es vraiment pas bête.. je n'avais pas pensé à cette solution.. je la trouve super astucieuse..
    avant je peux faire une page d'accueil ou je demande le type d'activité de la personne.

    malheureusement, je suis têtu ce qui ne fait pas de moins un bon informaticien.

    vois tu une solution pour avoir une seule page de login Jaas et cette dernière me fais la redirection vers les pages adéquates.

    Sous struts, je gère les droits via les interceptor et la méthode que j'ai décrite dans le post précédant avec l'objet dans le contexte. je ne sais pas si cela est bien mais j'aime bien car j'utilise le polymorphisme de java pour la direction suivant les type de l'identificateur
    Sous Php j'utilise ma variable $_session..

    sais tu a quoi sert le package java.security.* de java. L'as tu deja utilisé??

    merci pour tout et tes futurs réponse..

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par fabigol Voir le message
    vois tu une solution pour avoir une seule page de login Jaas et cette dernière me fais la redirection vers les pages adéquates.
    Mais c'est comme ça que ça fonctionne, il n'y a rien à faire de spécial pour ça (ou alors on ne se comprend pas)
    Citation Envoyé par fabigol Voir le message
    sais tu a quoi sert le package java.security.* de java. L'as tu deja utilisé??
    ça sert à gérer tout ce qui touche à la sécurité, que ce soit d'exécution d'une application autonome (genre Swing) ou l'authentification (liée à JAAS ou autres)
    J'ai déjà utilisé certains éléments mais pas tout (de loin)...
    Dans le cadre d'une authentification JAAS, enfin quand on veut faire un spécifique sur l'objet "Principal", on manipule surtout le Principal, CallbackHandler et Group mais sinon, on utilise plutôt les méthodes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal();
    FacesContext.getCurrentInstance().getExternalContext().isUserInRole("LE_ROLE");
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Par défaut
    ok merci.

    pour quel style d'application utilise jaas?

    par exemple, je pense q'un site comme developpez.net ne l'utilise pas. il doit faire un système basique identifiant/motdepasse sans Jaas.

  10. #10
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    J'utilise JAAS pour toutes nos applications web JSF2 avec un Principal spécifique pour la gestion des droits très spécifique de notre société.

    Le gros intérêt est de pouvoir utiliser ces informations aussi bien dans la couche web que dans la couche EJB3, sans avoir à les passer en paramètre.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Par défaut
    Ok. merci pour ta réponse.

    une dernière question, j'ai un soucis quand j'utilise les facelets. je reste bloquer sur le formulaire de connexion. si j'enlève le template ca marche nickel

    Voici mon code:
    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
     
    <!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:ui="http://java.sun.com/jsf/facelets"
    	xmlns:h="http://java.sun.com/jsf/html"
    	xmlns:f="http://java.sun.com/jsf/core"
    	xmlns:p="http://primefaces.org/ui">
     
    <ui:composition template="/template/layout.xhtml">
     
    	<ui:define name="header">
    		<h3>Connexion</h3>
    	</ui:define>
     
    	<ui:define name="content">
    		<form method="post" action="j_security_check">
    			<h:panelGrid columns="2">
    				<p:outputLabel for="j_username" value="Username" />
    				<p:inputText id="j_username" name="j_username" />
    				<p:outputLabel for="j_password" value="Password" />
    				<p:password id="j_password" name="j_password" />
    				<p:commandButton name="submit" value="Login" />
    			</h:panelGrid>
    		</form>
    	</ui:define>
     
    	</ui:composition>
     
    </html>

  12. #12
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Si tu regardes bien mon exemple, je n'utilise pas de <p:commandButton> mais un <input type="submit" value="Connecter"/>
    Peux-tu essayer ?

    Ce qui est sûr, c'est que j'utilise un template et ça fonctionne bien
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Par défaut
    bravo.. rien d'autre à dire..

    Ca marche.. mais pour info le <p:commandbutton marche sans le facette

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Authentification JAAS sous JBoss après un publish
    Par oliv37 dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 28/05/2013, 11h07
  2. Authentification par .htaccess sous ISERIES 400
    Par nicus88 dans le forum Apache
    Réponses: 4
    Dernier message: 03/11/2011, 17h45
  3. authentification par formulaire sous iis7
    Par ledawa dans le forum IIS
    Réponses: 0
    Dernier message: 16/12/2009, 11h26
  4. Réponses: 3
    Dernier message: 24/08/2009, 17h47
  5. Réponses: 6
    Dernier message: 03/05/2007, 11h28

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