如何使用PrincipalContext.ValidateCredentials,但使用LdapConnection(非AD特定)

时间:2012-04-04 21:40:22

标签: authentication c#-4.0 ldap directoryservices

如果我将PrincipalContext连接到ActiveDirectory服务器(带有一些凭据),那么我可以调用其ValidateCredentials方法来验证其他一些凭据(例如,某些其他用户名/密码对与用于PrinicapContext的连接)。

我想基本上做同样的事情,但是LdapConnection。我已成功连接LdapConnection并绑定到openLDAP服务器。现在我想验证一组不同的凭据。我希望这些凭证需要是一个尊贵的名字和密码对而不是用户名&密码对如上;没关系。

我想我可以创建一个临时的第二个LdapConnection,并通过绑定第二组凭据进行验证。

有更好的方法吗?特别是,有没有办法使用我现有的LdapConnection来验证/验证其他凭据?顺便说一句,我现在在C#4.0。

1 个答案:

答案 0 :(得分:0)

应用程序代码可以通过更改现有连接的身份验证状态来验证凭据(仅限LDAPv3)。通过发送bind request并检查来自服务器的响应来完成此过程。如果来自服务器的绑定响应中的结果代码为0,则凭据是正确的,并且帐户(由可分辨名称标识)可用。如果绑定响应中的结果代码非零,则发生错误:凭证可能无效,可分辨名称不存在,与可分辨名称关联的帐户被禁用,或者其他一些错误。

这可以使用现有连接完成,或者应用程序可以建立新连接并在新连接上传输绑定请求。