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

Servlets/JSP Java Discussion :

Ajouter du SSO et de la synchro LDAP à une application web


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 30
    Points : 11
    Points
    11
    Par défaut Ajouter du SSO et de la synchro LDAP à une application web
    Bonjour,
    Comment ajouter des possibilités de SSO (Single Sign On) à une application web (Servlet/Jsp) qui gère elle-même ses utilisateurs ?
    J’ai pensé à la solution suivante :
    • Une synchronisation des utilisateurs avec un annuaire LDAP qui se lance périodiquement. Cela ne me paraît pas compliqué, même si je voudrais que cela soit compatible avec un maximum d’annuaire différent, et que la configuration (mapping etc.) soit simple. Des bibliothèques à conseiller ?
    • Pour le SSO proprement dit, une servlet qui gère les demandes d’authentification et qui crée la session interne à l’application. C’est là que c’est plus flou. Dans l’idéal, j’aimerais un outil open source qui gère cela pour moi, avec des points d’entrés vers mon application lorsque l’utilisateur est OK. J’ai vu qu’il y avait plusieurs protocoles : NTLM, SAML (Liberty Alliance) etc..

    Je n’en suis qu’au début dans mes recherches. Je suis tombé sur JAAS de SUN, mais il y a sûrement d’autres framework/solutions.
    Quels sont vos experiences ?

    Merci d’avance,

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    Pas de réponse ? Peut-être que je ne suis pas dans la bonne catégorie.
    J'avous que ne sais pas trop quelle catégorie choisir...

  3. #3
    Membre confirmé

    Inscrit en
    Avril 2005
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 317
    Points : 553
    Points
    553
    Par défaut
    Il y a la solution CAS http://www.ja-sig.org/products/cas/

    Le principe est simple : Tu demandes à un serveur CAS de gérér l'authentification des utilisateurs (via ldap ou ce que tu veux)
    Puis dans chaque appli, tu rajoutes un bout de code qui vérifie si tu es logué. Sinon il te renoie sur le serveur CAS pour t'indentifier

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    Ca à l'air pas mal effectivement.
    Par contre, j'ai l'impression que ce n'est pas très développé en entreprise, qui utilisent plutôt NTLM (sur Windows uniquement) ou Kerberos.
    L'application sur laquelle je travail va être déployés dans différentes entreprises, donc autant miser sur les solutions les plus courantes.
    Remarque, vu que ça à l'air rapide à mettre en oeuvre, je pense que je vais faire un connecteur vers CAS, mais il faut aussi que j'implémente NTLM ou Kerberos.
    Que pensez-vous de JAAS ?
    J'ai vu aussi que acegi security gère CAS et les LDAP, mais malheureusement, le projet a son propre système de gestion des utilisateurs, et on ne peut pas le changer...
    J'ai l'impression que je ne vais pas trouver un connecteur qui s'adapte à la plupart des outils d'authentifications SSO ainsi qu'aux annuaires LDAP...

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2003
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 136
    Points : 143
    Points
    143
    Par défaut
    salut,
    tu peux utiliser jGuard qui repose sur JAAS.

    la dernière version 1.0.0 est sortie aujourd'hui.

    Charles.
    jGuard team.
    www.jguard.net

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    Merci bien !
    Je vais me pencher sur JGuard, ca a l'air bien.
    Par contre, je vois que ca repose sur JEE. On peut quand même utiliser JGuard sur une appli tournant exclusivement sur tomcat non ?

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Février 2003
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 136
    Points : 143
    Points
    143
    Par défaut
    Par contre, je vois que ca repose sur JEE. On peut quand même utiliser JGuard sur une appli tournant exclusivement sur tomcat non ?
    bien sûr!
    jGuard marche sur des applications tournant sur tomcat (c'est le serveur que nous avons le plus testé), et sur d'autres serveurs d'applications.

    amicalement,

    Charles.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    Bon, je viens d'essayer de démarrer avec JGuard, mais je suis bloqué à cause du manque de documentation.
    J'ai bien vu les exemples, mais cela ne m'aide pas trop...

    Je veux utiliser uniquement la partie Authentification pour pouvoir importer des utilisateurs depuis un annuaire LDAP, et profiter des modules de JAAS pour pouvoir faire du SSO en NTLM ou avec Kerberos.

    Je pensais créer un connecteur avec une interface dans le style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    /** Renvoit une map contenant les informations utilisateurs 
    extraits du LDAP ou autre (ex. Nom, Prenom, password, Mail, entreprise...) */
    Map<String, String> getInfosUtilisateurs(login)
     
    /** Renvoit vrai si l'utilisateur a été authentifié (en SSO par exemple).
     OU alors une servlet me renvoit vers une page spécifique 
    lorsque l'utilisateur est autentifié*/
    boolean estUtilisateurAuthentifié(login)
    Pour l'instant, j'ai des besoins assez simple, mais j'ai vraiment du mal à démarrer.
    Une fois que j'aurais réussi à faire ce que je veux faire, je pense faire une documentation (nécessaire à mon entreprise) que je donnerais à la communauté JGuard ;-)

    Merci d'avance !

    Samuel

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    En y regardant de plus prêt, j'ai l'impression que JGuard ne sait pas récupérer les attributs d'un utilisateur stocké dans un LDAP.
    J'ai absolument besoin de son nom prenom et de son mail.
    Mais je ne vois aucun fichier de mapping entre l'attribut LDAP et l'attribut Subject de JGuard.
    Je pense que je vais regarder du côté d'ACEGI..

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Février 2003
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 136
    Points : 143
    Points
    143
    Par défaut
    bonjour,
    jGuard permet l'interrogation d'un annuaire LDAP via le JNDILoginmodule.
    la récupération des attributs de l'entrée LDAP est réalisée si le pamaètre 'contextforcommit' est à true.

    si présent, il peuple automatiquement le subject de ces attributs.
    une petite coquille s'était glissée dans la configuration du JNDIloginmodule (une autre valeur était présente à la place de true).



    est-ce que cela marche maintenant?

    cordialement,

    Charles.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    Merci pour ta réponse diabolo512 !

    Comme tu me dis que l'import LDAP est possible, j'essaye de faire fonctionner les exemples sous eclipse. (C'est bien, il y a les .project pour eclipse ;-)

    Malheureusement, je n'arrive même pas à faire fonctionner l'exemple swing.
    L'appli swing se lance bien, mais lorsque je clique sur le bouton "Login", j'ai une exception : java.lang.SecurityException: Impossible de trouver une configuration de connexion.
    J'ai vu sur le net qu'il fallait spécifier l'argument d'exécution : -Djava.security.auth.login.config=java.login.config jGuardSwingExample

    Mais cela ne fonctionne toujours pas.
    Pourrais-tu m'expliquer comment faire pour exécuter l'exemple swing en mode debug sous Eclipse ? Comme ça, je pourrais faire mes expérimentations...

    PS : j'ai installé Maven 2, mais cela ne fonctionne pas lorsque je tappe mvn à la racine du projet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [INFO] Failed to resolve artifact.
     
    GroupId: net.sf.jguard
    ArtifactId: jguard
    Version: 1.0.0
     
    Reason: Unable to download the artifact from any repository
     
      net.sf.jguard:jguard:pom:1.0.0
     
    from the specified remote repositories:
      central (http://repo1.maven.org/maven2)

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Février 2003
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 136
    Points : 143
    Points
    143
    Par défaut
    salut,
    concernant maven2, les jars ne sont pas encore présent sur le repository central.
    une solution rapide est de les installer chacun dans ton repository local, via la commande pour jguard-core:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mvn install:install-file -DgroupId=net.sf.jguard -DartifactId=jguard-core -Dversion=1.0.0 -Dpackaging=jar -Dfile=path/to/your/file
    concernant l'exemple avec Swing, tu dois spécifier le chemin vers le fichier 'java.login.config' et non simplement son nom.
    par contre, l'exempl swing ne te permettra pas de tester la connexion avec un annuaire LDAP, car le JNDIloginmodule utilisé pour intéragir avec LDAP utilise comme son nom l'indique un annuaire JNDI, qui n'est disponible facilement qu'avec un serveur d'applications J2EE.
    il doit être possible d'en avoir un avec une appli standalone, mais je n'ai pas encore expérimenté la chose....
    donc pour en revenir à jguard, il faut que tu installes dans ton repo local maven les jars en attendant qu'ils soient dispo sur le repository maven global.
    pour info,le repository maven étant assez utilisé, la soumission de jars prend du temps.
    la solution est synchroniser un repository distant que l'on gère, avec le leur (ce quils conseillent).
    on est en train de mettre en place cela, ce qui explique le petit délai...


    as-tu testé le JNDIloginmodule dans ton appli sans mettre de point d'arrêt?

    cordialement,
    Charles.

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    Salut Charles,

    Comme tu me l'a conseillé, j'ai laissé tomber l'exemple swing, et j'ai commencé à intégrer JGuard dans mon appli en m'inspirant de l'exemple struts (je n'utilise pas struts). Je n'ai pas encore testé avec JNDIloginmodule (chaque chose en son temps

    Mais je suis bloqué, j'ai l'erreur suivante au démarrage :
    INFO: XML validation disabled
    - authentication scope = local
    - authentication scope = local
    25 janv. 2007 17:22:07 net.sf.jguard.ext.authentication.manager.AuthenticationManagerFactory createAuthenticationManager
    INFO: authenticationManagerImpl=net.sf.jguard.ext.authentication.manager.XmlAuthenticationManager
    - authorization scope = local
    25 janv. 2007 17:22:08 net.sf.jguard.core.authorization.permissions.PermissionUtils createCaches
    INFO: Creating caches for permissions evaluations
    25 janv. 2007 17:23:06 net.sf.jguard.core.authorization.permissions.PermissionUtils getPermission
    GRAVE: className=net.sf.jguard.core.authorization.permissions.URLPermission
    25 janv. 2007 17:23:06 net.sf.jguard.core.authorization.permissions.PermissionUtils getPermission
    GRAVE: name=accessDenied
    25 janv. 2007 17:23:06 net.sf.jguard.core.authorization.permissions.PermissionUtils getPermission
    GRAVE: actions=/accessDenied.jsp
    - Exception lors de l'envoi de l'évènement contexte initialisé (context initialized) à l'instance de classe d'écoute (listener) net.sf.jguard.jee.listeners.ContextListener
    java.lang.NullPointerException
    at net.sf.jguard.ext.authorization.manager.XmlAuthorizationManager.initPermissions(XmlAuthorizationManager.java:218)
    at net.sf.jguard.ext.authorization.manager.XmlAuthorizationManager.init(XmlAuthorizationManager.java:123)
    at net.sf.jguard.ext.authorization.manager.XmlAuthorizationManager.init(XmlAuthorizationManager.java:102)
    at net.sf.jguard.ext.authorization.AuthorizationManagerFactory.createAuthorizationManager(AuthorizationManagerFactory.java:71)
    at net.sf.jguard.ext.authorization.AuthorizationHelper.initAuthorization(AuthorizationHelper.java:90)
    at net.sf.jguard.jee.listeners.ContextListener.initAuthorization(ContextListener.java:143)
    at net.sf.jguard.jee.listeners.ContextListener.contextInitialized(ContextListener.java:105)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3727)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4162)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1012)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1012)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
    at org.apache.catalina.core.StandardService.start(StandardService.java:450)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:551)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:275)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
    25 janv. 2007 17:23:06 org.apache.catalina.core.StandardContext start
    GRAVE: Error listenerStart
    Cette exception concerne les permissions. Or, pour l'instant, je vais juste utiliser JGuard pour son module d'authentification. Jguard peut fonctionner sans son module Authorization ?
    Parce que j'ai essayé d'enlever les fichiers xml correspondant aux Authorisations (comme jGuardAuthorization.xml, et les jGuardPrincipalsPermissions ), mais j'ai eu une autre exception...

    Merci d'avance,

    Cordialement,
    Samuel

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Février 2003
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 136
    Points : 143
    Points
    143
    Par défaut
    salut Samuel,
    désolé de répondre si tardivement.
    ton problème apparait-il aussi avec la version 1.0 de jguard publiée le 15 janvier 2007?

    amicalement,

    Charles.

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Je suis dans le même cas ( le même projet de SSO LDAP ) et j'aimerai savoir si vous êtes parvenus a une authentification fonctionnel.

    Merci

Discussions similaires

  1. Ajouter service web à une application web
    Par archer dans le forum Services Web
    Réponses: 4
    Dernier message: 10/06/2011, 11h43
  2. [Security] [LDAP, SSL] Ajouter un certificat dans une Application Web
    Par enjoy dans le forum Spring
    Réponses: 1
    Dernier message: 20/02/2009, 12h02
  3. [SSO] Single Sign On en LDAP pour une appli web
    Par imsory dans le forum Sécurité
    Réponses: 4
    Dernier message: 21/05/2008, 21h58
  4. Réponses: 4
    Dernier message: 21/05/2008, 14h27
  5. Réponses: 3
    Dernier message: 10/05/2007, 21h27

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