2009-05-31 103 views
3

呼叫者我继承了一个系统,该系统由一个WebMethod中的数据集的形式获取数据。数据可能很敏感。让我感到震惊的是,有些方法无法知道,或者检查调用者是谁,还有一些方法需要整数来标识调用者。该整数从0开始并且是连续的并且与不同的公司/数据集相关联。显然不够好。 (这是容易的,我通过猜测数字如何验证与Web服务通信

我的问题是看我不应该有访问数据,是否有认证呼叫者,完善这一系统

回答

3

什么类型的服务是什么?这些天,我会写的WCF,并使用任何常规身份模型进行身份验证(我通常使用TransportWithMessageCredential - 即正文中带有用户名/密码的SSL)。然后你可以通过PrincipalThread.CurrentPrincipal.Identity.Name)查看身份。

对于SOAP服务,可以使用SOAP头进行身份验证,也可以包括身份信息的方法参数 - 无论是用户名/密码对或独立的身份凭证,可解析得到认同。无论如何,您只应通过SSL等安全传输方式“按原样”传递身份信息。还有其他技术不需要传递密码,但它们更复杂(特别是涉及多个域等时)。 Kerberos或联合安全性是选项。就个人而言,我把它简单,因为不是所有的客户端可以使用联合等 - 但大多数客户端可以通过通过SSL进行用户名/口令对。

+1

如果你使用WCF,您还可以在加密敏感数据的许多选项。 – 2009-05-31 21:29:13

0

的最佳实践方法如果你有控制Web服务代码,你可以修改它为需要身份验证或可能创建一个代理吧。

请仔细阅读本article