关于安全性:OAuth2和Google API:访问令牌的有效时间?

OAuth2 and Google API: Access token expiration time?

我们有一个独立的Java应用程序(请参阅"已安装的应用程序":https://developers.google.com/accounts/docs/OAuth2),该应用程序会定期运行并使用google API(更新来自客户数据库/ ldap / ...的一些信息) 。

要访问Google API,我们将用户名和密码存储在配置文件中,这存在安全隐患,客户不喜欢这样做。 因此,我们想改用OAuth2长寿访问令牌。

Google OAuth2访问令牌的默认到期时间是多少?

由于我们在应用程序中只有访问令牌,因此访问令牌过期时,应用程序本身无法刷新它...

我个人认为,在这种情况下,OAuth2实现不会带来任何重大好处,而是让我们关注主要问题-默认到期时间。


您不应基于访问令牌的特定生存期来设计应用程序。只是假设他们(非常)短暂。

但是,在成功完成OAuth2安装的应用程序流程后,您将获得刷新令牌。此刷新令牌永远不会过期,您可以根据需要使用它来将其交换为访问令牌。保存刷新令牌,并使用它们按需获取访问令牌(然后应立即将其用于获取用户数据)。

编辑:尽管以上我的评论,有两种简单的方法来获取访问令牌到期时间:

  • 当您交换刷新令牌(使用/ o / oauth2 / token端点)时,它是响应(expires_in)中的参数。更多细节。
  • 还有一个API返回access_token的剩余生存期:

    https://www.googleapis.com/oauth2/v1/tokeninfo?access_token={accessToken}

    这将返回一个包含expires_in参数的json数组,该参数是令牌生存期内剩余的秒数。


  • Google oauth2访问令牌的默认expiry_date为1小时。 expiry_date以Unix纪元时间(以毫秒为单位)。如果您想以人类可读的格式阅读它,那么只需在此处进行检查即可。.Unix时间戳为人类可读的时间


    这是对Google访问令牌到期问题的进一步观察。我有一台使用Google Oauth2的服务器,它使用端点https://www.googleapis.com/oauth2/v3/userinfo?access_token=YOUR_ACCESS_TOKEN进行第一级身份验证。我发现以这种方式使用的访问令牌的寿命比60分钟更长。我不确定仅以这种方式使用时它是否会过期。

    有没有人看到仅以此方式使用的访问令牌的有效期限文档?