SlideShare une entreprise Scribd logo
LDAP TOOL BOX
LDAP TOOL BOX
SELF SERVICE PASSWORD
SELF SERVICE PASSWORD
AFUP Lyon – 22 avril 2021
Présentation
Présentation
Clément OUDOT
Identity Solutions Manager
Worteks
@clementoudot
LemonLDAP::NG
LDAP Tool Box
LDAP Synchronization Connector
FusionIAM
W’Sweet
KPTN
DonJon Legacy
Improcité
Worteks (v .t ks)
ɔʁ ɛ
Services
Infrastructures complexes et hétérogènes,
cloud, messagerie, authentification, sécurité

Étude, audit et conseil

Expertise technique

Support technique

Formations

R&D
Édition
Portail applicatif et
collaboratif
Plateforme collaborative
mutualisée de
développement
Gestion des identités et
des accès
Partenaires
Le logiciel LTB Self Service Password
Le projet LDAP Tool Box
●
Projet libre créé en 2009
●
Regroupement d'outils
dédiés à la gestion des
annuaires LDAP
●
Au début principalement
des paquets OpenLDAP et
des scripts de supervision
●
Licence GPL
Self Service Password
●
Interface de changement et
réinitialisation de mot de
passe dans un annuaire
LDAP
●
Compatible Active Directory
et autres annuaires LDAPv3
●
Réinitialisation par mail,
SMS, questions/réponses
●
Prehook/Posthook
●
API REST
Historique
●
Au début :
●
Premier commit le 16 juin 2009
●
Version 0.1 publiée le 20 juin 2009
●
Juste une page permettant de changer son mot de passe
●
Aujourd'hui :
●
Version 1.4 publiée le 20 avril 2021
●
Traduit en 27 langues
●
Changement et réinitialisation de mot de passe, réinitialisation de
clé SSH
●
Utilisation de Composer, Smarty, phpunit, PHPMailer, Bootsrap...
Pourquoi le choix de PHP (en 2009)
●
Les avantages :
●
Langage disponible sur de nombreux serveurs, donc installation
simplifiée
●
Connu par de nombreux développeurs, qui pourront donc plus
facilement contribuer
●
Les inconvénients :
●
Bibilothèque LDAP très sommaire (par rapport par exemple à Perl)
Quelques étapes
●
2009 : Version 0.1 :
●
3 fichiers PHP : un fichier de configuration, un fichier de langues, un
fichier contenant tout le reste du code
●
2016 : Version 1.0 :
●
Passage à bootsrap
●
Tests unitaires
●
Utilisation de PHPMailer
●
2021 : Version 1.4 :
●
Utilisation de Composer
●
Utilisation de Smarty
Le protocole LDAP
Opérations de base
●
Authentification :
●
BIND
●
UNBIND
●
Lecture :
●
SEARCH
●
COMPARE
●
Écriture :
●
ADD
●
DELETE
●
MODIFY
●
MODIFYDN / MODRDN
●
Autres :
●
ABANDON
Extensions du protocole
●
Opérations étendues :
●
WHOAMI
●
MODIFYPASSWORD
●
...
●
Contrôles étendus :
●
PPOLICY
●
VLV
●
NOOP
●
PROXY AUTH
●
...
Annuaire LDAP
Client LDAP
Connexion TCP
Authentification (BIND)
Réponse BIND
Recherche (SEARCH)
Réponse SEARCH (+entrées)
Réponse MODIFY
Authentification (BIND)
Réponse BIND
Modification (MODIFY)
Déconnexion (UNBIND)
Communication client/serveur
uid=coudot,ou=users,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
cn: Clément OUDOT
sn: OUDOT
givenName: Clément
mail: clement.oudot@worteks.com
mail: cleoud@worteks.com
mobile: +33 6 99 66 51 31
uid: coudot
createTimestamp: 20161213142321Z
creatorsName: cn=admin,dc=example,dc=com
entryCSN: 20170901154823.930979Z#000000#001#000000
entryDN: uid=coudot,ou=users,dc=example,dc=com
entryUUID: 7180231a-558b-1036-86df-3f7f4c003ed8
RDN Branche
DN
Attributs
Classes d’objets
Attributs opérationnels
Structure d'une entrée
Parler LDAP avec PHP
Connexion
   # Connect to LDAP
   $ldap = ldap_connect($ldap_url);
   ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
   ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
Authentification
   # Bind
   if ( isset($ldap_binddn) && isset($ldap_bindpw) ) {
       $bind = ldap_bind($ldap, $ldap_binddn, $ldap_bindpw);
   } else {
       $bind = ldap_bind($ldap);
   }
Modification du mot de passe
           # Replace userPassword
$userdata["userPassword"] = $password;
ldap_mod_replace($ldap, $dn, $userdata);
           $error_code = ldap_errno($ldap);
           $error_msg = ldap_error($ldap);
Là où les ennuis commencent...
●
Connexion sécurisée (LDAPS ou LDAP + startTLS)
●
Rechercher l'utilisateur à partir de son identifiant pour
retrouver son DN
●
Gestion du mot de passe Active Directory différente des
autres annuaires LDAP
●
Enregistrement et recherche des questions/réponses dans
l'annuaire
●
Opérations et contrôles étendus
Usage avancé
Opération étendue PASSWORD MODIFY
●
Fonction ldap_exop_passwd disponible depuis PHP 7.2
$exop_passwd = ldap_exop_passwd($ldap, $dn, $oldpassword, $password);
$error_code = ldap_errno($ldap);
$error_msg = ldap_error($ldap);
Contrôle étendu PASSWORD POLICY
●
Fonction ldap_mod_replace_ext disponible depuis PHP 7.3
$ppolicy_replace = ldap_mod_replace_ext($ldap, $dn, $userdata, [['oid' =>
LDAP_CONTROL_PASSWORDPOLICYREQUEST]]);
if (ldap_parse_result($ldap, $ppolicy_replace, $error_code, $matcheddn, $error_msg, $referrals, $ctrls))
{
               if (isset($ctrls[LDAP_CONTROL_PASSWORDPOLICYRESPONSE])) {
                   $value = $ctrls[LDAP_CONTROL_PASSWORDPOLICYRESPONSE]['value'];
                   if (isset($value['error'])) {
                       $ppolicy_error_code = $value['error'];
                   }
               }
}
MERCI
info@worteks.com
@worteks_com
linkedin.com/company/worteks

Contenu connexe

Tendances

Matinée Pour Comprendre LinID - Présentation des composants LinID
Matinée Pour Comprendre LinID - Présentation des composants LinIDMatinée Pour Comprendre LinID - Présentation des composants LinID
Matinée Pour Comprendre LinID - Présentation des composants LinID
Clément OUDOT
 

Tendances (10)

Idm 28-administrator
Idm 28-administratorIdm 28-administrator
Idm 28-administrator
 
LemonLDAP::NG et le support SAML2
LemonLDAP::NG et le support SAML2LemonLDAP::NG et le support SAML2
LemonLDAP::NG et le support SAML2
 
Matinée Pour Comprendre LinID - Présentation des composants LinID
Matinée Pour Comprendre LinID - Présentation des composants LinIDMatinée Pour Comprendre LinID - Présentation des composants LinID
Matinée Pour Comprendre LinID - Présentation des composants LinID
 
[Aperhologramme 2020] Comment faire du logiciel libre ?
[Aperhologramme 2020] Comment faire du logiciel libre ?[Aperhologramme 2020] Comment faire du logiciel libre ?
[Aperhologramme 2020] Comment faire du logiciel libre ?
 
[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...
[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...
[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...
 
Lagom, reactive framework(paris jug2017)
Lagom, reactive framework(paris jug2017)Lagom, reactive framework(paris jug2017)
Lagom, reactive framework(paris jug2017)
 
Lagom, reactive framework(chtijug2016)
Lagom, reactive framework(chtijug2016) Lagom, reactive framework(chtijug2016)
Lagom, reactive framework(chtijug2016)
 
SL2009 - Identity Management Cycle - LDAP synchronization and WebSSO
SL2009 - Identity Management Cycle - LDAP synchronization and WebSSOSL2009 - Identity Management Cycle - LDAP synchronization and WebSSO
SL2009 - Identity Management Cycle - LDAP synchronization and WebSSO
 
OpenDS - Open Source Java LDAP server
OpenDS - Open Source Java LDAP serverOpenDS - Open Source Java LDAP server
OpenDS - Open Source Java LDAP server
 
Lagom, reactive framework
Lagom, reactive frameworkLagom, reactive framework
Lagom, reactive framework
 

Similaire à [AFUP Lyon 2021] LDAP Tool Box Self Service Password

Présentation offre LINID
Présentation offre LINIDPrésentation offre LINID
Présentation offre LINID
LINAGORA
 
JDLL 2014 - Introduction aux annuaires LDAP
JDLL 2014 - Introduction aux annuaires LDAPJDLL 2014 - Introduction aux annuaires LDAP
JDLL 2014 - Introduction aux annuaires LDAP
Clément OUDOT
 
Séminaire septembre 2010 - LinID et LinPKI, Les solutions Open Source d'ident...
Séminaire septembre 2010 - LinID et LinPKI, Les solutions Open Source d'ident...Séminaire septembre 2010 - LinID et LinPKI, Les solutions Open Source d'ident...
Séminaire septembre 2010 - LinID et LinPKI, Les solutions Open Source d'ident...
LINAGORA
 
LemonLDAP::NG, un WebSSO libre‎ en Perl !
LemonLDAP::NG, un WebSSO libre‎ en Perl !LemonLDAP::NG, un WebSSO libre‎ en Perl !
LemonLDAP::NG, un WebSSO libre‎ en Perl !
Clément OUDOT
 
LemonLDAP::NG, un WebSSO libre
LemonLDAP::NG, un WebSSO libreLemonLDAP::NG, un WebSSO libre
LemonLDAP::NG, un WebSSO libre
Clément OUDOT
 

Similaire à [AFUP Lyon 2021] LDAP Tool Box Self Service Password (20)

La politique de mots de passe : de la théorie à la pratique avec OpenLDAP
La politique de mots de passe : de la théorie à la pratique avec OpenLDAPLa politique de mots de passe : de la théorie à la pratique avec OpenLDAP
La politique de mots de passe : de la théorie à la pratique avec OpenLDAP
 
Construire son application web de gestion de contenu d'annuaire LDAP
Construire son application web de gestion de contenu d'annuaire LDAPConstruire son application web de gestion de contenu d'annuaire LDAP
Construire son application web de gestion de contenu d'annuaire LDAP
 
Présentation offre LINID
Présentation offre LINIDPrésentation offre LINID
Présentation offre LINID
 
Identity Days 2020 - Politique des mots de passe des annuaires LDAP et outils...
Identity Days 2020 - Politique des mots de passe des annuaires LDAP et outils...Identity Days 2020 - Politique des mots de passe des annuaires LDAP et outils...
Identity Days 2020 - Politique des mots de passe des annuaires LDAP et outils...
 
[Identity Days 2020] Politique des mots de passe des annuaires LDAP et outils...
[Identity Days 2020] Politique des mots de passe des annuaires LDAP et outils...[Identity Days 2020] Politique des mots de passe des annuaires LDAP et outils...
[Identity Days 2020] Politique des mots de passe des annuaires LDAP et outils...
 
Séminaire LinID LINAGORA - juin 2009
Séminaire LinID LINAGORA - juin 2009Séminaire LinID LINAGORA - juin 2009
Séminaire LinID LINAGORA - juin 2009
 
Présentation de l'offre IAM de LINAGORA LinID
Présentation de l'offre IAM de LINAGORA LinIDPrésentation de l'offre IAM de LINAGORA LinID
Présentation de l'offre IAM de LINAGORA LinID
 
JDLL 2014 - Introduction aux annuaires LDAP
JDLL 2014 - Introduction aux annuaires LDAPJDLL 2014 - Introduction aux annuaires LDAP
JDLL 2014 - Introduction aux annuaires LDAP
 
Des outils 100% Open Source pour gérer votre annuaire LDAP et votre Active Di...
Des outils 100% Open Source pour gérer votre annuaire LDAP et votre Active Di...Des outils 100% Open Source pour gérer votre annuaire LDAP et votre Active Di...
Des outils 100% Open Source pour gérer votre annuaire LDAP et votre Active Di...
 
Séminaire septembre 2010 - LinID et LinPKI, Les solutions Open Source d'ident...
Séminaire septembre 2010 - LinID et LinPKI, Les solutions Open Source d'ident...Séminaire septembre 2010 - LinID et LinPKI, Les solutions Open Source d'ident...
Séminaire septembre 2010 - LinID et LinPKI, Les solutions Open Source d'ident...
 
[RMLL2017] Des logiciels libres pour la gestion des identités !
[RMLL2017] Des logiciels libres pour la gestion des identités ![RMLL2017] Des logiciels libres pour la gestion des identités !
[RMLL2017] Des logiciels libres pour la gestion des identités !
 
De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)
 
OpenLDAP - Astuces pour en faire l'annuaire d'entreprise idéal
OpenLDAP - Astuces pour en faire l'annuaire d'entreprise idéalOpenLDAP - Astuces pour en faire l'annuaire d'entreprise idéal
OpenLDAP - Astuces pour en faire l'annuaire d'entreprise idéal
 
LemonLDAP::NG, un WebSSO libre‎ en Perl !
LemonLDAP::NG, un WebSSO libre‎ en Perl !LemonLDAP::NG, un WebSSO libre‎ en Perl !
LemonLDAP::NG, un WebSSO libre‎ en Perl !
 
Cakephp
CakephpCakephp
Cakephp
 
[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...
[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...
[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...
 
Séminaire LinID/LinPKI septembre 2011
Séminaire LinID/LinPKI septembre 2011Séminaire LinID/LinPKI septembre 2011
Séminaire LinID/LinPKI septembre 2011
 
Delegation d'authentification
Delegation d'authentificationDelegation d'authentification
Delegation d'authentification
 
LemonLDAP::NG, un WebSSO libre
LemonLDAP::NG, un WebSSO libreLemonLDAP::NG, un WebSSO libre
LemonLDAP::NG, un WebSSO libre
 
WebSSO, synchronisation et contrôle des accès via LDAP
WebSSO, synchronisation et contrôle des accès via LDAPWebSSO, synchronisation et contrôle des accès via LDAP
WebSSO, synchronisation et contrôle des accès via LDAP
 

Plus de Worteks

Plus de Worteks (20)

[Pass the SALT 2021] Hosting Identity in the Cloud with free softwares
[Pass the SALT 2021] Hosting Identity in the Cloud with free softwares[Pass the SALT 2021] Hosting Identity in the Cloud with free softwares
[Pass the SALT 2021] Hosting Identity in the Cloud with free softwares
 
[OW2con'21] Hosting Identity in the Cloud with OW2 free softwares
[OW2con'21] Hosting Identity in the Cloud with OW2 free softwares[OW2con'21] Hosting Identity in the Cloud with OW2 free softwares
[OW2con'21] Hosting Identity in the Cloud with OW2 free softwares
 
[OpenDay 2021] Logiciel libre, entreprises et modèles économiques
[OpenDay 2021] Logiciel libre, entreprises et modèles économiques[OpenDay 2021] Logiciel libre, entreprises et modèles économiques
[OpenDay 2021] Logiciel libre, entreprises et modèles économiques
 
[Pass the SALT 2020] Understand password policy in OpenLDAP and discover tool...
[Pass the SALT 2020] Understand password policy in OpenLDAP and discover tool...[Pass the SALT 2020] Understand password policy in OpenLDAP and discover tool...
[Pass the SALT 2020] Understand password policy in OpenLDAP and discover tool...
 
[OW2online 2020] LDAP Synchronization Connector
[OW2online 2020] LDAP Synchronization Connector[OW2online 2020] LDAP Synchronization Connector
[OW2online 2020] LDAP Synchronization Connector
 
[POSS 2019] OVirt and Ceph: Perfect Combination.?
[POSS 2019] OVirt and  Ceph: Perfect Combination.?[POSS 2019] OVirt and  Ceph: Perfect Combination.?
[POSS 2019] OVirt and Ceph: Perfect Combination.?
 
[POSS 2019] MicroServices authentication and authorization with LemonLDAP::NG
[POSS 2019] MicroServices authentication and authorization with LemonLDAP::NG[POSS 2019] MicroServices authentication and authorization with LemonLDAP::NG
[POSS 2019] MicroServices authentication and authorization with LemonLDAP::NG
 
[POSS 2019] TLS for Dummies
[POSS 2019] TLS for Dummies[POSS 2019] TLS for Dummies
[POSS 2019] TLS for Dummies
 
[POSS 2019] Learn AWK in 15 minutes
[POSS 2019] Learn AWK in 15 minutes[POSS 2019] Learn AWK in 15 minutes
[POSS 2019] Learn AWK in 15 minutes
 
[LDAPCon 2019] LemonLDAP::NG 2.0: Mutli-factor authentication, Identity Feder...
[LDAPCon 2019] LemonLDAP::NG 2.0: Mutli-factor authentication, Identity Feder...[LDAPCon 2019] LemonLDAP::NG 2.0: Mutli-factor authentication, Identity Feder...
[LDAPCon 2019] LemonLDAP::NG 2.0: Mutli-factor authentication, Identity Feder...
 
[LDAPCon 2019] The FusionIAM initiative
[LDAPCon 2019] The FusionIAM initiative[LDAPCon 2019] The FusionIAM initiative
[LDAPCon 2019] The FusionIAM initiative
 
[Identity Days 2019] Maîtrisez les accès à vos applications Web (Cloud et On...
[Identity Days 2019]  Maîtrisez les accès à vos applications Web (Cloud et On...[Identity Days 2019]  Maîtrisez les accès à vos applications Web (Cloud et On...
[Identity Days 2019] Maîtrisez les accès à vos applications Web (Cloud et On...
 
[RedHat Forum 2019] REX - COMMENT MONTER UNE OFFRE DE CLOUD EN MARQUE BLANCHE...
[RedHat Forum 2019] REX - COMMENT MONTER UNE OFFRE DE CLOUD EN MARQUE BLANCHE...[RedHat Forum 2019] REX - COMMENT MONTER UNE OFFRE DE CLOUD EN MARQUE BLANCHE...
[RedHat Forum 2019] REX - COMMENT MONTER UNE OFFRE DE CLOUD EN MARQUE BLANCHE...
 
[OW2con19] LemonLDAP::NG success stories
[OW2con19] LemonLDAP::NG success stories[OW2con19] LemonLDAP::NG success stories
[OW2con19] LemonLDAP::NG success stories
 
[BlueMindSummit] Présentation de la solution W'Sweet
[BlueMindSummit] Présentation de la solution W'Sweet[BlueMindSummit] Présentation de la solution W'Sweet
[BlueMindSummit] Présentation de la solution W'Sweet
 
[FOSDEM 2019] LemonLDAP::NG 2.0
[FOSDEM 2019] LemonLDAP::NG 2.0[FOSDEM 2019] LemonLDAP::NG 2.0
[FOSDEM 2019] LemonLDAP::NG 2.0
 
[POSS 2018] WSweet
[POSS 2018] WSweet[POSS 2018] WSweet
[POSS 2018] WSweet
 
[POSS 2018] Comment unifier ses dashboards par Grafana
[POSS 2018] Comment unifier ses dashboards par Grafana[POSS 2018] Comment unifier ses dashboards par Grafana
[POSS 2018] Comment unifier ses dashboards par Grafana
 
[POSS 2018] Passer d'un écosystème baremetal à un univers micro services et d...
[POSS 2018] Passer d'un écosystème baremetal à un univers micro services et d...[POSS 2018] Passer d'un écosystème baremetal à un univers micro services et d...
[POSS 2018] Passer d'un écosystème baremetal à un univers micro services et d...
 
[Pass The SALT 2018] Second factor authentication in LemonLDAP::NG
[Pass The SALT 2018] Second factor authentication in LemonLDAP::NG[Pass The SALT 2018] Second factor authentication in LemonLDAP::NG
[Pass The SALT 2018] Second factor authentication in LemonLDAP::NG
 

[AFUP Lyon 2021] LDAP Tool Box Self Service Password

  • 1. LDAP TOOL BOX LDAP TOOL BOX SELF SERVICE PASSWORD SELF SERVICE PASSWORD AFUP Lyon – 22 avril 2021
  • 3. Présentation Clément OUDOT Identity Solutions Manager Worteks @clementoudot LemonLDAP::NG LDAP Tool Box LDAP Synchronization Connector FusionIAM W’Sweet KPTN DonJon Legacy Improcité
  • 4. Worteks (v .t ks) ɔʁ ɛ Services Infrastructures complexes et hétérogènes, cloud, messagerie, authentification, sécurité  Étude, audit et conseil  Expertise technique  Support technique  Formations  R&D Édition Portail applicatif et collaboratif Plateforme collaborative mutualisée de développement Gestion des identités et des accès Partenaires
  • 5. Le logiciel LTB Self Service Password
  • 6. Le projet LDAP Tool Box ● Projet libre créé en 2009 ● Regroupement d'outils dédiés à la gestion des annuaires LDAP ● Au début principalement des paquets OpenLDAP et des scripts de supervision ● Licence GPL
  • 7. Self Service Password ● Interface de changement et réinitialisation de mot de passe dans un annuaire LDAP ● Compatible Active Directory et autres annuaires LDAPv3 ● Réinitialisation par mail, SMS, questions/réponses ● Prehook/Posthook ● API REST
  • 8. Historique ● Au début : ● Premier commit le 16 juin 2009 ● Version 0.1 publiée le 20 juin 2009 ● Juste une page permettant de changer son mot de passe ● Aujourd'hui : ● Version 1.4 publiée le 20 avril 2021 ● Traduit en 27 langues ● Changement et réinitialisation de mot de passe, réinitialisation de clé SSH ● Utilisation de Composer, Smarty, phpunit, PHPMailer, Bootsrap...
  • 9. Pourquoi le choix de PHP (en 2009) ● Les avantages : ● Langage disponible sur de nombreux serveurs, donc installation simplifiée ● Connu par de nombreux développeurs, qui pourront donc plus facilement contribuer ● Les inconvénients : ● Bibilothèque LDAP très sommaire (par rapport par exemple à Perl)
  • 10. Quelques étapes ● 2009 : Version 0.1 : ● 3 fichiers PHP : un fichier de configuration, un fichier de langues, un fichier contenant tout le reste du code ● 2016 : Version 1.0 : ● Passage à bootsrap ● Tests unitaires ● Utilisation de PHPMailer ● 2021 : Version 1.4 : ● Utilisation de Composer ● Utilisation de Smarty
  • 13. Extensions du protocole ● Opérations étendues : ● WHOAMI ● MODIFYPASSWORD ● ... ● Contrôles étendus : ● PPOLICY ● VLV ● NOOP ● PROXY AUTH ● ...
  • 14. Annuaire LDAP Client LDAP Connexion TCP Authentification (BIND) Réponse BIND Recherche (SEARCH) Réponse SEARCH (+entrées) Réponse MODIFY Authentification (BIND) Réponse BIND Modification (MODIFY) Déconnexion (UNBIND) Communication client/serveur
  • 15. uid=coudot,ou=users,dc=example,dc=com objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person objectClass: top cn: Clément OUDOT sn: OUDOT givenName: Clément mail: clement.oudot@worteks.com mail: cleoud@worteks.com mobile: +33 6 99 66 51 31 uid: coudot createTimestamp: 20161213142321Z creatorsName: cn=admin,dc=example,dc=com entryCSN: 20170901154823.930979Z#000000#001#000000 entryDN: uid=coudot,ou=users,dc=example,dc=com entryUUID: 7180231a-558b-1036-86df-3f7f4c003ed8 RDN Branche DN Attributs Classes d’objets Attributs opérationnels Structure d'une entrée
  • 17. Connexion    # Connect to LDAP    $ldap = ldap_connect($ldap_url);    ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);    ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
  • 18. Authentification    # Bind    if ( isset($ldap_binddn) && isset($ldap_bindpw) ) {        $bind = ldap_bind($ldap, $ldap_binddn, $ldap_bindpw);    } else {        $bind = ldap_bind($ldap);    }
  • 19. Modification du mot de passe            # Replace userPassword $userdata["userPassword"] = $password; ldap_mod_replace($ldap, $dn, $userdata);            $error_code = ldap_errno($ldap);            $error_msg = ldap_error($ldap);
  • 20. Là où les ennuis commencent... ● Connexion sécurisée (LDAPS ou LDAP + startTLS) ● Rechercher l'utilisateur à partir de son identifiant pour retrouver son DN ● Gestion du mot de passe Active Directory différente des autres annuaires LDAP ● Enregistrement et recherche des questions/réponses dans l'annuaire ● Opérations et contrôles étendus
  • 22. Opération étendue PASSWORD MODIFY ● Fonction ldap_exop_passwd disponible depuis PHP 7.2 $exop_passwd = ldap_exop_passwd($ldap, $dn, $oldpassword, $password); $error_code = ldap_errno($ldap); $error_msg = ldap_error($ldap);
  • 23. Contrôle étendu PASSWORD POLICY ● Fonction ldap_mod_replace_ext disponible depuis PHP 7.3 $ppolicy_replace = ldap_mod_replace_ext($ldap, $dn, $userdata, [['oid' => LDAP_CONTROL_PASSWORDPOLICYREQUEST]]); if (ldap_parse_result($ldap, $ppolicy_replace, $error_code, $matcheddn, $error_msg, $referrals, $ctrls)) {                if (isset($ctrls[LDAP_CONTROL_PASSWORDPOLICYRESPONSE])) {                    $value = $ctrls[LDAP_CONTROL_PASSWORDPOLICYRESPONSE]['value'];                    if (isset($value['error'])) {                        $ppolicy_error_code = $value['error'];                    }                } }