代码之家  ›  专栏  ›  技术社区  ›  Allen Rice 0x6A75616E

我们应该实现什么来授权客户使用我们的Web服务?

  •  2
  • Allen Rice 0x6A75616E  · 技术社区  · 16 年前

    我们有一个Web服务,我们将托管在一个公共Web服务器上,它将被托管在医院墙内的Web服务器上的Web服务联系。我们已经编写了这两个部分的软件,所以我们可以完全控制实现的内容。

    我们希望确保两个Web服务器之间的通信安全。目前,我们只有公共Web服务器上的HTTPS和用于标识客户机的GUID。

    我们可以支持网络级别的授权类型,但我不喜欢依赖这些类型,因为并非所有客户(医院)都能做到这一点。有些不能给我们一个静态IP,有些不能做一个VPN,所以我们不能仅仅依靠这些方法。

    您正在使用什么技术,或者您建议授权与Web服务的通信? 我们主要关注的是防止人们获取医院ID(目前只是一个guid)以及从我们为医院提供的Web服务中获取数据。

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

    该系统尚未投入生产,但已接近开发完成。它是在.NET 3.5的C中开发的。

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

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

    3 回复  |  直到 16 年前
        1
  •  1
  •   Andrew M    16 年前

    您可以使用类似于通过HTTPS进行基本身份验证的方法来提供具有挑战性的用户名密码吗?我相信微软的SOAP非常支持它。您几乎只需使用IIS配置基本身份验证(必须使用SSL),而在您的C中,只需将icredentials传递给您的代理。

    从googling来看,其他语言也支持SOAP上的基本认证。

        2
  •  1
  •   Joe    16 年前

    客户机证书可以用来提供从调用者到您的Web服务的凭证;接受已传递的证书并进行任何额外的评估来指定证书的可见性并不难。

        3
  •  1
  •   casperOne    16 年前

    您可能想使用OAuth这样的工具:

    http://oauth.net/

    然后,可以将它与wcf一起使用以提供端点。

    从那里,您需要将索赔映射到客户的内部ID(您必须确定这个映射是什么)。

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