我的 Web 应用程序正在使用 Digest 身份验证。服务器端没有用户密码。现在我需要对 LDAP 中的用户进行身份验证。
可能吗?.Net/C# 中的任何示例?
我可以修改我的 Digest 实现算法,但由于需要,我不能将其更改为 Basic 或任何其他身份验证。
编辑:据我所知,有 System.DirectoryServices.Protocols.LdapConnection.AuthType 属性可以设置为 AuthType.Digest。如何使用此设置?
我的 Web 应用程序正在使用 Digest 身份验证。服务器端没有用户密码。现在我需要对 LDAP 中的用户进行身份验证。
可能吗?.Net/C# 中的任何示例?
我可以修改我的 Digest 实现算法,但由于需要,我不能将其更改为 Basic 或任何其他身份验证。
编辑:据我所知,有 System.DirectoryServices.Protocols.LdapConnection.AuthType 属性可以设置为 AuthType.Digest。如何使用此设置?
简短的回答:没有。
您需要以编程方式向 LDAP auth 例程提供纯文本密码,而您无法从 Digest 获得 - 这就是 Digest 的重点。
我能想到的唯一解决方法是使用高级帐户连接到 LDAP,并检查用户是否可以做他们想做的事情。
如果您尝试使用 LDAP 验证用户的登录,那么您真的有点吃不消了。这就是为什么大多数针对 AD 进行身份验证的 Web 服务要么是基于 HTTPS 的基本身份验证,要么使用 NTLM 身份验证...
如果您建造新的东西,这可能是可能的。
您可以在创建用户时将 HA1 作为属性添加到 LDAP 中。HA1 = MD5(用户名:领域:密码)用于 Http 摘要。
然后当用户访问 Web 服务器并提供 Authorization 标头时。您可以使用来自 LDAP 的 HA1 重建授权并比较结果......但是您需要使用系统管理员凭据访问用户 HA1 值,这不是最好的方法。