使用安全令牌服务时的身份验证

时间:2011-05-10 16:59:14

标签: wcf wif sts-securitytokenservice

我创建了一个安全令牌服务(STS),一个引用STS的服务和一个示例桌面应用程序。

当使用Windows身份验证和Message安全性时,这可以正常工作,从STS检索令牌并成功调用服务方法。该服务返回一个包含当前用户身份的字符串,该字符串返回我的AD用户名。

但我要求对数据库而不是AD进行身份验证。我试过创建一个CustomUserNameValidator(在STS中,这是正确的位置吗?)并在web.config中引用它。然后我提供如下所示的凭证。

SampleServiceReference.SampleServiceClient client = new SampleServiceReference.SampleServiceClient(); client.ClientCredentials.UserName.UserName = "alex"; client.ClientCredentials.UserName.Password = "pass";

我相信证书设置正确(全部使用'localhost'),但是在调用服务时我收到以下异常:

  

System.ServiceModel.FaultException:ID3242:无法对安全令牌进行身份验证或授权。

无论我尝试什么似乎都失败了。我所描述的甚至可能吗?服务客户端是否也将客户端凭据传递给STS,或者我完全误解了这里发生的事情?

此stackoverflow问题类似,但我已检查了受众群体网址,似乎没问题。 WIF STS ID3242

有没有人对如何在使用STS时实现自定义身份验证有任何建议?

2 个答案:

答案 0 :(得分:3)

这里有一个简单的例子:http://claimsid.codeplex.com

查看样本8或4。

虽然有点澄清。用户名/密码身份验证在STS上,而不在您的服务上。您的服务将使用从STS获得的安全令牌进行身份验证。

答案 1 :(得分:2)

查看StarterSTS

提供完整的源代码,并根据基于SQL DB的标准aspnetdb角色进行身份验证。有许多视频可以帮助您启动和运行。

然后这个项目变成了ASP MVC - IdentityServer。这在帮助文件等方面并不那么成熟。