使用WCF验证多个服务之间的调用者的身份

时间:2014-01-06 18:17:04

标签: c# wcf security

我有一个客户端,它调用一个服务(传递一个用户ID和密码)。第一个服务可以针对数据库中的用户验证这些凭据。然后第一个服务需要调用另一个服务,但是第二个服务不能传递给第一个服务的用户ID和密码(这是我无法控制的要求)。

enter image description here

这些服务很可能位于不同的域上,并且都暴露在互联网上(因此安全性是一个很大的问题)。

因此,我正在研究第二项服务应如何检查/验证我的第一项服务是否正在调用它(而不是其他试图冒充它的人)的选项。

我有一个想法是添加一个充当身份验证服务的附加服务,这可以发出一个令牌,然后传递给第二个服务,后者又调用身份验证服务来检查令牌。另一个想法(来自同事)一直是为每个服务分配SSL证书,并在呼叫进入服务器B时检查证书 - 我没有看到以这种方式使用的证书,所以我不确定它是否可行。< / p>

这仍处于设计阶段,因此我对其他想法/方法持开放态度。

2 个答案:

答案 0 :(得分:0)

如果您需要一个简单的修复,那么为服务A创建一组额外的凭据,以便服务B可以确定从授权方调用它而不知道客户端凭据可能就足够了。

从长远来看,Windows Identity Foundation之类的内容与您使用身份验证服务的计划完全相同。

答案 1 :(得分:0)

因此,A和B双方都接触到互联网(不信任的环境)。考虑到安全要求,您需要的是相互WCF身份验证。证书是实现目标的最简单方法 - 您的服务器必须确保正确的客户端调用它,并且客户端必须确保它调用适当的服务器(DNS攻击等)。这意味着每一方必须拥有另一方的公钥才能进行身份验证。检查this article以获取有关如何配置服务器和客户端的详细信息。

相关问题