【问题标题】:How to do same as PrincipalContext.ValidateCredentials but with LdapConnection (non AD-specific)如何与 PrincipalContext.ValidateCredentials 相同,但使用 LdapConnection(非 AD 特定)
【发布时间】:2012-04-05 17:52:18
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: authentication c#-4.0 ldap directoryservices


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,我正在使用 LDAPv3。我想在不更改现有连接的身份验证状态的情况下验证第二组凭据。我没有遇到任何凭据错误的问题。如果我要与现有连接上的第二个凭据绑定,这将改变我的身份验证状态。在 PrincipalContext 示例中,可以使用现有连接验证第二个凭据,而无需更改连接的身份验证状态。绑定请求是验证凭据的唯一方法吗?如果是这样,那么我将创建第二个连接。
    • 是的,使用绑定请求来验证凭据。
    猜你喜欢
    • 1970-01-01
    • 2013-10-13
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多