【发布时间】:2010-03-15 02:34:34
【问题描述】:
我有一个 Web 服务,我通过基本身份验证保护并使用 ssl。为了让离开的客户更容易使用此网络服务,我想跳过 401 并使用 url 发送凭据(我希望客户可以从他们的代码/网络应用程序中使用 url 访问网络服务),问题这可能吗?
我知道标头,但是很多使用此标头的客户没有合适的开发团队来编写代码。
谢谢
【问题讨论】:
标签: asp.net web-services authentication
我有一个 Web 服务,我通过基本身份验证保护并使用 ssl。为了让离开的客户更容易使用此网络服务,我想跳过 401 并使用 url 发送凭据(我希望客户可以从他们的代码/网络应用程序中使用 url 访问网络服务),问题这可能吗?
我知道标头,但是很多使用此标头的客户没有合适的开发团队来编写代码。
谢谢
【问题讨论】:
标签: asp.net web-services authentication
嗯,你当然可以,但你真的不应该。在 URL 中以纯文本形式发送信息是不好的,因为该 URL 可能会被缓存在几个不同的地方,并且通常会不必要地暴露敏感信息。您可以在发送之前对其进行加密,但这可能比它的价值更麻烦。
使用纯基于 URL 的身份验证的公认方法是某种令牌。不过,您需要通过标准登录程序来生成令牌。 附录: 另请注意,这比将纯文本密码放在 URL 中要好,但仍然存在一些问题。 URL 比其他标头信息更广泛地记录、缓存和添加书签。至少您保留了对令牌的控制权,并且可以在一段时间后使其过期,而 URL 中的密码不能简单地过期。
如果您正在开发 API,我认为需要一些身份验证程序是合理的。如果您的客户做不到,请提供可以帮助他们的库或代码 sn-ps。
【讨论】:
我完全同意@deceze。在 URL 中发送密码是不好的,完全违背了使用 SSL 的目的。另一方面,如果你使用 BASIC + SSL,你的身体是加密的。这意味着由于 SSL 正在运行,您发布的密码(使用 FORM -> 用户名和密码字段)无法被介于两者之间的任何人解密。
我也不完全同意带有一些令牌的基于 URL 的身份验证会很好,主要是因为无论您如何加密它(或不加密它!),URL 无论如何都会通过所有跃点作为每个人的查询字符串。因此,任何可以阅读 URL 并模拟的人。
HTH, 拉胡尔
【讨论】:
警告:正如其他人所提到的,这是一个非常糟糕的主意!
但是,为了回答您的原始问题,假设您使用基本身份验证,您可以像这样在 URL 中嵌入用户名和密码。
http://userid:password@www.anywhere.com/
这将使您的用户更容易使用 API,并且黑客可以绕过您的安全。你只比完全关闭身份验证稍微好一点。
警告:正如其他人所提到的,这是一个非常糟糕的主意!
【讨论】: