我创建了一个安全令牌服务 (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 时如何实现自定义身份验证有任何建议?