【发布时间】:2016-04-12 23:24:30
【问题描述】:
我有一个 Express 应用程序设置,需要一些关于存储令牌的建议。
我在验证用户帐户后从 OAuth 2 服务器接收访问令牌,然后我需要将其用于后续 api 请求。
我想对客户端隐藏令牌值,我相信这样做的一种方法是将服务器上的令牌保存在编码的 cookie 中,以便在发出进一步请求时,这些请求可以通过中间件和 cookie 进行路由然后可用于检索存储在服务器端的令牌,然后用作对实际 api 端点的持续请求中的标头值。
实际上有人已经问过这个问题 - How to store an auth token in an Angular app 这正是我在我的应用程序中使用的流程,但答案是关于使用 Angular 服务,我不确定我是否愿意这样做,当然这都可以由 Express 处理,因此客户端代码不需要知道令牌,只需要 API 服务器返回的任何错误。
所以我认为我需要的流程摘要:
- 用户提交登录凭据
- OAuth 2 服务器返回访问令牌
- 令牌保存在 Express 中的某个位置,由各种 id 键入
- 生成 cookie 并将其发回以响应客户端。 Cookie 可能包含编码的令牌值?或者可能是存储在 Express 中间件组件中的令牌值的 id?
- 客户端发出 api 请求,Express 路由中间件获取该请求。
- Express 检查 cookie 的存在并解码令牌值,或者以某种方式从存储机制服务器端检索。
- 然后将令牌值用作 express 和最终 api 端点之间的标头
可能已经有中间件可以处理这种事情,我已经看到 PassportJS 这似乎是我可能想要使用的那种东西,但我不太确定它可以处理服务器上的 OAuth2 令牌流我正在反对(密码授予),但似乎更适合重定向登录 OAuth 流程。
我肯定需要在某个地方将令牌值保存在 Express 中,因此需要某种形式的存储(我认为不是在内存中)。
我对 Express 还很陌生,所以如果有任何关于如何解决这个问题的建议\建议,我将不胜感激。
谢谢
【问题讨论】:
-
当你从Oauth2服务器收到token时,你可以把它保存在用户端。您可以使用 cookie 或 localstorage HTML 5。
-
好的,cookie 方法是我的想法,但它需要将令牌的值编码回客户端,然后每次都将其解码,以便 Express 的后续请求到最终终点。
标签: angularjs node.js express oauth-2.0 access-token