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 :

Gestion des connexions avec JSF


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 141
    Par défaut Gestion des connexions avec JSF
    Bonjour à tous.

    Dans mon appli JSF, je souhaite inclure une page header dans toutes les pages.
    Ce header vérifie que l'utilisateur est bien identifié en appelant le bean adequat.
    Est-ce la bonne façon de faire?

    Je souhaite que si l'utilisateur n'est pas connecté, celui-ci soit redirigé vers la page de login (en cas d'accès direct à une page par exemple).

    Merci!

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    , il y'a des discussions sur le sujet dans le forum J2EE, sinon tu peux suivre la discussion

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 141
    Par défaut
    OK, merci.

    J'ai posté ça ici parce que je trouve ma question assez spécifique à JSF

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 141
    Par défaut
    En fait, les solutions postées sur l'autre Thread me semblent peu adaptées, à part peut-être JAAS, qui doit pouvoir s'intégrer avec JSF via des beans.

    Je souhaite avoir une solution portable sur différents serveurs web.

  5. #5
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par troubleshooting Voir le message
    En fait, les solutions postées sur l'autre Thread me semblent peu adaptées, à part peut-être JAAS, qui doit pouvoir s'intégrer avec JSF via des beans.

    Je souhaite avoir une solution portable sur différents serveurs web.
    Donc soit JAAS ou spring security ou un autre gestionnaire de sécurité J2EE comme jGuard.
    à toi de voir le mieux adapté pour toi,

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par troubleshooting Voir le message
    Je souhaite que si l'utilisateur n'est pas connecté, celui-ci soit redirigé vers la page de login (en cas d'accès direct à une page par exemple).
    Citation Envoyé par troubleshooting Voir le message
    Je souhaite avoir une solution portable sur différents serveurs web.
    Le plus simple est de mettre un security-constraints dans ton web.xml et de définir une authentification par form

  7. #7
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Le plus simple est de mettre un security-constraints dans ton web.xml et de définir une authentification par form
    Il me semble que cette solution n'est pas compatible avec tous les serveurs, par exemple weblogic ou websphere?

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par Sniper37 Voir le message
    Il me semble que cette solution n'est pas compatible avec tous les serveurs, par exemple weblogic ou websphere?
    cette solution est compatible avec tout serveur respectant les spécification servlet!

  9. #9
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    cette solution est compatible avec tout serveur respectant les spécification servlet!
    Weblogic est certifié J2EE il me semble et si je ne m'abuse, la gestion de la sécurité ne se fait pas de la sorte. Ceci dit, ça fait longtemps que je n'ai pas utilisé un autre serveur que tomcat ou Jboos ma mémoire peux me trahir.

  10. #10
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu confond probablement la déclaration de la sécurité (via les security-constraint, via formulaire ou via authentification basic, via les roles) qui se fait de manière standard dans le web.xml et la gestion des utilisateurs / implémentation de la sécurité, qui est spécifique à chaque conteneur (tomcat utilise des realms, jBoss Jaas, d'autre conteneurs, d'autres trucs). Mais dans l'absolu, ton application n'a pas a se soucier de cette deuxième facette, c'est le conteneur qui s'en charge.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 141
    Par défaut
    Argh, j'essaye d'utiliser les security-constraints (sans formulaire), et je n'arrive pas à me débarrasser de l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    GRAVE: Exception performing authentication
    javax.naming.NameNotFoundException: Le Nom jdbc n'est pas lié à ce Contexte
    J'ai pourtant mis dans Context.xml (dans META-INF) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <Resource name="jdbc/myoracle" auth="Container"
                  type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
                      url="jdbc:oracle:thin:@serveur:1521:BASE"
                  username="login" password="pwd" maxActive="20" maxIdle="10"
                  maxWait="-1"/>
     
        <Realm className="org.apache.catalina.realm.DataSourceRealm" debug="99"
    	dataSourceName="jdbc/myoracle"
    	userTable="users" userNameCol="user_name" userCredCol="user_pass"
       userRoleTable="user_roles" roleNameCol="role_name"
    />
    et dans 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
    37
    38
    39
    40
    41
     
    <security-constraint>
            <display-name>Constraint1</display-name>
            <web-resource-collection>
                <web-resource-name>Protected</web-resource-name>
                <description/>
                <url-pattern>/*</url-pattern>
                <http-method>GET</http-method>
                <http-method>POST</http-method>
                <http-method>HEAD</http-method>
                <http-method>PUT</http-method>
                <http-method>OPTIONS</http-method>
                <http-method>TRACE</http-method>
                <http-method>DELETE</http-method>
            </web-resource-collection>
            <auth-constraint>
                <description/>
                <role-name>admin</role-name>
                <role-name>user</role-name>
            </auth-constraint>
        </security-constraint>
        <login-config>
            <auth-method>BASIC</auth-method>
            <realm-name>Espace Membres</realm-name>
        </login-config>
        <security-role>
            <description/>
            <role-name>admin</role-name>
        </security-role>
        <security-role>
            <description/>
            <role-name>user</role-name>
        </security-role>
     
     
        <resource-ref>
            <description>Oracle Datasource example</description>
            <res-ref-name>jdbc/myoracle</res-ref-name>
            <res-type>javax.sql.DataSource</res-type>
            <res-auth>Container</res-auth>
        </resource-ref>
    Vous voyez quelque chose d'anormal?

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 141
    Par défaut
    Je m'auto-répond, ça peut en aider d'autre, moi qui suis adepte de "RTFM", j'aurais du mieux lire, il fallait ajouter dans mon realm :

    Maintenant j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver
    Alors que j'ai bien mis classes12.jar dans le dossier Libraries du projet Netbeans...

  13. #13
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    d'abord le driver oracle, c'est ojdbc14.jar ou suppérieur, classes12.jar ca date de matusalem pour les version java 2

    ensuite les drivers sont à mettre dans le common/lib pour tomcat, pas dans le WEB-INF/lib

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 141
    Par défaut
    Merci pour l'info sur le driver, quand j'ai téléchargé InstantClient, il y'avait les 2 jars....

    Je ne vois pas de common/lib dans mon projet netbeans, je souhaiterais que le jar soit déployé en même temps que l'appli.

    Merci!

  15. #15
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu ne pourra pas. Les datasources, c'est une configuration de ton conteneur webapp. C'est ton conteneur qui a besoin de cet accès. De plus, il n'est pas recommandé de mettre des drivers JDBC dans la webapp, en raison des memory leak que ca provoque. Le common/lib est dans tomcat. La mise en place du driver et de la datasource faisant partie de la configuration du serveur et non de la webapp.

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 141
    Par défaut
    OK, merci pour ces précisions, et désolé de te faire répéter (j'ai lu un autre de tes postes à ce sujet).

    J'ai maintenant une nouvelle exception :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    GRAVE: Exception performing authentication
    org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Exception d'E/S: The Network Adapter could not establish the connection)
    Je penchais au début pour un problème de paramètrage de la connexion, mais ces paramètres semblent corrects!

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 141
    Par défaut
    C'était bien un problème de paramétrage

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 141
    Par défaut
    Bon allez, encore une question pour la route...

    Je souhaite mettre une authentification par formulaire jsf d'après le tuto, il faut en html normal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form action="j_security_check" method="post">
    <input type="text" name="j_username"/>
    <input type="password" name="j_password"/>
    <input type="submit" value="Connexion"/>
    </form>
    Ca doit donner quoi en JSF?

  19. #19
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ca ne donnera rien en JSF, tu dois le faire en html. Le première raison était que le action= est imposé par la spécification. Ca doit être j_security_check. La deuxième étant que les champs des deux unique entrées du formulaire sont aussi imposée. Tu peux bien sur mettre ca dans une page jsf pour profiter de l'accès aux bean (histoire d'affiche des truc autour du formulaire), mais tu ne dois ni utiliser h:form ni h:inputText, ca rien ne passera par JSF.

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

Discussions similaires

  1. [JSF 2] Gestion des URL avec des sous-dossiers
    Par facilus68 dans le forum JSF
    Réponses: 10
    Dernier message: 18/02/2015, 10h21
  2. Réponses: 21
    Dernier message: 02/02/2012, 15h33
  3. Gestion des connexions avec la base de donnée
    Par lr dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 11/02/2009, 03h47
  4. Gestion des exceptions avec JSF RI 1.2
    Par darsky dans le forum JSF
    Réponses: 5
    Dernier message: 12/11/2008, 12h25
  5. Réponses: 4
    Dernier message: 04/07/2002, 12h31

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