.net 使用摘要在LDAP中进行身份验证?

.net 使用摘要在LDAP中进行身份验证?,.net,asp.net,authentication,ldap,digest,.net,Asp.net,Authentication,Ldap,Digest,我的web应用程序正在使用摘要身份验证。服务器端没有用户密码。现在我需要在LDAP中对用户进行身份验证 可能吗?在.Net/C中有任何例子吗 我可以修改我的摘要实现算法,但由于需要,我不能将其更改为Basic或任何其他身份验证 编辑:据我所知,System.DirectoryServices.Protocols.LdapConnection.AuthType属性可以设置为AuthType.Digest。如何使用此设置?简短回答:否 您需要以编程方式向LDAP验证例程提供一个纯文本密码,这是无法从

我的web应用程序正在使用摘要身份验证。服务器端没有用户密码。现在我需要在LDAP中对用户进行身份验证

可能吗?在.Net/C中有任何例子吗

我可以修改我的摘要实现算法,但由于需要,我不能将其更改为Basic或任何其他身份验证

编辑:据我所知,System.DirectoryServices.Protocols.LdapConnection.AuthType属性可以设置为AuthType.Digest。如何使用此设置?

简短回答:否

您需要以编程方式向LDAP验证例程提供一个纯文本密码,这是无法从摘要中获得的,这就是摘要的要点

我能想到的唯一解决办法是使用一个高级帐户连接到LDAP,并检查用户是否可以使用该帐户执行他们试图执行的操作


如果您试图用LDAP验证用户的登录,那么您的应用程序确实有点塞满了。这就是为什么大多数针对AD进行身份验证的web服务要么是HTTPS上的基本身份验证,要么使用NTLM身份验证…

如果您构建新的内容,这是可能的

创建用户时,可以将HA1作为属性添加到LDAP中。HA1=MD5username:realm:Http摘要的密码


然后,当用户访问web服务器并提供授权标头时。您可以使用LDAP中的HA1重新构建授权,并比较结果。。。但您需要使用系统管理员凭据访问用户HA1值,这不是最好的方法。

了解SASL。有些SASL机制不需要传输密码。可以将LdapConnection.AuthType设置为AuthType.Digest。IIS可以以某种方式使用摘要身份验证。据我所知,NTLM本身就是一种文摘。因此,我认为该摘要是受支持的。虽然底层LDAP协议可以使用摘要,但您仍然必须为正在调用的高级函数提供纯文本密码-您不能自己进行摘要哈希计算。即使可以,您的HTTP身份验证领域也必须与LDAP身份验证领域相匹配,并且您的nonce也必须相匹配—在两个独立的摘要事务之间进行转换将非常困难。摘要与Active Directory完美配合使用,并且不需要交换密码。只有挑战。请记住,NTLM是相当不安全的,Digest是更好的方案。