我有一个ASP.NET Web服务,我可以通过
Windows程序访问,但现在我想保护Web服务.我可以使用表单身份验证来保护Web服务.如何从Windows窗体应用程序访问受保护的Web服务? 最佳答案 虽然这不是正确的方法,但理论上可以以您描述的方式使用表单身份验证.这可以通过以下任一方式实现:
>使用WebRequest以原始形式将请求发送到Web服务.这将涉及检查响应,提取相关的表单 – 身份验证字段,以及发送记录用户的响应.这将生成一个cookie,您必须将其与随后的每个响应服务一起发送
>自己生成FormsAuhentication身份验证cookie.这很复杂,因为它涉及在调用应用程序上同步机器密钥,并人为操纵发送到托管服务的机器的标头.
>显示表单身份验证表单,供用户在需要与Web服务交互的会话开始时登录.然后,您可以收集生成的cookie并将其显示在HTTP标头中的服务中,如选项(2)所示.
正如您所看到的,这些方法非常复杂,并且从根本上说是使用表单身份验证的方法.
Microsoft希望我们使用Windows身份验证或SSL证书来保护对ASP.NET Web服务的访问.请参阅MSDN上的HTTP Security and ASP.NET Web Services.
如果您能够使用WCF,那么还有一些选项可供选择,包括在WCF中提供一些支持,可以在SOAP中构建自定义身份验证机制.
在大多数情况下,保护Web服务是工作中最棘手的部分之一.我见过的许多实时解决方案都是妥协,例如上面的解决方案.