Skip to main content

ユーザー アクセス トークンを更新する

定期的なトークンのローテーションを強制し、侵害されたトークンの影響を抑えるために、有効期限が切れるユーザー アクセス トークンを利用するように GitHub App を設定できます。

有効期限が切れるユーザー アクセス トークンについて

Note

有効期限が切れるユーザー アクセス トークンは現在オプションの機能であり、変更される可能性があります。 詳細については、「GitHub App のユーザーからサーバーへのアクセストークンの期限切れ」を参照してください。

定期的なトークンのローテーションを強制し、侵害されたトークンの影響を抑えるために、有効期限が切れるユーザー アクセス トークンを利用するように GitHub App を設定できます。 有効期限が切れるユーザー アクセス トークンをアプリで使用する場合、ユーザー アクセス トークンを生成するときに更新トークンを受け取ります。 ユーザー アクセス トークンは 8 時間後に期限が切れ、更新トークンは 6 か月後に期限が切れます。 詳しくは、「GitHub アプリのユーザー アクセス トークンの生成」を参照してください。

更新トークンを使用して、新しいユーザー アクセス トークンと新しい更新トークンを生成できます。 更新トークンを使用すると、その更新トークンと以前のユーザー アクセス トークンは機能しなくなります。

更新トークンを使用する前にその有効期限が切れた場合は、Web アプリケーション フローまたはデバイス フローを介してユーザーを送信することで、ユーザー アクセス トークンと更新トークンを再生成できます。 詳しくは、「GitHub アプリのユーザー アクセス トークンの生成」を参照してください。

有効期限が切れるユーザー アクセス トークンを使用するようにアプリを構成する

アプリを作成すると、オプトアウトしない限り、ユーザー アクセス トークンの有効期限が有効になります。詳細については、「GitHub App の登録」を参照してください。 この設定は、アプリの作成後に構成することもできます。

  1. GitHub の任意のページの右上隅にある、自分のプロファイル写真をクリックします。

  2. アカウント設定にアクセスしてください。

    • 個人用アカウントが所有するアプリの場合は、[設定] をクリックします。
    • 組織が所有するアプリの場合:
      1. [自分の組織] をクリックします。
      2. 組織の右側にある [設定] をクリックします。
    • Enterprise が所有するアプリの場合:
      1. Enterprise Managed Users を使用する場合は、[Enterprise] をクリックして Enterprise アカウントの設定に移動します。
      2. 個人用アカウントを使用する場合は、[Enterprise] をクリックしてから、Enterprise の右側にある [設定] をクリックします。
  3. GitHub App 設定にアクセスしてください。

    • 個人用アカウントまたは組織が所有するアプリの場合:
      1. 左側のサイドバーで、 [開発者向け設定] をクリックし、 [GitHub Apps] をクリックします。
    • Enterprise が所有するアプリの場合:
      1. 左側のサイドバーで、 [設定] から GitHub Apps をクリックします。
  4. 変更する GitHub App の横で [編集] を選択します。

  5. GitHub Apps 設定サイドバーで、 [オプション機能] を選択します。

  6. [ユーザーからサーバーへのトークンの期限切れ] の横にある [オプトイン] または [オプトアウト] をクリックします。この設定が適用されるまで、数秒かかることがあります。

    GitHub では、セキュリティを強化するためにこの機能をオプトインすることをお勧めします。

既にユーザー アクセス トークンを生成した後に、有効期限が切れるユーザー アクセス トークンをオプトインした場合、以前に生成されたユーザー アクセス トークンの期限は切れなくなります。 DELETE /applications/CLIENT_ID/token エンドポイントを使用して、これらのトークンを削除できます。 詳しくは、「OAuth 承認用 REST API エンドポイント」を参照してください。

更新トークンを使用してユーザー アクセス トークンを更新する

  1. 次のクエリ パラメーターを使用して、URL https://github.com/login/oauth/access_token に対して POST 要求を行います。

    Query parameter (クエリ パラメーター)Type説明
    client_idstring必須。 GitHub App のクライアント ID。 クライアント ID は、アプリ ID とは異なります。 クライアント ID は、アプリの設定ページで確認できます。
    client_secretstring必須 ユーザー アクセス トークンがデバイス フローを使用して生成された場合を除きます。 GitHub App のクライアントシークレット。
    grant_typestring必須。 値は "refresh_token" である必要があります。
    refresh_tokenstring必須。 ユーザー アクセス トークンを生成したときに受け取った更新トークン。
  2. GitHub から、次のパラメーターを含む応答が提供されます。

    応答パラメーターType説明
    access_tokenstringユーザー アクセス トークン。 トークンは ghu_ で始まります。
    expires_inintegeraccess_token の有効期限が切れるまでの秒数。 ユーザー アクセス トークンの有効期限を無効にした場合、このパラメーターは省略されます。 値は常に 28800 (8 時間) になります。
    refresh_tokenstring更新トークン。 ユーザー アクセス トークンの有効期限を無効にした場合、このパラメーターは省略されます。 トークンは ghr_ で始まります。
    refresh_token_expires_inintegerrefresh_token の有効期限が切れるまでの秒数。 ユーザー アクセス トークンの有効期限を無効にした場合、このパラメーターは省略されます。 値は常に 15897600 (6 か月) になります。
    scopestringトークンのスコープ。 この値は常に空の文字列になります。 従来の OAuth トークンとは異なり、ユーザー アクセス トークンは、アプリとユーザーの両方が持つアクセス許可に制限されます。
    token_typestringトークンの種類。 値は常に bearer になります。