web-dev-qa-db-ja.com

OAuth2とGoogle API:アクセストークンの有効期限

スタンドアロンJavaアプリケーションがあります(「インストール済みアプリケーション」を参照してください: https://developers.google.com/accounts/docs/OAuth2 )。これは定期的に実行され、google API(顧客データベース/ ldap/...からのいくつかの情報を更新します。

Google APIにアクセスするために、ユーザー名とパスワードを構成ファイルに保存しますが、これはセキュリティ上のリスクであり、顧客はそれを好みません。そのため、代わりにOAuth2の長寿命アクセストークンを使用したいと思います。

Google OAuth2アクセストークンのデフォルトの有効期限は?

アプリケーションにはアクセストークンしかないため、アクセストークンの有効期限が切れるとアプリ自体は更新できません...

個人的には、この場合のOAuth2の実装は大きなメリットをもたらさないと思いますが、主な質問-デフォルトの有効期限に焦点を当てましょう。

53
Martin V.

アクセストークンの特定の有効期間に基づいてアプリケーションを設計しないでください。彼らは(非常に)短命だと仮定してください。

ただし、OAuth2インストール済みアプリケーションフローが正常に完了すると、更新トークンが返されます。この更新トークンは期限切れになることはありません。必要に応じて、これを使用してアクセストークンと交換できます。更新トークンを保存し、それらを使用してアクセストークンをオンデマンドで取得します(ユーザートークンへのアクセスを取得するためにすぐに使用する必要があります)。

編集:上記の私のコメントにもかかわらず、アクセストークンの有効期限を取得する2つの簡単な方法があります:

  1. これは、更新トークンを交換するときの応答(expires_in)のパラメーターです(/ o/oauth2/tokenエンドポイントを使用)。 詳細
  2. Access_tokenの残りのライフタイムを返すAPIもあります。

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

    これは、expires_inパラメーターを含むjson配列を返します。これは、トークンの存続期間に残っている秒数です。

98
vlatko

Google oauth2アクセストークンのデフォルトのexpiry_dateは1時間です。 expiry_dateは、ミリ秒単位のUnixエポック時間です。これを人間が読める形式で読みたい場合は、ここで簡単に確認できます. nix timestamp to human readable time

3
Rajkumar Bansal

次に、Googleアクセストークンの有効期限に関する質問をさらに詳しく説明します。 Google Oauth2を使用するサーバーがあり、エンドポイントhttps://www.googleapis.com/oauth2/v3/userinfo?access_token=YOUR_ACCESS_TOKENを使用して第1レベルの認証を行います。私が見つけたのは、このように使用されると、アクセストークンの寿命は60分よりもはるかに長くなるということです。この方法でのみ使用した場合、有効期限が切れることは確かではありません。

この方法でのみ使用されるアクセストークンの有効期限のドキュメントを見たことがありますか?

0
Chris Prince