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

Java EE Discussion :

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


Sujet :

Java EE

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 48
    Points : 18
    Points
    18
    Par défaut Accès sécurisé et authentification avec EJB3/jboss
    Bonjour

    Je suis sur un projet EJB3/JSF Oracle9i Jboss. Je dispose (entre autre) d'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).

    Enfin je ne sais pas si j'étais assez claire pour vous ou pas....Mais bon, quelqu'un pourrait peut être me mettre sur une piste pour commencer (avec liens de doc si possible). Je suis nouveau dans les EJB3

    Je sais pas non plus si un annuaire LDAP serai nécessaire, car je dispose déjà d'une table utilisateur avec mot de passe login, email...Donc je pense que l'authentification devrait peut être passez par un EJB
    Qu'en dites vous??

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de longbeach
    Profil pro
    Architecte de système d’information
    Inscrit en
    Avril 2003
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Avril 2003
    Messages : 943
    Points : 2 370
    Points
    2 370
    Par défaut
    2 liens :

    http://www.developpez.net/forums/d44...hose-mechappe/

    http://download-uk.oracle.com/docs/c...ervsecr004.htm

    EJB 3 a des annotations sympas pour gérer les rôles, la sécurité etc ...

    L'idéal c'est de passer par un LDAP, mais je connais pas la taille de ton projet.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 48
    Points : 18
    Points
    18
    Par défaut
    Bonjour longbeach

    Je te remercie pour ton aide.
    En fait, dans ce projet chaque utilisateur (une fois authentifié) doit pouvoir visualiser et modifier certains champs d'une table ''T''. D'où mon besoin à attribuer des droits et ou des profil si on veut!
    Je ne sais pas si les EJB3 gèrent bien les annuaires LDAP (comme ils le font avec les BADO), et puis dans l'application, je dois avoir une page d'inscription pour les nouveaux utilisateurs et c'est pour ça d'ailleurs que j'ai choisit de rajouter une table ''utilisateurs'' qui est facilement maniable avec les annotations EJB3 (ajout, suppression ...).
    Après, si tous cela est bien faisable avec LDAP et EJB3 je serai preneur bien sure

    Alors LDAP ou Table ''utilisateur'' à ton avis?

  4. #4
    Rédacteur
    Avatar de longbeach
    Profil pro
    Architecte de système d’information
    Inscrit en
    Avril 2003
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Avril 2003
    Messages : 943
    Points : 2 370
    Points
    2 370
    Par défaut
    Citation Envoyé par magnum_cl9 Voir le message
    Bonjour longbeach

    Je te remercie pour ton aide.
    En fait, dans ce projet chaque utilisateur (une fois authentifié) doit pouvoir visualiser et modifier certains champs d'une table ''T''. D'où mon besoin à attribuer des droits et ou des profil si on veut!
    Je ne sais pas si les EJB3 gèrent bien les annuaires LDAP (comme ils le font avec les BADO), et puis dans l'application, je dois avoir une page d'inscription pour les nouveaux utilisateurs et c'est pour ça d'ailleurs que j'ai choisit de rajouter une table ''utilisateurs'' qui est facilement maniable avec les annotations EJB3 (ajout, suppression ...).
    Après, si tous cela est bien faisable avec LDAP et EJB3 je serai preneur bien sure

    Alors LDAP ou Table ''utilisateur'' à ton avis?
    Moi je pense que pour ton besoin tu peux utiliser une table Utilisateurs.
    Et puis une table Profils.

    Je suis justement en train de travailler sur ça, je fais simple, avec une seule table :une simple table Utilisateurs avec une colonne Profils.

    T'as commencé à coder l'accès aux ressources, suivant les profils de tes utilisateurs ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 48
    Points : 18
    Points
    18
    Par défaut
    non pas encore... c'est justement pour ça que je me pose la question BD ou LDAP pour savoir comment faire au niveau de l'accés.
    L'idée d'une colonne Profil dans utilisateur me semble bien aussi. Mais après, il me semble que l'accès aux ressources sera un peu lourd non?? enfin si j'ai bien compris, il y aura toujours des testes genre ' utilisateur : profil ' pour donner accès ou non ou bien afficher un composant!!

    Sinon, pour la connexion au départ...faut il garder l'identifiant de l'utilisateur qui s'est connecté pour pouvoir récupérer tous les champs qui le concerne depuis la table ''T'' non?

  6. #6
    Rédacteur
    Avatar de longbeach
    Profil pro
    Architecte de système d’information
    Inscrit en
    Avril 2003
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Avril 2003
    Messages : 943
    Points : 2 370
    Points
    2 370
    Par défaut
    Citation Envoyé par magnum_cl9 Voir le message
    non pas encore... c'est justement pour ça que je me pose la question BD ou LDAP pour savoir comment faire au niveau de l'accés.
    L'idée d'une colonne Profil dans utilisateur me semble bien aussi. Mais après, il me semble que l'accès aux ressources sera un peu lourd non?? enfin si j'ai bien compris, il y aura toujours des testes genre ' utilisateur : profil ' pour donner accès ou non ou bien afficher un composant!!

    Sinon, pour la connexion au départ...faut il garder l'identifiant de l'utilisateur qui s'est connecté pour pouvoir récupérer tous les champs qui le concerne depuis la table ''T'' non?
    en general on sauve en session, ou dans un contexte (objets de ton code) l'id de l'utilisateur qui s'est connecté.

    tu pensais à autre chose peut-être ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 48
    Points : 18
    Points
    18
    Par défaut
    ah non je n'en suis pas là encore... mais cela ne tardera pas à venir!
    Là je me documente un peu sur le framework JSF.... et vu que la doc n'est pas trop dispo, cela me bloque un peu!
    Merci bien pour ton aide

  8. #8
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 44
    Points : 23
    Points
    23
    Par défaut Exactement le même soucis
    Salut a tous.
    Moi aussi j'ai le même soucis: une application 4 tiers oû l'authentification est primordiale.
    L'idée qui m'est venu a l'esprit, c'est de crée un EJB stateful qui joue le role du pattern facade, oû je teste le login et MDP de l'utilisateur. Si c'est bon, l'EJB ouvre la voie entre les servlet et l'applicatif!!!! ( toute les transactions passe par lui).
    Si non, il boque tout, et revoie un message d'erreur!!!
    Votre avis SVP, car c'est une idée qui me semble un peut primitive.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 48
    Points : 18
    Points
    18
    Par défaut
    Bonjour longbeach

    Me revoilà penché sur la même question.
    J'ai bien examiné tes liens entre autres. Sauf erreur de ma part, Je pense que les annotations EJB3 ainsi que que le processus d'authentification se basent sur des rôles et des identités gérés par le serveur d'application via des fichiers de config en XML (Jboss dans mon cas).

    Je pense que dans ce cas, tous les rôles et login/mp doivent être déclarés au niveau du serveur, alors que mon but est de passer via ma table 'UTILISATEUR' pour la gestion des login/mp et surtout pour gérer la partie présentation selon les différents profils avec JSF.
    Je dois passer par cette table, car dans l'application, il doit y avoir la possibilité de se créer un compte, et donc pouvoir rajouter son login et mot de passe dans la table.

    As tu avancé de ton coté? pourrais tu STP m'expliquer exactement comment tu fais avec quelques exemples ??

  10. #10
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Je pense que dans ce cas, tous les rôles et login/mp doivent être déclarés au niveau du serveur,
    Pas du tout !
    Tu peux très bien relier le processus d'authentification à une base de données. Il suffit juste de choisir le bon REALM.

    Sur JBOSS, j'avais réalisé cela en rajoutant quelques lignes dans le fichier login-config.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <application-policy name="testAuthentification">
    		<authentication>
    			<login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
    				<module-option name="dsJndiName">java:/MaBaseDS</module-option>
    				<module-option name="principalsQuery"> select password from users where username=?</module-option>
    				<module-option name="rolesQuery"> select role, 'Roles' from roles where username=?</module-option>
    			</login-module>
    		</authentication>
    	</application-policy>
    Puis le fichier jboss-web.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <security-domain>java:/jaas/testAuthentification </security-domain>

  11. #11
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Après, il faut bien évidemment paramétrer la partie sécurité du web.xml.
    Par 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
    15
    16
    17
    18
    19
    20
    21
    22
     
        <security-constraint>
            <web-resource-collection>
                <web-resource-name>Secure Content</web-resource-name>
                <url-pattern>/</url-pattern>
            </web-resource-collection>
            <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>BASIC</auth-method>
        </login-config>
     
        <security-role>
            <description>The role required to access restricted content </description>
            <role-name>admin</role-name>
        </security-role>
    Ce n'est qu'un exemple qu'il faudra adapter à tes besoins.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 48
    Points : 18
    Points
    18
    Par défaut
    Bonjour fr1man

    Tout d'abord, merci bien pour ta réponse.
    Je viens de trouver un lien parlant de la même chose effectivement:
    http://www.jtips.info/index.php?title=J2EE/JAAS

    J'essayerai ceci et je reveindrai certainement en cas de soucis

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 48
    Points : 18
    Points
    18
    Par défaut
    Bon d'accord, maintenant tout commence à devenir plus clair.
    Ce processus sert à gérer l'accès au différentes parties de l'application.

    Maintenant, j'aimerai bien savoir la relation des annotation de sécurité de EJB3 avec tout ceci!

    #1- Ça ne serait pas suffisant de bien gérer l'appel (appel au niveau du JSP+JSF) des bons bean et méthodes au bon endroits (pages déjà sécurisées par Jboss) pour les bon utilisateurs (utilisateur ayant droits selon profil ou rôle) ??

    #2-Dois je utiliser ces annotations pour protéger mes méthodes, ou bien il suffit d'afficher les boutons d'action et les champs selon la nature du profil, cad en faisant toujours un test sur le champs 'role' ou 'profile' de la session?

  14. #14
    Rédacteur
    Avatar de longbeach
    Profil pro
    Architecte de système d’information
    Inscrit en
    Avril 2003
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Avril 2003
    Messages : 943
    Points : 2 370
    Points
    2 370
    Par défaut
    magnum_cl9, pour répondre à ta question en PM :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SecurityClient securityClient = SecurityClientFactory.getSecurityClient();
    securityClient.setSimple("toto", "toto");
    securityClient.login();
     
    InitialContext ctx = new InitialContext();
    TitiBean= (TitiBean) ctx.lookup("NomAppli/Titi/remote");
    Après tu utilises les annotations EJB 3 pour gérer les droits sur les méthodes.
    Tu peux te passer de callbackHandler

    Si tu as d'autres questions, n'hésites pas à les poser ici (pas en PM).

  15. #15
    Invité
    Invité(e)
    Par défaut Serveur
    Bonjour,
    Es ce que quelqu'un pourrez m'aider à me donner une idée pour établir une aplication qui télécharge un fichier sur 2 emplacement
    la première moitier de fichier est téléchargé sur le premier emplacement
    et la seconde moitier de fichier sur le deuxième emplacement

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 48
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par longbeach Voir le message
    magnum_cl9, pour répondre à ta question en PM :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SecurityClient securityClient = SecurityClientFactory.getSecurityClient();
    securityClient.setSimple("toto", "toto");
    securityClient.login();
     
    InitialContext ctx = new InitialContext();
    TitiBean= (TitiBean) ctx.lookup("NomAppli/Titi/remote");
    Après tu utilises les annotations EJB 3 pour gérer les droits sur les méthodes.
    Tu peux te passer de callbackHandler

    Si tu as d'autres questions, n'hésites pas à les poser ici (pas en PM).

    Bonjour longbeach

    Merci de m'avoir répondu.
    J'ai trouvé ici un article qui parle de cette solution mais en utilisant les fichiers users.properties et roles.properties de jboss.
    Dans mon cas, j'utilise une table ''User'' pour les login et MP. Donc, je pense que je devrai passer par le LoginModule de Base de données de Jboss, à savoir le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    " org.jboss.security.auth.spi.DatabaseServerLoginModule "
    et dans ce cas, c'est au niveau des annotation EJB3 qu'il faut faire appelle à @SecurityDomain je pense pour spécifier le LonginModule non?



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    securityClient.setSimple("toto", "toto");
    Par contre, ici il faut changer les toto par le login et MP saisis par le l'utilisateur je pense.... sinon ça ne serait pas logique de créer autant de securityClient que de user présents dans la case (merci de me corriger si ceci est faut).

    Pour ta question du MP concernant la mise en place d'un LDAP, en fait j'ai fini par abandonner cette soluce pour éviter de dupliquer les données des utilisateurs (puisque toutes les données dont j'ai besoins sont déjà dans la table User). Donc j'ai fait simple, comme tu me l'a conseillé d'ailleurs

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. Réponses: 6
    Dernier message: 07/07/2013, 12h04
  3. 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
  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