【发布时间】:2014-01-13 02:09:06
【问题描述】:
我正在开发一个 Windows 窗体应用程序,该应用程序使用我开发的 WCF 服务,托管在互联网付费主机上。
在我的 WCF 服务上,我有一些 OperationContracts 来为 Windows 窗体客户端提供一些功能。 如果我在我的 Windows 窗体客户端中设置指向我的 WCF 服务的新服务引用,我可以使用该 OperationContracts。到目前为止没有问题。
如果有人“知道”我的 WCF 服务的地址,任何人都可以在他/她的“自己的”客户端应用程序中使用我的“自己的”WCF 服务。
使用像 Wireshark 这样的工具来检索 WCF 服务 url 非常简单。
所以,我的问题...有某种保护措施可以避免这种情况? 我不希望“其他客户”使用我自己的 WCF 服务。
PS:无法在我的付费主机上使用 SSL 证书。
【问题讨论】:
-
添加引用不是什么大问题..但是你可以把authentication这样只有有效的客户端才能访问功能(操作合同)。
-
您是否真的希望只有您的客户才能访问该服务,或者您是否真的关心确保只有授权用户才能访问,而不管他们使用的是什么客户端。不可能 100% 确保只有您的客户才能调用您的服务。另一方面,很容易确保只有授权用户可以。
-
阅读这个 msdn 链接 (msdn.microsoft.com/en-us/library/ff405740.aspx) 我看到有一些身份验证方法(Windows、Basic、证书、NTLM 或无)我不能使用其中任何一个。 Windows 显然不是。我的应用程序不是域应用程序,基本都不是(用一些“反射器”打开它并在纳秒内获取用户/通过),NTLM 也不是(如 Windows auth),最后可能是证书,但我不明白它是如何工作的。
标签: c# wcf web-services