Bonjour à tous,
je me permets de vous solliciter, j'essaie de réaliser une "authentification" ldap avant de lancer des traitements dans un script (en bash). Je n'utilise peut-être pas la bonne technique, mais voilà ce que je souhaiterai faire :
1. faire saisir login/passord au user 2. récupérer les infos sur le ldap 3. via un traitement, être capable de pouvoir comparer les 2 hash (si c'est possible)
La saisie c'est pas bien compliqué, ensuite je vais chercher les infos :
--- ldapsearch -D "cn=admin,dc=entreprisetartempion,dc=fr" -w password -p 389 -h serveurldap -b "dc=entreprisetartempion,dc=fr" -s sub "uid=jeanclaudedusse" -LLL userPassword
dn: cn=jean claude dusse,ou=people,dc=entreprisetartempion,dc=fr userPassword:: e0NSWVBUfSQxJFhiREZKYXRoJHRrc2xEdHNWaTRzaVUvb0xBVkxISDE= ---
un petit coup de décode en base 64:
--- echo 'e0NSWVBUfSQxJFhiREZKYXRoJHRrc2xEdHNWaTRzaVUvb0xBVkxISDE=' |base64 -d; echo {CRYPT}$1$XbDFJath$tkslDtsVi4siU/oLAVLHH1 ---
Je suis content mais je n'arrive a générer le hash de mon password pour pouvoir le comparer.
Ca sent la question stupide, mais vu que je suis bloqué, je me permets de vous déranger '')
Alex.
Bonjour,
On Tue, 09 Sep 2014 16:51:32 +0200 Alexandre infos@opendoc.net wrote:
| je me permets de vous solliciter, j'essaie de réaliser une | "authentification" ldap avant de lancer des traitements dans un script | (en bash). Je n'utilise peut-être pas la bonne technique, mais voilà ce | que je souhaiterai faire : | | 1. faire saisir login/passord au user | 2. récupérer les infos sur le ldap | 3. via un traitement, être capable de pouvoir comparer les 2 hash (si | c'est possible) | | La saisie c'est pas bien compliqué, ensuite je vais chercher les infos : | | --- | ldapsearch -D "cn=admin,dc=entreprisetartempion,dc=fr" -w password -p | 389 -h serveurldap -b "dc=entreprisetartempion,dc=fr" -s sub | "uid=jeanclaudedusse" -LLL userPassword | | dn: cn=jean claude dusse,ou=people,dc=entreprisetartempion,dc=fr | userPassword:: e0NSWVBUfSQxJFhiREZKYXRoJHRrc2xEdHNWaTRzaVUvb0xBVkxISDE= | --- | | un petit coup de décode en base 64: | | --- | echo 'e0NSWVBUfSQxJFhiREZKYXRoJHRrc2xEdHNWaTRzaVUvb0xBVkxISDE=' |base64 | -d; echo | {CRYPT}$1$XbDFJath$tkslDtsVi4siU/oLAVLHH1 | --- | | Je suis content mais je n'arrive a générer le hash de mon password pour | pouvoir le comparer. | | Ca sent la question stupide, mais vu que je suis bloqué, je me permets | de vous déranger '')
La façon correct d'authentifier un utilisateur, à mon sens est de faire un ldap_bind avec son dn et son mdp en clair, à charge pour ldap de répondre OK ou NOK.
Sinon, pour faire exactement ce que tu veux, il faut que tu te serves du prefix ({CRYPT}), du salt (XbDFJath) et de l'info sur l'encodage (le $1$ au debut) pour savoir comment hasher ton mdp en clair.
Quelques liens la dessus: http://www.splitbrain.org/blog/2008-07/28-working_with_password_hashes_in_ph... http://wiki2.dovecot.org/Authentication/PasswordSchemes
Manuel
-- ______________________________________________________________________ Manuel Guesdon - OXYMIUM
On Tue, Sep 09, 2014 at 04:51:32PM +0200, Alexandre wrote:
Bonjour à tous,
bonjour,
je me permets de vous solliciter, j'essaie de réaliser une "authentification" ldap avant de lancer des traitements dans un script (en bash). Je n'utilise peut-être pas la bonne technique, mais voilà ce que je souhaiterai faire :
- faire saisir login/passord au user
- récupérer les infos sur le ldap
- via un traitement, être capable de pouvoir comparer les 2 hash (si c'est
possible)
Pourquoi comparer a la main alors qu'il suffit de tenter un "bind" ?
ldapsearch -D "uid=jeanclaudedusse,dc=entreprisetartempion,dc=fr" -w "$pwd" -p 389 -h serveurldap -b "dc=entreprisetartempion,dc=fr" -s base -LLL uid
si la commande fonctionne c'est que le pwd est bon.
a+,
Le 2014-09-09 16:51, Alexandre a écrit :
Bonjour à tous,
je me permets de vous solliciter, j'essaie de réaliser une "authentification" ldap avant de lancer des traitements dans un script (en bash). Je n'utilise peut-être pas la bonne technique, mais voilà ce que je souhaiterai faire :
- faire saisir login/passord au user
- récupérer les infos sur le ldap
- via un traitement, être capable de pouvoir comparer les 2 hash (si
c'est possible)
La saisie c'est pas bien compliqué, ensuite je vais chercher les infos :
ldapsearch -D "cn=admin,dc=entreprisetartempion,dc=fr" -w password -p 389 -h serveurldap -b "dc=entreprisetartempion,dc=fr" -s sub "uid=jeanclaudedusse" -LLL userPassword
dn: cn=jean claude dusse,ou=people,dc=entreprisetartempion,dc=fr userPassword:: e0NSWVBUfSQxJFhiREZKYXRoJHRrc2xEdHNWaTRzaVUvb0xBVkxISDE=
un petit coup de décode en base 64:
echo 'e0NSWVBUfSQxJFhiREZKYXRoJHRrc2xEdHNWaTRzaVUvb0xBVkxISDE=' |base64 -d; echo {CRYPT}$1$XbDFJath$tkslDtsVi4siU/oLAVLHH1
Je suis content mais je n'arrive a générer le hash de mon password pour pouvoir le comparer.
Ca sent la question stupide, mais vu que je suis bloqué, je me permets de vous déranger '')
Alex.
Du coup l'utilisateur qui a accès à ton script peut lire le mot de passe de ton utilisateur superadmin cn=admin de ton LDAP ?
C'est vraiment ce que tu cherches à faire ?
Parce que tu coup l'intérêt de protéger par authentification user/password alors que tout le monde connait le mot de passe admin, j'ai un doute...
Expose peut-être ton besoin plutôt que la solution que tu veux mettre en œuvre....
Cdlt,
JYL
Bonjour Alexandre,
Effectivement, la méthode n'est pas optimale. L'idée d'une authentification LDAP est que c'est le serveur LDAP qui fait le calcul et la comparaison des hash. Pour cela, l'enchaînement à suivre est du style : 1. Récupérer le login/mdp du user 2. Se connecter au LDAP avec le compte d'administration pour trouver le DN de l'utilisateur grâce à son login. Si la recherche échoue, c'est que le login/mdp du user est incorrect 3. Se déconnecter du LDAP 4. Se connecter au LDAP avec le DN de l'utilisateur précédemment trouvé et le mdp du user. Si la connexion échoue, c'est que le couple login/mdp du user est incorrect.
Grâce à cette méthode tu es indépendant de l'algo de hash utilisé par ton LDAP et tu n'as pas besoin de récupérer l'attribut userPassword.
Bon courage à toi!
Le 9 septembre 2014 16:51, Alexandre infos@opendoc.net a écrit :
Bonjour à tous,
je me permets de vous solliciter, j'essaie de réaliser une "authentification" ldap avant de lancer des traitements dans un script (en bash). Je n'utilise peut-être pas la bonne technique, mais voilà ce que je souhaiterai faire :
- faire saisir login/passord au user
- récupérer les infos sur le ldap
- via un traitement, être capable de pouvoir comparer les 2 hash (si
c'est possible)
La saisie c'est pas bien compliqué, ensuite je vais chercher les infos :
ldapsearch -D "cn=admin,dc=entreprisetartempion,dc=fr" -w password -p 389 -h serveurldap -b "dc=entreprisetartempion,dc=fr" -s sub "uid=jeanclaudedusse" -LLL userPassword
dn: cn=jean claude dusse,ou=people,dc=entreprisetartempion,dc=fr userPassword:: e0NSWVBUfSQxJFhiREZKYXRoJHRrc2xEdHNWaTRzaVUvb0xBVkxISDE=
un petit coup de décode en base 64:
echo 'e0NSWVBUfSQxJFhiREZKYXRoJHRrc2xEdHNWaTRzaVUvb0xBVkxISDE=' |base64 -d; echo {CRYPT}$1$XbDFJath$tkslDtsVi4siU/oLAVLHH1
Je suis content mais je n'arrive a générer le hash de mon password pour pouvoir le comparer.
Ca sent la question stupide, mais vu que je suis bloqué, je me permets de vous déranger '')
Alex. _______________________________________________ Liste de diffusion du FRsAG http://www.frsag.org/
Salut,
j'appuie le point 2 cité par Florent ! Toujours récupérer le véritable DN de l'utilisateur avant de binder.
Ca coute une connexion supplémentaire et ca oblige à entrer en dur les credentials d'un compte de service avec les droits suffisants dans le code mais ca peut éviter bien des galères et ca garantie une certaine portabilité de ton code.
Trop d'applications estiment que le RDN vaut le login entré par l'utilisateur et qui tente une connexion LDAP directe avec un DN forgé à partir de cette information. Ca dépend également du DIT. On peut faire une vue dédiée, mais bon...
________________________________ De : FRsAG [frsag-bounces@frsag.org] de la part de Florent Bacci [florentbacci@gmail.com] Date d'envoi : mardi 9 septembre 2014 17:19 À : Alexandre Cc: French SysAdmin Group Objet : Re: [FRsAG] comparaison du hash d'un password
Bonjour Alexandre,
Effectivement, la méthode n'est pas optimale. L'idée d'une authentification LDAP est que c'est le serveur LDAP qui fait le calcul et la comparaison des hash. Pour cela, l'enchaînement à suivre est du style : 1. Récupérer le login/mdp du user 2. Se connecter au LDAP avec le compte d'administration pour trouver le DN de l'utilisateur grâce à son login. Si la recherche échoue, c'est que le login/mdp du user est incorrect 3. Se déconnecter du LDAP 4. Se connecter au LDAP avec le DN de l'utilisateur précédemment trouvé et le mdp du user. Si la connexion échoue, c'est que le couple login/mdp du user est incorrect.
Grâce à cette méthode tu es indépendant de l'algo de hash utilisé par ton LDAP et tu n'as pas besoin de récupérer l'attribut userPassword.
Bon courage à toi!
Le 9 septembre 2014 16:51, Alexandre <infos@opendoc.netmailto:infos@opendoc.net> a écrit : Bonjour à tous,
je me permets de vous solliciter, j'essaie de réaliser une "authentification" ldap avant de lancer des traitements dans un script (en bash). Je n'utilise peut-être pas la bonne technique, mais voilà ce que je souhaiterai faire :
1. faire saisir login/passord au user 2. récupérer les infos sur le ldap 3. via un traitement, être capable de pouvoir comparer les 2 hash (si c'est possible)
La saisie c'est pas bien compliqué, ensuite je vais chercher les infos :
--- ldapsearch -D "cn=admin,dc=entreprisetartempion,dc=fr" -w password -p 389 -h serveurldap -b "dc=entreprisetartempion,dc=fr" -s sub "uid=jeanclaudedusse" -LLL userPassword
dn: cn=jean claude dusse,ou=people,dc=entreprisetartempion,dc=fr userPassword:: e0NSWVBUfSQxJFhiREZKYXRoJHRrc2xEdHNWaTRzaVUvb0xBVkxISDE= ---
un petit coup de décode en base 64:
--- echo 'e0NSWVBUfSQxJFhiREZKYXRoJHRrc2xEdHNWaTRzaVUvb0xBVkxISDE=' |base64 -d; echo {CRYPT}$1$XbDFJath$tkslDtsVi4siU/oLAVLHH1 ---
Je suis content mais je n'arrive a générer le hash de mon password pour pouvoir le comparer.
Ca sent la question stupide, mais vu que je suis bloqué, je me permets de vous déranger '')
Alex. _______________________________________________ Liste de diffusion du FRsAG http://www.frsag.org/
-- Florent Bacci
C'est parfait comme d'hab '')
- première connection pour chopper le dn (-LLL dn) - je construis la requête avec les bonnes infos, et je récupère le code retour du ldapsearch.
Je vous confirme que c'est fonctionnel, par contre effectivement, je suis obligé de mettre le password de l'admin du ldap. Dans mon cas c'est pas critique, sachant que le but est de valider que la personne utilisant le script est bien authentifiée, et cela me permets de logger les infos.
Alex.
On 09/09/14 17:34, HURTEVENT VINCENT wrote:
Salut,
j'appuie le point 2 cité par Florent ! Toujours récupérer le véritable DN de l'utilisateur avant de binder.
Ca coute une connexion supplémentaire et ca oblige à entrer en dur les credentials d'un compte de service avec les droits suffisants dans le code mais ca peut éviter bien des galères et ca garantie une certaine portabilité de ton code.
Trop d'applications estiment que le RDN vaut le login entré par l'utilisateur et qui tente une connexion LDAP directe avec un DN forgé à partir de cette information. Ca dépend également du DIT. On peut faire une vue dédiée, mais bon...
*De :* FRsAG [frsag-bounces@frsag.org] de la part de Florent Bacci [florentbacci@gmail.com] *Date d'envoi :* mardi 9 septembre 2014 17:19 *À :* Alexandre *Cc:* French SysAdmin Group *Objet :* Re: [FRsAG] comparaison du hash d'un password
Bonjour Alexandre,
Effectivement, la méthode n'est pas optimale. L'idée d'une authentification LDAP est que c'est le serveur LDAP qui fait le calcul et la comparaison des hash. Pour cela, l'enchaînement à suivre est du style :
- Récupérer le login/mdp du user
- Se connecter au LDAP avec le compte d'administration pour trouver le
DN de l'utilisateur grâce à son login. Si la recherche échoue, c'est que le login/mdp du user est incorrect 3. Se déconnecter du LDAP 4. Se connecter au LDAP avec le DN de l'utilisateur précédemment trouvé et le mdp du user. Si la connexion échoue, c'est que le couple login/mdp du user est incorrect.
Grâce à cette méthode tu es indépendant de l'algo de hash utilisé par ton LDAP et tu n'as pas besoin de récupérer l'attribut userPassword.
Bon courage à toi!
Le 9 septembre 2014 16:51, Alexandre <infos@opendoc.net mailto:infos@opendoc.net> a écrit :
Bonjour à tous, je me permets de vous solliciter, j'essaie de réaliser une "authentification" ldap avant de lancer des traitements dans un script (en bash). Je n'utilise peut-être pas la bonne technique, mais voilà ce que je souhaiterai faire : 1. faire saisir login/passord au user 2. récupérer les infos sur le ldap 3. via un traitement, être capable de pouvoir comparer les 2 hash (si c'est possible) La saisie c'est pas bien compliqué, ensuite je vais chercher les infos : --- ldapsearch -D "cn=admin,dc=__entreprisetartempion,dc=fr" -w password -p 389 -h serveurldap -b "dc=entreprisetartempion,dc=__fr" -s sub "uid=jeanclaudedusse" -LLL userPassword dn: cn=jean claude dusse,ou=people,dc=__entreprisetartempion,dc=fr userPassword:: e0NSWVBUfSQxJFhiREZKYXRoJHRrc2__xEdHNWaTRzaVUvb0xBVkxISDE= --- un petit coup de décode en base 64: --- echo '__e0NSWVBUfSQxJFhiREZKYXRoJHRrc2__xEdHNWaTRzaVUvb0xBVkxISDE=' |base64 -d; echo {CRYPT}$1$XbDFJath$__tkslDtsVi4siU/oLAVLHH1 --- Je suis content mais je n'arrive a générer le hash de mon password pour pouvoir le comparer. Ca sent la question stupide, mais vu que je suis bloqué, je me permets de vous déranger '') Alex. _________________________________________________ Liste de diffusion du FRsAG http://www.frsag.org/
-- Florent Bacci
Tu peux créer un compte de service qui a le strict minimum en parcours et lecture.
________________________________________ De : Bray Alexandre [bray.alexandre@gmail.com] de la part de Alexandre [infos@opendoc.net] Date d'envoi : mardi 9 septembre 2014 17:44 À : HURTEVENT VINCENT; Florent Bacci Cc: French SysAdmin Group Objet : Re: RE : [FRsAG] comparaison du hash d'un password
C'est parfait comme d'hab '')
- première connection pour chopper le dn (-LLL dn) - je construis la requête avec les bonnes infos, et je récupère le code retour du ldapsearch.
Je vous confirme que c'est fonctionnel, par contre effectivement, je suis obligé de mettre le password de l'admin du ldap. Dans mon cas c'est pas critique, sachant que le but est de valider que la personne utilisant le script est bien authentifiée, et cela me permets de logger les infos.
Alex.
On 09/09/14 17:34, HURTEVENT VINCENT wrote:
Salut,
j'appuie le point 2 cité par Florent ! Toujours récupérer le véritable DN de l'utilisateur avant de binder.
Ca coute une connexion supplémentaire et ca oblige à entrer en dur les credentials d'un compte de service avec les droits suffisants dans le code mais ca peut éviter bien des galères et ca garantie une certaine portabilité de ton code.
Trop d'applications estiment que le RDN vaut le login entré par l'utilisateur et qui tente une connexion LDAP directe avec un DN forgé à partir de cette information. Ca dépend également du DIT. On peut faire une vue dédiée, mais bon...
*De :* FRsAG [frsag-bounces@frsag.org] de la part de Florent Bacci [florentbacci@gmail.com] *Date d'envoi :* mardi 9 septembre 2014 17:19 *À :* Alexandre *Cc:* French SysAdmin Group *Objet :* Re: [FRsAG] comparaison du hash d'un password
Bonjour Alexandre,
Effectivement, la méthode n'est pas optimale. L'idée d'une authentification LDAP est que c'est le serveur LDAP qui fait le calcul et la comparaison des hash. Pour cela, l'enchaînement à suivre est du style :
- Récupérer le login/mdp du user
- Se connecter au LDAP avec le compte d'administration pour trouver le
DN de l'utilisateur grâce à son login. Si la recherche échoue, c'est que le login/mdp du user est incorrect 3. Se déconnecter du LDAP 4. Se connecter au LDAP avec le DN de l'utilisateur précédemment trouvé et le mdp du user. Si la connexion échoue, c'est que le couple login/mdp du user est incorrect.
Grâce à cette méthode tu es indépendant de l'algo de hash utilisé par ton LDAP et tu n'as pas besoin de récupérer l'attribut userPassword.
Bon courage à toi!
Le 9 septembre 2014 16:51, Alexandre <infos@opendoc.net mailto:infos@opendoc.net> a écrit :
Bonjour à tous, je me permets de vous solliciter, j'essaie de réaliser une "authentification" ldap avant de lancer des traitements dans un script (en bash). Je n'utilise peut-être pas la bonne technique, mais voilà ce que je souhaiterai faire : 1. faire saisir login/passord au user 2. récupérer les infos sur le ldap 3. via un traitement, être capable de pouvoir comparer les 2 hash (si c'est possible) La saisie c'est pas bien compliqué, ensuite je vais chercher les infos : --- ldapsearch -D "cn=admin,dc=__entreprisetartempion,dc=fr" -w password -p 389 -h serveurldap -b "dc=entreprisetartempion,dc=__fr" -s sub "uid=jeanclaudedusse" -LLL userPassword dn: cn=jean claude dusse,ou=people,dc=__entreprisetartempion,dc=fr userPassword:: e0NSWVBUfSQxJFhiREZKYXRoJHRrc2__xEdHNWaTRzaVUvb0xBVkxISDE= --- un petit coup de décode en base 64: --- echo '__e0NSWVBUfSQxJFhiREZKYXRoJHRrc2__xEdHNWaTRzaVUvb0xBVkxISDE=' |base64 -d; echo {CRYPT}$1$XbDFJath$__tkslDtsVi4siU/oLAVLHH1 --- Je suis content mais je n'arrive a générer le hash de mon password pour pouvoir le comparer. Ca sent la question stupide, mais vu que je suis bloqué, je me permets de vous déranger '') Alex. _________________________________________________ Liste de diffusion du FRsAG http://www.frsag.org/
-- Florent Bacci
Le Tue, Sep 09, 2014 at 04:51:32PM +0200, Alexandre [infos@opendoc.net] a écrit:
je me permets de vous solliciter, j'essaie de réaliser une "authentification" ldap
Comme tout le monde te l'as dit, la bonne façon de faire, c'est un "bind" ldap. Selon la configuration de ton serveur, il faudra peut-être configurer l'ACL correspondante, autorisant un utilisateur à faire un bind sur son dn propre. Pour Openldap, la doc sur les acl : http://www.openldap.org/doc/admin24/access-control.html
-> droit auth
Le 09/09/2014 17:27, Dominique Rousseau a écrit :
Le Tue, Sep 09, 2014 at 04:51:32PM +0200, Alexandre [infos@opendoc.net] a écrit:
je me permets de vous solliciter, j'essaie de réaliser une "authentification" ldap
Comme tout le monde te l'as dit, la bonne façon de faire, c'est un "bind" ldap. Selon la configuration de ton serveur, il faudra peut-être configurer l'ACL correspondante, autorisant un utilisateur à faire un bind sur son dn propre. Pour Openldap, la doc sur les acl : http://www.openldap.org/doc/admin24/access-control.html
-> droit auth
Et attention aux bind anonymous, autorisés dans pas mal de configs -> vérifier que le mot de passe n'est pas vide. C'est un des oublis les plus fréquents pour les applis authentifiant via ldap.
http://www.openldap.org/lists/openldap-software/200112/msg00206.html