在UserNamePasswordValidator中存储自定义信息

时间:2013-03-20 10:44:04

标签: .net wcf security access-token

我在.NET 4上有一个带有自定义UserNamePasswordValidator的WCF服务,使用SSL和邮件安全保护。

UserNamePasswordValidator接收用户名和密码,并将其传递给存储过程,该存储过程返回该用户名和密码的有效帐户令牌。

我的问题是我不明白如何在实际的Web服务中访问该帐户令牌。我怀疑我必须能够在某处将标​​记添加到标题中,但UserNamePasswordValidator中尚未存在OperationContext,并且在HttpContext上设置它失败,并显示“验证消息的安全性时发生错误。”

从我的谷歌搜索,似乎我必须实现IAuthorizationPolicy或IIdentity,但这些都不会有访问密码。

我认为许多服务都会使用用户名和密码,并使用它来查找相关帐户。我是否过于复杂,或者我只是遗漏了一些明显的东西?

2 个答案:

答案 0 :(得分:2)

如果要在身份验证时捕获其他信息(即:您的令牌),则需要实现自定义UserNameSecurityTokenAuthenticator,而不仅仅是自定义UserNamePasswordValidator。有关示例,请参阅http://www.neovolve.com/2008/04/07/wcf-security-getting-the-password-of-the-user/

答案 1 :(得分:1)

我最终检查了OperationContext.Current.ServiceSecurityContext.PrimaryIdentity以查看用户是否经过身份验证,然后只根据身份名称从数据库中检索我需要的信息。这似乎工作得很好。