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

Spring Java Discussion :

[Spring LDAP] Spring LDAP un peu paumé [Security]


Sujet :

Spring Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 13
    Points : 9
    Points
    9
    Par défaut [Spring LDAP] Spring LDAP un peu paumé
    Bonjour,

    le but de l'opération est de migrer un process de login classique vers un login via LDAP.

    j'ai mis en place spring, spring security et LDAP sur mon projet web.
    j'ai défini le contextSource avec l'url de mon serveur LDAP.

    Si je comprends bien le DistinguishedName equivaut grosso modo au login sous LDAP.

    ma question est, est ce possible de paramétrer spring pour m'interfacer avec un formulaire de saisie login/pass (qui viendrais alimenter la donnée DN)? pour conserver l'ancienne cinématique.

    merci les mecs!

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 143
    Points : 157
    Points
    157
    Par défaut
    Bonjour,

    Je suppose que tu migres d'une configuration JDBC vers LDAP : donc oui tout cela est possible sans aucune modification du formulaire de login.
    Ce sont deux choses bien séparées dans Spring Security, changer de "provider" n'entraine pas de changement dans le reste de Spring Security.
    Plus d'infos sur la configuration :
    http://static.springframework.org/sp...html/ldap.html

    Nous fournissons également un exemple de configuration avec LDAP dans les exemples fournis avec Spring Security, tu peux t'en inspirer.
    Julien Dubois

    http://www.ippon.fr

  3. #3
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Sous LDAP, tu fais ta connection normale avec ton login+pwd avec le tutim
    novel/...... et ton bind avec le DN correspondant, bref n'est pas ton pb.

    Sous LADP, tu as toute les infos que tu veux maintenant il reste à decouper ton DN avec un login approprié et le pwd retour LADP
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    ouais je m'en suis sorti, en fait j'ai bataillé un peu avec la conf spring. ce qui donne:

    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
    	<security:http auto-config="true">
     
    		<security:intercept-url pattern="/login*"
    			access="IS_AUTHENTICATED_ANONYMOUSLY" />
    		<security:intercept-url pattern="/logoutSuccess*"
    			access="IS_AUTHENTICATED_ANONYMOUSLY" />
    		<security:intercept-url pattern="/**" access="ROLE_USER, ROLE_DEV_MAIN" />
    		<security:form-login 
    			login-page=""
    			login-processing-url="" 
    			default-target-url=""
    			authentication-failure-url="" />
    		<security:logout logout-url="" logout-success-url="" />
    	</security:http>
     
    	<security:ldap-server url="${projet..securityContext.ldap.server.prod}" />
    	<security:ldap-authentication-provider user-dn-pattern=${projet.securityContext.ldap.dn}/>
    	<security:ldap-user-service user-search-filter="${projet..securityContext.ldap.userSearch}" />
     
    	<bean id="propertyPlaceholderConfigurer"
    		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    		<property name="location">
    			<value>/WEB-INF/config/ldap.properties
    			</value>
    		</property>
    	</bean>

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 143
    Points : 157
    Points
    157
    Par défaut
    Vu que tu as utilisé un namespace pour configurer Spring Security, une petite astuce : il existe également un namespace pour le propertyPlaceholderConfigurer, ce qui t'améliorera ton fichier de config (plus court et moins de risques d'erreur). Il faut pour cela que tu utilises :

    <context:property-placeholder location="/WEB-INF/config/ldap.properties
    "/>
    Julien Dubois

    http://www.ippon.fr

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par julien.dubois Voir le message
    Vu que tu as utilisé un namespace pour configurer Spring Security, une petite astuce : il existe également un namespace pour le propertyPlaceholderConfigurer, ce qui t'améliorera ton fichier de config (plus court et moins de risques d'erreur). Il faut pour cela que tu utilises :

    <context:property-placeholder location="/WEB-INF/config/ldap.properties
    "/>
    ah super!

    j'en profite pour poser une question au sujet du placeHOlder

    en réalité ca fonctionne parfaitement pour le name space ldap-server et ldap-user-service, par contre pour une raison que j'ignore ca ne fonctionne pas sur ldap-authentication-provider. en effet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <security:ldap-authentication-provider user-dn-pattern="${projet.securityContext.ldap.distinguishName}"/>
    me retourne une erreur:
    Property 'userDnPatterns' threw exception; nested exception is java.lang.IllegalArgumentException: can't parse argument number projet.securityContext.ldap.distinguishName

    je suis obligé de mettre la chaine directement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <security:ldap-authentication-provider user-dn-pattern="cn={0},cn=Users,dc=blabla,dc=fr"
    c'est d'autant plus bizzare que c'est la même chaine que pour le user-service

  7. #7
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 143
    Points : 157
    Points
    157
    Par défaut
    propertyPlaceholderConfigurer est un BeanFactoryPostProcessor, donc il devrait marcher partout : il n'y a pas de lien entre le remplacement de la variable par sa valeur, et un nom XML quelconque.
    Dans ton message précédent, avec ta configuration complète, il n'est pas entouré de guillemets, c'est sans doute cela ton problème?
    Il faut remplacer
    <security:ldap-authentication-provider user-dn-pattern=${projet.securityContext.ldap.dn}/>

    Par :

    <security:ldap-authentication-provider user-dn-pattern="${projet.securityContext.ldap.dn}"/>
    Julien Dubois

    http://www.ippon.fr

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    si il y a bien les guillemets, juste une erreur ds mon message, mais c'est pas grave. c'est pas bloquant comme pb

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

Discussions similaires

  1. [LDAP] Recherche LDAP/AD en php
    Par Eddu37 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 20/07/2007, 13h19
  2. [LDAP] Authentification LDAP via nom d'utilisateur/mot de passe en PHP
    Par hismaella dans le forum Bibliothèques et frameworks
    Réponses: 14
    Dernier message: 21/03/2007, 15h28
  3. [JNDI/LDAP] Requête LDAP ordonnée
    Par nesbla dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 22/06/2006, 09h38
  4. [LDAP] connexion LDAP
    Par abertaud dans le forum API standards et tierces
    Réponses: 15
    Dernier message: 20/07/2005, 09h49
  5. Un peu paumé, votre avis !
    Par hmpnet dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 16/01/2005, 16h57

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