我们正在寻求保护一堆 ASP.Net 2.0 .asmx Web 服务。将托管 Web 服务的已经是经过身份验证的表单。
是否可以使用表单身份验证来保护 Web 服务?实现这一目标的利弊和其他可能的方法是什么。我们当然不想在每个 Web 方法调用中传递用户名/密码或令牌。
4 回答
表单身份验证的特点是它是为人们设计的,其中 Web 服务被设计为由客户端应用程序使用。虽然可以像这样进行身份验证,但这是错误的思维方式。
所需的安全级别显然取决于您正在使用的数据的敏感性,但我将假设它至少有点敏感(但低于银行交易)。您也许可以使用 SSL 并按照 jle 的建议传递用户名和密码,而我正在输入此内容,或者您可能需要一个 api 密钥,就像 flickr 所做的那样。
另一个更安全的选择是只传递一次用户名和密码(并且具有 ssl 的安全性),并让它发出一个在一段时间内有效的令牌。这样做的好处是可以保护密码信息,并避免 ssl 的持续开销。
如前所述,这在很大程度上取决于您要保护的信息的敏感程度。
WSE 已过时。除非您别无选择,否则不要使用它。
几乎WSE的所有功能都被WCF更好地实现了。WCF 未实现的其余功能本身已过时(例如 DIME)。
这是可能的,但您需要将用户重定向到登录页面。传递用户名/密码的另一种选择是通过ssl使用 Web 服务。如果您加密连接,则可以使用基本身份验证没有问题。
您应该能够使用 WSE 使用表单身份验证来保护您的服务 - 尽管我个人从来没有这样做过。
以下是一些使用 WSE 的资源:
- http://aleemkhan.wordpress.com/2007/09/18/using-wse-30-for-web-service-authentication/
- http://msdn.microsoft.com/en-us/library/aa480575.aspx
要不使用 WSE,您需要像其他一些预发者所暗示的那样实现类似的东西,尽管我不确定它有多可靠: