在Cookie中存储API的用户名和密码?

时间:2011-04-27 14:46:55

标签: security http cookies https

我编写了一个与不同域中的API接口的Web应用程序。

此API请求某些调用的用户名和密码(涉及POST,例如将照片上传到API)。对于这些调用,API使用https。

我是否可以在网络应用中存储用户名和密码,因此用户每次上传照片时都不必重复登录?

这是我能想到的:

  1. 显而易见的方法是将两者都粘在一个cookie中,但显然这是一个安全漏洞,无论是明文还是哈希。
  2. 如果它是一个安全的网站,我可以使用会话ID:我可以说服API所有者允许会话ID,还是跨域不可能?
  3. 也许我只需要让用户每次进行API调用时都要重新输入用户名和密码。

    谢谢!

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的体系结构,您的用户就会将API调用发送到在不同域中运行的服务。你不是这个请求的中间人,你只是提供接口,例如作为Web应用程序中的表单字段。用户可以在不知道他的情况下发送API调用。

在这种情况下,如果不在浏览器中存储某种身份验证信息(cookie,表单字段等)或让您的用户为每个请求输入它们,就无法实现此目的。它们必须来自某个地方,而您的服务器不参与请求。

你可以做的是改变体系结构并开始像中间人一样玩,就像代理一样。不要只提供界面,而是让用户将他们的请求发送到您的Web应用程序,而不是直接与服务通信。您的Web应用程序会添加凭据并将请求转发给服务。该服务的答案将发送到您的Web应用程序,该应用程序可以再次将其重定向到用户。

在此方案中,您的Web应用程序负责身份验证。如果发现请求的用户已被识别并具有所需权限,则您的Web应用程序会将凭据添加到请求中。该服务的凭据仅从您的Web应用程序传递到服务,甚至可以保护用户自己隐藏。

这种改变当然有几个含义。 Web应用程序的负载将增加,逻辑将变得更加复杂。必须考虑这些权衡。