6

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

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

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

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

此致

更新:客户端程序旨在为公众(所有人)下载。所以它不是供内部使用的,它将是我们将提供的一项服务,在正式生产中。

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

4

2 回答 2

1

如果您使用的是表单身份验证,那么您可以利用 ASP.NET 通过将 AspNetCompatibilityRequirementsMode 启用为 Required 来检查 FormAuthentication Cookie

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

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

希望能帮助到你

于 2013-06-21T07:16:09.787 回答
1

保护 .net Web 服务 URL

连同其他答案,这也不错,如果你想非常小心,你可以实现一个令牌系统,客户端从你那里获得第一个令牌,每个请求都返回一个新令牌,你总是检查客户与当前令牌(但我认为这过于小心了)

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

于 2013-06-21T07:28:35.490 回答