我正在开发一个angularjs网络应用程序。
要访问服务器端api,我需要添加 id_token 标头和
我使用https://accounts.google.com/o/oauth2/auth endpoint
收到了id_token。
问题的症结在于 - id_token 有一个到期日期。在访问服务器API之前,我需要确保 id_token 尚未过期,但如果是,则显而易见的选择是刷新。
有什么方法可以刷新id_token ?
我知道我可以将access_type更改为离线,并收到 refresh_token ,但要求离线访问似乎很奇怪,基本上在我的情况下,用户只有在他实际在线使用网络应用程序时与服务器进行交互。
答案 0 :(得分:0)
忘掉刷新令牌和离线访问的全部内容。此方法仅适用于服务器和桌面应用程序。在浏览器中出现刷新令牌将是一个巨大的安全漏洞。
如果您阅读了Google JS OAuth库的文档,您会发现在当前版本到期后很容易获得新的访问令牌。请参阅gapi.auth.authorize()并注意immediate = true的注释。注意,这种方法已被弃用,尽管它有效。绝对所需的一切都在https://developers.google.com/api-client-library/javascript/reference/referencedocs
答案 1 :(得分:0)
当id_token到期时,客户端会从中请求新的令牌 服务器,以便用户不需要再次授权。
来自IMPLEMENTING A SILENT TOKEN RENEW IN ANGULAR FOR THE OPENID CONNECT IMPLICIT FLOW