我将我的第一个SOAP Web服务添加到现有的大型Web窗体应用程序中。
我想我已经制定了技术细节来完成这项工作。但是,我仍然对身份验证有疑问。一种选择是简单地让我的web方法采用用户名/密码参数,如下所示:
RetryPolicy
我的问题是这种方法的缺点是什么。 Web窗体有自己的身份验证代码,我也看到WCF也有用于身份验证的工具。我还看到了一些关于"使用SOAP标头和#34;进行自定义身份验证的事情,我对此一无所知。
有比这更安全的方法吗?有什么建议让我走上正轨吗?
答案 0 :(得分:0)
您可以创建一个公开登录/注销方法的端点/接口。登录会公开登录名和密码参数并对用户进行身份验证。它返回一些唯一标识用户的密钥,例如login&的哈希值。密码。随后,您将创建另一个端点,例如PublicServices。向服务发送的每个请求都包含放置在头中的已获取的散列。一旦服务收到消息,它就会对某些资源(如数据库)进行散列验证。如果不正确则抛出错误并且没有达到任何方法。就WCF而言,您需要指定自定义类,分别为客户端和服务派生 IClientMessageInspector 和 IDispatchMessageInspector 。
这种解决方案有什么好处?什么服务和请求的验证之间的明显分离。 Sloppy解决方案是将hash作为方法的参数发送,并在服务公开的每个方法中验证它。