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

Ale*_*all 5 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问题是类似的,但我已经检查了受众URL,似乎没问题.WIF STS ID3242

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

Eug*_*ace 2

更新:下面引用的代码示例不再可用(Codeplex 不存在)。该书下载如下: https: //www.microsoft.com/en-us/download/details.aspx ?id=28362


这里有一个您需要的简单示例: http: //claimsid.codeplex.com

查看示例 8 或 4。

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