0

我正在尝试在 WCF 中为以下场景找到标准解决方案:

我有 2 项服务。Service1 想要向 service2 发送请求。我希望 service1 在 service2 响应他的请求之前发送凭据以便进行身份验证。

我不想使用 ssl 或在所有网络服务之间复制证书。

这是我的解决方案:

我将创建一个“安全服务”。

Service1 将针对安全服务进行身份验证。

成功验证后,此安全服务将为 service1 提供由安全服务签名的自定义令牌。

Service1 会将此令牌附加到它的每个请求中。

Service2 将验证此令牌,如果成功,将处理请求。

答案是 C# (WCF) 中是否有实现此机制的方法。

谢谢

4

2 回答 2

1

Microsoft 为此类声明基础授权提供 WIF(Windows 身份基础)。看看这篇文章:

http://msdn.microsoft.com/en-us/magazine/ee335707.aspx

问候。

于 2012-04-19T09:37:16.423 回答
0

如果您在谈论 WCF 服务,请查看WCF 支持的安全类型。它是无,传输,消息,TransportWithMessageCredential,TransportCredentialOnly,两者。你说你对运输安全不感兴趣。因此,列表中仍然存在消息安全性。

WCF supports the following credential types when you are using message level security:

Windows. The client uses a Windows token representing the logged in user’s Windows identity. The service uses the credentials of the process identity or an SSL certificate. You will use this in the sample application that demonstrates the first scenario (internal self-hosted service).
UserName. The client passes a user name and password to the service. Typically, the user will enter the user name and password in a login dialog box. The service can validate the user name and password using a Windows account or the ASP.NET membership provider. You will use this in the sample application that demonstrates the third scenario (public Web-hosted service).
Certificate. The client uses an X.509 certificate and the service uses either that certificate or an SSL certificate.
IssueToken. The client and service use the Secure Token Service, which issues tokens the client and service trust. Windows CardSpace uses the Secure Token Service.
None. The service does not validate the client.

接下来你没有说什么,但确定身份验证类型很重要,这就是你将如何托管你的服务,尤其是服务 2。Windows 身份验证适用于内部自托管服务,但我不确定这是你的情况. 因此,如果您的服务将托管在 IIS 上,则用户名适合您。您需要的是摘要式身份验证的支持。阅读WCF REST 服务上的摘要式身份验证。如果它不是 IIS 托管服务或者您需要替代解决方案,则可能是使用安全令牌服务。但是最新的更好的解决方案是基于声明的身份验证,您可以在其他答案中找到链接。

于 2012-04-19T10:07:18.903 回答