我们应该实施什么来授权客户使用我们的网络服务?

我们有一个Web服务,我们将在公共Web服务器上托管,它将通过托管在医院墙内的Web服务器上的Web服务进行联系。 我们已经编写了两个软件,因此我们可以完全控制实现的内容。

我们希望保护两个Web服务器之间的通信。 目前我们唯一拥有的是公共Web服务器上的https和用于识别客户端的guid。

我们可以支持网络级别的授权,但我不喜欢依赖这些,因为并非所有客户(医院)都可以做同样的事情。 有些人无法为我们提供静态IP,有些人无法使用VPN,因此我们无法完全依赖这些方法。

您使用了哪些技术或建议您授权与Web服务进行通信? 我们主要关心的是让人们无法获得医院ID(目前只是一个GUID)并从我们的医院Web服务中获取数据。

我们将采用其他网络级别的安全措施来限制公众对我们系统的访问,但我觉得软件解决方案也是必要的。

该系统尚未投入生产,但即将完成开发。 它是在C#on .net 3.5上开发的

FWIW我正在考虑某种基于令牌的授权,因为我知道以前的雇主在这些方面使用了某些东西。 但是,我不知道具体要查找的内容或有关该主题的任何其他信息。

编辑:虽然我想使用WCF,但目前团队中没有人(包括我自己)有任何使用它的经验,我们已经开发了Web服务以及与它们交互的代码。 所有使用.net 2.0方法添加的Web引用(来自vs.net08,目标是.net 3.5),我们宁愿不完全重做。 我不会说WCF不是一个选项,但我认为我们不会随意使用该选项。

你可以使用像https这样的基本身份validation来提供用户名密码吗? 我相信Microsoft SOAP可以很好地支持它。 您几乎只使用IIS来配置基本身份validation(必须使用SSL),并且在您的C#中只需将ICredentials传递给您的代理。

从谷歌搜索,它看起来像其他语言也支持基本的auth over SOAP。

客户端证书可用于从调用者向您的Web服务提供凭据; 获取通过的证书并进行任何额外的评估来决定该证书的可见性并不难。

你可能想要使用像OAuth这样的东西:

http://oauth.net/

然后,您可以将其与WCF一起使用以提供端点。

从那里,您可能希望将声明映射到客户的内部ID(您必须确定此映射是什么)。

这样,您不必依赖向任何人发布任何内容,您只需根据发送给您的声明创建映射。