Question

Je suis liaison à une instance ADAM d'un client C # en utilisant le fournisseur ADSI. Lorsque la liaison je ne reçois un retour de condition d'erreur générique qui indique un échec. Si je regarde une trace réseau du trafic que je peux voir que l'instance ADAM se renvoyer à mon client d'information d'erreur indiquant pourquoi cette authentification a échoué, mais il semble que les rejets de fournisseurs de ADSI cette information étendue et me donne juste le fait que la liaison a échoué.

Par exemple, dans un échec bind un COMException est jeté avec un attribut ErrorCode qui contiendra toujours la valeur 8007052e. Si je regarde la trace de réseau, il existe de multiples raisons de l'échec que LDAP renvoit et celles-ci pourraient inclure des erreurs pour l'expiration du mot de passe, compte désactivé, mot de passe incorrect, l'utilisateur n'existe pas, etc.

Est-il possible d'obtenir cette information d'erreur étendue à l'aide ADSI ou l'objet COMException? Sinon, est-il un autre fournisseur .NET que quelqu'un a utilisé qui est en mesure d'obtenir ces informations?

Était-ce utile?

La solution

Depuis que je ne l'ai pas eu de réponses, je vais répondre à moi-même avec ma solution.

Au lieu d'essayer de compter sur les codes spécifiques de retour et les données de retour pour les appels LDAP, je configurer un compte de service qui peut faire enquête sur un compte supplémentaire si une liaison échoue. Par exemple, si une liaison de user1 échoue, je lie avec le compte de service, la requête du compte utilisateur 1 et lire le compte des attributs pour déterminer plus précisément la raison pour laquelle la liaison a échoué alors que le retour d'informations à l'utilisateur final.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top