代码之家  ›  专栏  ›  技术社区  ›  Stuart

如何使用WebService通信验证调用方

  •  3
  • Stuart  · 技术社区  · 15 年前

    我继承了一个以数据集的形式从WebMethod获取数据的系统。数据可能是敏感的。有一件事让我想到,有些方法无法知道或检查调用者是谁,还有一些方法需要一个整数来标识调用者。此整数从0开始,是连续的,并与其他公司/数据集关联。显然不够好。(对于我来说,通过猜测数字很容易就能看到我不应该访问的数据

    我的问题是,是否有一种最佳的实践方法来认证呼叫者,改进这个系统?

    2 回复  |  直到 15 年前
        1
  •  3
  •   Marc Gravell    15 年前

    它是什么类型的服务?现在,我将它写为wcf,并使用任何常规身份模型进行身份验证(我通常使用TransportWithMessageCredential,即在正文中使用用户名/密码的SSL)。然后你可以通过 Principal ( Thread.CurrentPrincipal.Identity.Name )

    对于SOAP服务,您可以使用SOAP头进行身份验证,也可以将标识信息作为方法参数包括在内——用户名/密码对,或者可以解析以获取标识的单独标识令牌。在任何情况下,您都应该只在安全传输(如SSL)上“按原样”传递身份信息。还有一些其他技术不需要传递密码,但它们更复杂(尤其是涉及多个域等的情况下);可以选择使用Kerberos或联邦安全性。就我个人而言,我保持简单,不是所有客户都能做到的。 使用 联邦等-但大多数客户机可以通过SSL传递用户名/密码对。

        2
  •  0
  •   ichiban    15 年前

    如果您可以控制Web服务代码,那么可以修改它以要求身份验证,或者创建一个代理。

    请看这个 article .