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

问题描述

| 我已经在另一个域中编写了一个与API接口的Web应用程序。 此API要求某些调用用户名和密码(涉及POST,例如,将照片上传到API)。对于这些调用,API使用https。 有没有一种方法可以在网络应用程序中存储用户名和密码,从而使用户不必在每次上传照片时重复登录? 这是我能想到的: 显而易见的方法是将两者都粘贴在cookie中,但是很明显,无论是纯文本还是哈希,这都是一个安全漏洞。 如果它是一个安全的网站,我可以使用一个会话ID:我可以说服API所有者允许会话ID,还是跨域实现? 也许我只需要让用户在每次进行API调用时重新输入用户名和密码即可。 谢谢!     

解决方法

如果我正确理解您的体系结构,则您的用户会将API调用发送到在其他域中运行的服务。您不是此请求的中间人,仅提供了例如作为Web应用程序中的表单域。用户可以发送API调用,而无需您甚至不知道自己这样做。 在这种情况下,如果不在浏览器中存储某种身份验证信息(cookie,表单字段等)或让用户为每个请求输入它们,就无法实现此目的。它们必须来自某个地方,并且您的服务器不参与请求。 您可以做的是更改体系结构,并开始像代理服务器一样玩中间人游戏。不仅仅是提供界面,而是让用户将其请求发送到您的Web应用程序,而不是直接与服务进行通信。您的Web应用程序将添加凭据,并将请求转发到服务。服务的答案将发送到您的Web应用程序,该应用程序可以将其再次重定向到用户。 在这种情况下,您的Web应用程序负责身份验证。如果已识别出发送请求的用户并具有所需的权限,则您的Web应用程序会将凭据添加到请求中。该服务的凭据仅从您的Web应用程序传递到该服务,甚至可以对用户自己隐藏。 当然,这种变化有几个含义。 Web应用程序上的负载将增加,逻辑将变得更加复杂。必须权衡这些权衡。