如何通过Web服务通信验证调用方

时间:2009-05-31 21:07:23

标签: c# asp.net web-services

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

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

2 个答案:

答案 0 :(得分:3)

它是什么类型的服务?这些天,我把它写成WCF,并使用任何常规身份模型进行身份验证(我通常使用TransportWithMessageCredential - 即身份中带有用户名/密码的SSL)。然后,您只需通过PrincipalThread.CurrentPrincipal.Identity.Name)检查身份。

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

答案 1 :(得分:0)

如果您可以控制Web服务代码,则可以将其修改为要求身份验证或者创建代理服务器。

请阅读article