WSE3 中的密码摘要身份验证



我能够实现方法AuthenticateToken,并在给定的密码为纯文本时对用户进行身份验证。

在对给定的密码进行哈希处理时是否可以对用户进行身份验证(密码摘要)?如果是这样,请阐明一些信息。提前谢谢。

我找到了解决方案。是的,当 SOAP 标头中的密码为密码摘要时,可以对用户进行身份验证。

AuthenticateToken 实现没有变化;纯文本和哈希密码的实现相同(返回原始密码字符串)。

在调试过程中,我了解到"Microsoft.Web.Services3.Security.Tokens.UsernameToken"对象中的"ComputePasswordDigest(byte[] nonce, DateTime created, string secret)"方法中的以下行导致问题无法计算正确的密码摘要。

byte[] bytes = Encoding.UTF8.GetBytes(XmlConvert.ToString(created.ToUniversalTime(), "yyyy-MM-ddTHH:mm:ssZ"));

我在本地定义了相同的方法,并更改了上面的行,如下所示,以更改格式以包含毫秒"yyyy-MM-ddTHH:mm:ss.fffZ"。

并从对象"Microsoft.Web.Services3.Security.Tokens.UsernameTokenManager"中实现"VerifyHashedPassword(UsernameToken token,string authenticatedPassword)"方法来调用我的本地方法,而不是"Microsoft.Web.Services3.Security.Tokens.UsernameToken"对象的"ComputePasswordDigest(byte[] nonce,DateTime,string secret)"方法。现在,它就像一个魅力。

byte[] bytes = Encoding.UTF8.GetBytes(XmlConvert.ToString(created.ToUniversalTime(), "yyyy-MM-ddTHH:mm:ss.fffZ"));

最新更新