【发布时间】:2016-01-13 21:55:30
【问题描述】:
我无法以正确的方式实施 OAuth。 我使用客户端/API 架构(前端为 Angular,后端为 Node.js),我希望用户仅使用 Google OAuth 身份验证登录。
这是我认为目前正确的方法(如果我误解了什么,请告诉我):
- Angular 打开一个谷歌弹出窗口,征求用户的同意。
- 一旦用户同意,谷歌授权服务器就会向 Angular 发送一个验证码。
- 此验证码被转发到 API 端点。
- 然后,API 要求 Google 授权服务器将此代码交换为 access_token、id_token 和 refresh_token。
- Google 发送这 3 个令牌。
- API 使用 access_token 从 Google API 检索用户
- API 持久化用户
这是一个小难题,在我看来,access_token 和 refresh_token 应该存储到数据库中,id_token 应该发送回 Angular 客户端。 这样,它将允许 API 在 Google API 中请求资源,并且如果令牌过期,由于 refresh_token,它仍然可以请求新令牌。 在客户端,id_token 嵌入在所有请求中,因此允许 API 识别客户端并使用来自 https://www.googleapis.com/oauth2/v3/certs 的 Google 证书验证他的身份验证。
假设这是使用令牌的正确方法,由于客户端没有任何刷新令牌,我该如何处理 id_token 过期?
谢谢!
【问题讨论】:
标签: angularjs oauth-2.0 jwt google-oauth