WCF服务 - 如何保护,只有我的客户才能使用它?

时间:2013-06-21 07:06:52

标签: c# wcf visual-studio

我正在构建一个通过Internet与WCF服务交互的客户端程序。一切都按预期工作,但我想知道如何保护我的服务,以便只有我的客户端程序才能使用它?

现在每个拥有正确URL服务的人都可以将它与WCFTestClient一起使用(例如)。

将其设为私有的最佳方法是什么,只有我的客户才能使用该服务?旋转令牌字符串?证书?密码?

我不知道,也没有在互联网上找到任何有用的东西。

祝你好运

更新:客户端程序旨在为公众(每个人)下载。因此,它不是供内部使用,而是我们将提供的服务,正式生产的服务。

我自己的想法是:在我的客户端程序中绑定证书(如果可能的话甚至?)。在运行WCF服务的IIS上,检查有效证书。那可能吗?还是更好的解决方案?

2 个答案:

答案 0 :(得分:1)

如果您正在使用表单身份验证,那么您可以通过启用AspNetCompatibilityRequirementsMode为必需来利用ASP.NET来检查FormAuthentication Cookie

或者,如果您的服务是独立的,即被所有人使用,那么您可以使用oauth身份验证,您可以阅读更多相关信息Oauth Authentication

您可以做的是会有一个消费者密钥,它将被共享给所有经过身份验证的客户端。调用者将使用此密钥签署一些信息,服务器也会使用相同的密钥对其进行签名,然后进行比较。

希望有所帮助

答案 1 :(得分:1)

Protect .net Web Service URL

除了其他答案,这也不错, 如果你想要非常小心,你可以实现一个令牌系统,客户端从你那里获得第一个令牌,每个请求返回一个新令牌,你总是检查一个客户端vs它的当前令牌(但是我的注意力过于谨慎)意见)

更新 - 因为它是针对公众的,客户端可以有一种生成有效令牌来检查服务器的方法,你可以让令牌在几秒钟内有效,所以即使人们抓住了请求并找到了令牌,在..15秒或30等之后无效