2012-07-02 3 views
2

J'utilise les fonctions System.DirectoryServices.Protocols pour interroger un répertoire .Comment obtenir la réponse ldap bind

Le répertoire utilise la superposition de stratégie de mot de passe.

Si je me lie au répertoire, le serveur peut renvoyer des contrôles pouvant contenir des avertissements d'expiration de mot de passe.

Comment puis-je obtenir la réponse de liaison dans C#? System.DirectoryServices.Protocols.Bind renvoie void.

La recherche des utilisateurs pwdChangedTime, la récupération de la stratégie indiquée dans pwdPolicySubentry faire le calcul pour avertir l'utilisateur de l'expiration du mot de passe ne semble pas être une bonne façon de le faire.

Toute aide est très appréciée,

Répondre

2

Malheureusement vous ne pouvez pas le faire avec une opération de liaison. S.DS.P est une couche mince au-dessus de Winldap32 et il ne reconnaît aucun contrôle renvoyé sur une opération de liaison. Je suis descendu de plusieurs chemins l'année dernière en utilisant des réflexions pour manipuler les classes internes de S.DS.P et épingler moi-même dans Winldap32 et finalement je suis tombé en panne en raison de limitations dans Winldap32. Il existe une bibliothèque ldap écrite par Novell qui est sa propre implémentation CLR pure. Je ne suis pas sûr qu'il soit bien entretenu ces jours-ci. Votre seule autre option serait d'écrire votre propre bibliothèque .net au-dessus des libs client openldap.

Un autre côté. L'utilisation de TLS avec S.DS.P dans une application côté serveur entraînera S.DS.P dans une boucle infinie lors du traitement de la réponse TLS dans certaines conditions. Le travail autour est d'utiliser SSL directement sur le port 636.

+0

;) Merci pour votre confirmation – user1495681

+0

Si je voudrais essayer de le faire dans Win32 quel appel je devrais utiliser dans winldap? – gyurisc