当前位置: 首页 > 知识库问答 >
问题:

Google Oauth2:刷新客户端的id_令牌

金宣
2023-03-14

我正在开发一个angularjs网络应用。

要访问服务器端api,我需要添加一个id_token头,并通过使用https://accounts.google.com/o/oauth2/authendpoint接收id_token。

问题的关键是——id_token有一个过期日期。在访问服务器应用编程接口之前,我需要确保id_token还没有过期,但是如果是,显而易见的选择是刷新它。

有没有办法刷新id_令牌?

我知道我可以将访问类型更改为脱机,并接收刷新令牌,但请求脱机访问似乎很奇怪,而在我的情况下,用户基本上只在实际联机使用web应用时才与服务器交互。

共有2个答案

盖雪峰
2023-03-14

当id_令牌过期时,客户端从服务器请求新令牌,这样用户就不需要再次授权。

从OPENID CONNECT隐式流的角度实现静默令牌更新

蒲昀
2023-03-14

忘记刷新令牌和离线访问。此方法仅适用于服务器和桌面应用程序。在浏览器中存在刷新令牌将是一个巨大的安全漏洞。

如果您阅读了谷歌JS OAuth库的文档,您会发现一旦当前访问令牌过期,就很容易获得新的访问令牌。请参见gapi.auth.authorize(),并注意立即=true的注释。注意,这种方法不建议使用,尽管它很有效。您需要的一切都在https://developers.google.com/api-client-library/javascript/reference/referencedocs

 类似资料:
  • 我的SPA应用程序使用以下体系结构(来源): 这假设我的客户端应用程序知道刷新令牌,因为如果没有用户凭据(例如电子邮件/密码),我需要它来请求新的访问令牌。 我的问题:在客户端应用程序中,刷新令牌存储在哪里?关于这个话题有很多问题/答案,但是关于刷新标记,答案并不清楚。 访问令牌和刷新令牌不应存储在本地/会话存储器中,因为它们不是存放任何敏感数据的地方。因此,我会将访问令牌存储在一个cookie中

  • 下一个问题是如何刷新获得的访问令牌? 我试图使用下面的命令这样做,但我得到了“访问此资源需要完全身份验证”。在我获得新的刷新令牌后,我可以使用刷新令牌再次刷新我的新访问令牌吗? 谢谢。

  • 引用的员额: 为什么OAuth v2既有访问令牌又有刷新令牌? 刷新令牌有什么意义?

  • 我想知道如何使用混合流刷新IdentityServer4客户端中的访问令牌,它是使用ASP构建的。NET核心MVC。 如果我正确理解了整个概念,客户端首先需要拥有“离线访问”范围,以便能够使用刷新令牌,这是启用短期访问令牌的最佳实践,并且能够撤销刷新令牌,防止向客户端颁发任何新的访问令牌。 我成功地获得了一个访问令牌和一个刷新令牌,但是我应该如何处理MVC客户端中访问令牌的实际更新过程呢? Ope

  • 问题内容: 我们目前正处于非公开Beta测试阶段,因此仍在进行相当快速的更改,尽管显然随着使用量的增加,我们将放慢这个过程。话虽这么说,我们遇到的一个问题是,在我们推出新JavaScript文件的更新后,客户端浏览器仍然使用文件的缓存版本,而他们看不到更新。显然,在技术支持电话上,我们可以简单地通知他们进行刷新以确保他们从服务器获取最新文件,但是最好在此之前进行处理。 我们当前的想法是将版本号简单

  • 我有一个客户端,它监听配置服务器。配置服务器指向github。使用localhost时一切正常。然而,当我将应用程序部署到Kubernetes时,用于刷新属性的客户端endpoint无法正常工作。 endpoint(后):http://config-client.sbx.com/actuator/refresh 这将在Postman“[]”上返回一个空响应,响应代码为200 OK。我能够看到配置服