我想知道在我的系统中发送 session key 的最佳选项。
在我的系统中,有一个供网络浏览器、命令行界面和桌面应用程序使用的 API 服务器。它通过查看 Authorization
HTTP header 对用户进行身份验证。
目前,浏览器将 session key 存储在 localStorage 中,并将其附加到需要登录的请求的 Authorization
header 中。不过,有人指出,存储 session key 等 secret 的更安全方法是使用 HTTP-Only cookie。
问题是 Web 浏览器客户端将无法读取 HTTP-Only cookie 并将 session key 放入 HTTP header 中。
鉴于这种情况,我正在考虑扩展 API 服务器以使用 Authorzation
header 或 cookie 之一来授权用户。这是一个可行的选择吗?还有其他选择吗?
最佳答案
你是对的,Cookie 和授权 header 不兼容。正如您所指出的,您正在考虑两种用例:一种用于浏览器使用,另一种用于 API(cli、桌面应用程序)。
如果您想通过单一身份验证方案支持两者,则需要做更多工作。根据经验,浏览器可以很好地使用 cookie,并且可以轻松安全地进行设置。您应该选择使用浏览器进行基于 cookie 的 session 管理。
Given the situation, I am thinking about extending the API server to use either one of Authorization header or cookie to authorize users. Is this a feasible option, and are there alternatives?
是的,这是可行的,它将使您的浏览器用例更加安全。至于替代方案,我整理了一个 Web Authentication Guide这将极大地帮助您探索您的选择。
关于security - 在 header 中发送 session key 与仅 HTTP cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54525490/