我正在使用自定义UserNamePasswordValidator进行用户身份验证。下面是代码,它运行良好。
我想了解这个方法是如何从SOAP头的UserNameToken中获取用户名和密码的。
public class DistributorValidator : UserNamePasswordValidator
{
public override void Validate(string userName, string password)
{
if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(password))
{
throw new FaultException("Username and password required", new FaultCode("9001"))
................
您应该打开WCF日志记录(或使用Fiddler)来查看soap消息的外观。在那里你会看到代币。WCF有一个非常复杂的模型来从消息中提取凭据。安全标头有一个(反)序列化程序,每个令牌(username、x.509等)都有自己的反序列化程序。