OAuth2和Google API:访问令牌到期时间?

时间:2012-12-13 00:37:05

标签: security google-api oauth-2.0 google-api-java-client google-oauth

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

要访问Google API,我们会在配置文件中存储用户名和密码,这是一种安全风险,客户不喜欢这样做。因此,我们希望使用OAuth2长期访问令牌。

Google OAuth2访问令牌的默认到期时间是什么?

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

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

3 个答案:

答案 0 :(得分:94)

您不应该根据访问令牌的特定生命周期来设计您的应用程序。假设他们(非常)短暂。

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

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

  1. 当您更换刷新令牌(使用/ o / oauth2 / token端点)时,它是响应中的参数(expires_in)。 More details.
  2. 还有一个API可以返回access_token的剩余生命周期:

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

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

答案 1 :(得分:3)

google oauth2访问令牌的默认expiry_date为1小时。 expiry_date在Unix纪元时间内以毫秒为单位。如果您想以人类可读的格式阅读本文,那么您只需在此处查看.. Unix timestamp to human readable time

答案 2 :(得分:0)

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

有没有人见过以这种方式使用的访问令牌到期时间的文件?