5

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

这在使用 Windows 身份验证和消息安全时按预期工作,从 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 时如何实现自定义身份验证有任何建议?

4

2 回答 2

3

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

查看样本 8 或 4。

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

于 2011-05-12T21:44:11.493 回答
2

看看StarterSTS

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

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

于 2011-05-10T19:41:53.380 回答