在 C# 中使用 ADSI 进行 LDAP 绑定错误代码
Posted
技术标签:
【中文标题】在 C# 中使用 ADSI 进行 LDAP 绑定错误代码【英文标题】:LDAP bind error codes using ADSI in C# 【发布时间】:2010-05-05 15:28:41 【问题描述】:我正在使用 ADSI 提供程序从 C# 客户端绑定到 ADAM 实例。当绑定失败时,我会返回一个表明失败的通用错误条件。如果我查看流量的网络跟踪,我可以看到 ADAM 实例本身将扩展错误信息发送回我的客户端,指示此身份验证失败的原因,但似乎 ADSI 提供程序丢弃了此扩展信息,只是向我提供了事实绑定失败。
例如,在失败的绑定中,会抛出一个带有 ErrorCode 属性的 COMException,该属性将始终包含值 8007052E。如果我查看网络跟踪,LDAP 发回失败的原因有多种,其中可能包括密码过期、帐户禁用、密码无效、用户不存在等错误。
有什么方法可以使用 ADSI 或 COMException 对象来获取此扩展错误信息?如果没有,是否有人使用过的其他 .NET 提供程序能够获取此信息?
【问题讨论】:
【参考方案1】:由于我没有任何答案,我会用我的解决方法自己回答。
我没有尝试依赖特定的返回代码并为 LDAP 调用返回数据,而是设置了一个服务帐户,如果绑定失败,它可以对帐户进行额外调查。例如,如果 user1 的绑定失败,我与服务帐户绑定,查询 user1 帐户并读取帐户属性以进一步确定绑定失败的原因,然后将该信息返回给最终用户。
【讨论】:
以上是关于在 C# 中使用 ADSI 进行 LDAP 绑定错误代码的主要内容,如果未能解决你的问题,请参考以下文章
配置 Spring Security 以在没有匿名和没有绑定 DN 的情况下针对 LDAP 进行身份验证
Java - LDAP:为啥我们需要硬编码的管理员用户凭据来进行 LDAP 绑定