gpt4 book ai didi

angularjs - Node Express - 身份验证 token 的存储和检索

转载 作者:搜寻专家 更新时间:2023-10-31 22:32:11 26 4
gpt4 key购买 nike

我有一个 Express 应用程序设置,需要一些有关存储 token 的建议。

我在对用户帐户进行身份验证后从 OAuth 2 服务器收到访问 token ,然后我需要将其用于后续 API 请求。

我想对客户端隐藏 token 值,我相信这样做的一种方法是将 token 保存在服务器上的编码 cookie 中,以便在发出进一步请求时,这些请求可以通过中间件和 cookie 进行路由然后可以用于检索存储在服务器端的 token ,然后用作对实际 api 端点的持续请求中的 header 值。

其实已经有人问过这个问题- How to store an auth token in an Angular app这正是我在我的应用程序中使用的流程,但答案是关于使用 Angular 服务,我不太确定我是否愿意这样做,当然这都可以由 Express 处理,因此客户端代码不需要了解 token ,API 服务器返回的任何错误。

所以我认为我需要的流程总结:

  • 用户提交登录凭据
  • OAuth 2 服务器返回访问 token
  • token 保存在 Express 中的某个地方,由各种 id 键控
  • 生成一个 cookie 并将其发送回以响应客户端。 Cookie 可能包含编码的 token 值?或者可能是存储在 Express 中间件组件中的 token 值的 id?
  • 客户端发出 api 请求,Express 路由中间件会接收该请求。
  • Express 检查是否存在 cookie 并解码 token 值,或者以某种方式从存储机制服务器端检索。
  • 然后将 token 值用作 express 和最终 api 端点之间的 header

可能已经有处理这种事情的中间件,我已经看到 PassportJS,它似乎是我可能想要使用的那种东西,但我不太确定它处理服务器上的 OAuth2 token 流我反对(密码授予),而是似乎更适合重定向登录 OAuth 流程。

我肯定需要在某个地方保存 Express 中的 token 值,所以某种形式的存储(我不认为不在内存中)。

我是 Express 的新手,所以非常感谢任何关于如何处理这个问题的建议\建议。

谢谢

最佳答案

最安全的方法就是按照您的描述:

  • 从某些第三方服务(Google、Facebook 等)获取 OAuth token 。
  • 使用 Express 创建一个 cookie,并将该 token 存储在 cookie 中。确保在执行此操作时还设置了 securehttpOnly cookie 标志:这确保客户端 Javascript 代码或任何非 SSL 无法读取 cookie连接。
  • 每次用户向您的网站发出请求时,您在 Express 中的中间件都可以读取该 cookie,并用于向第三方服务发出您需要的任何 API 调用。

如果您的服务还需要在用户没有主动点击您的网站时向 Google/Facebook 等发出异步请求,您还应该将他们的 token 也存储在您的用户数据库中的某个地方——这样您就可以在需要时代表用户提出请求。

我是 express-stormpath 的作者,一个 Node 身份验证库(类似于 Passport),这就是我们在那里做事以确保最大安全性的方式!

关于angularjs - Node Express - 身份验证 token 的存储和检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34674326/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com