我使用自定义身份验证实现了WCF服务,当我将常量字符串的用户名和密码传递给UsernameAuthentication类,Validate方法并在那里验证时,它工作正常。但有没有办法可以传递动态用户名,密码并验证它们。我该如何实现它并在这个类中访问这些值。
class UsernameAuthentication : UserNamePasswordValidator
{
public override void Validate(string userName, string password)
{
var ok = (userName == "DynamicUserName") && (password == "DynamicPassWord");
if (ok == false)
throw new AuthenticationException("u/p does not match");
}
}
答案 0 :(得分:0)
在Validate
方法中,您必须查询自己的用户数据库并检查用户名和密码是否有效。通常,您将使用存储所有用户数据的RDBMS或XML文件。
请查看ASP.NET's Membership以获取支持基于角色的安全性的数据库架构示例。更好的是,您可以将ASP.NET的成员资格与WCF集成。 Hva看看这个article的“控制对公共Web托管服务的访问和使用”。您还可以阅读Resnick,Crane和Bowen关于Essential WCF安全性的章节,其中介绍了支持WCF服务中的身份验证/授权的多种方法。