用URL发送凭证,可能吗?

时间:2010-03-15 02:34:35

标签: asp.net web-services authentication

我得到了一个我用基本身份验证保护并使用ssl的Web服务。为了让使用这个Web服务的客户很容易,我想跳过401并使用url发送凭证(我希望客户可以通过他们的代码/ web应用程序访问带有URL的Web服务),问题这有可能吗?

我知道标题,但很多客户使用这个没有合适的开发团队来做代码。

感谢

3 个答案:

答案 0 :(得分:4)

嗯,你当然可以,但你真的不应该。在URL中以纯文本形式发送信息是不好的,因为该URL可能被缓存在几个不同的地方,并且通常不必要地暴露敏感信息。您可以在发送之前加密它,但这可能比它的价值更麻烦。

使用纯粹基于URL的身份验证的可接受方法是某种令牌。您需要通过标准登录过程来生成令牌。 附录:另请注意,这比将纯文本密码放入网址更好,但仍然存在问题。 URL比其他标头信息更广泛地记录,缓存和加书签。至少你保留了对令牌的控制权,并且可以在一段时间后使其失效,而URL中的密码不能简单地过期。

如果您正在开发API,我认为要求一些身份验证程序是合理的。如果您的客户无法做到这一点,请提供一个可以帮助他们的库或代码片段。

答案 1 :(得分:0)

我对@deceze表示赞同。在URL中发送密码很糟糕,完全违背了拥有SSL的目的。另一方面,如果您使用BASIC + SSL,则您的正文已加密。这意味着由于SSL正在运行,您发布的密码(使用FORM - > UserName& Password字段)无法解密。

我也不完全同意基于URL的auth与某些令牌会很好,主要是因为无论你加密它(或不加密!),URL无论如何都会作为查询字符串通过所有跳转到每个人。因此任何人都可以阅读网址并冒充。

HTH, 拉胡

答案 2 :(得分:0)

警告:正如其他人所说,这是一个非常糟糕的想法!

但是,为了回答您的原始问题,假设您使用的是基本身份验证,则可以在URL中嵌入用户名和密码。

http://userid:password@www.anywhere.com/

这将使您的用户更容易使用API​​,并使黑客绕过您的安全。你完全不仅仅是完全关闭身份验证。

警告:正如其他人所说,这是一个非常糟糕的想法!