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