我们将在公共网络服务器上托管一个Web服务,并且将通过托管在医院墙壁内的Web服务器上的Web服务进行联系。我们已经编写了两个软件,因此我们可以完全控制实现的内容。
我们希望保护两个Web服务器之间的通信。目前我们唯一拥有的是公共Web服务器上的https和用于识别客户端的guid。
我们可以支持网络级别的授权,但我不喜欢依赖这些,因为并非所有客户(医院)都可以做同样的事情。有些人无法为我们提供静态IP,有些人无法使用VPN,因此我们无法完全依赖这些方法。
您使用了哪些技术或建议您授权与Web服务进行通信?我们主要关心的是让人们无法获取医院ID(目前只是一个GUID)并从我们的网站获取数据为医院服务。
我们将采用其他网络级别的安全措施来限制公众对我们系统的访问,但我觉得还需要一个软件解决方案。
该系统尚未投入生产,但即将完成开发。它是在C#on .net 3.5上开发的。
FWIW我正在考虑某种基于令牌的授权,因为我知道以前的雇主在这些方面使用了某些东西。但是,我不知道具体要查找的内容或有关该主题的任何其他信息。
编辑虽然我想使用WCF,但目前团队中没有人(包括我自己)有使用它的经验,我们已经开发了Web服务以及交互的代码跟他们。所有使用.net 2.0方法添加的Web引用(来自vs.net08,目标是.net 3.5),我们宁愿不完全重做。我不会说WCF不是一种选择,但我认为我们不会随意使用该选项。
答案 0 :(得分:1)
客户端证书可用于从呼叫者向您的Web服务提供凭据;获取通过的证书并进行任何额外的评估来决定该证书的可见性并不难。
答案 1 :(得分:1)
你可能想要使用像OAuth这样的东西:
然后,您可以将其与WCF一起使用以提供端点。
从那里,您可能希望将声明映射到客户的内部ID(您必须确定此映射是什么)。
这样,您不必依赖向任何人发布任何内容,您只需根据发送给您的声明创建映射。
答案 2 :(得分:1)
您是否可以使用基本身份验证而不是https来提供用户名密码?我相信Microsoft SOAP能够很好地支持它。您几乎只使用IIS来配置基本身份验证(必须使用SSL),并且在C#中只需将ICredentials传递给您的代理。
从谷歌搜索,看起来其他语言也支持SOAP的基本身份验证。