Skip to main content
Skip to content

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

定期的なトークン ローテーションを適用し、侵害されたトークンの影響を軽減するには、有効期限が切れたユーザー アクセス トークンを使用するように GitHub App を構成します。

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

メモ

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

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

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

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

有効期限付きトークンのサポートをテストして段階的にロールアウトするには、offline_access スコープを要求することで、個々のユーザー認可にオプトインできます。 offline_accessを要求すると、有効期限付きのユーザー アクセス トークンを使用しないようにアプリが構成されている場合でも、有効期限付きのユーザー アクセス トークンと更新トークンを受け取ります。

scope パラメーターは、GitHub App に権限を付与しません。 サポートされている値は offline_access のみであり、ユーザー アクセス トークンの有効期限が強制的に切れます。

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

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

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

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

    • 個人用アカウントが所有するアプリの場合は、[設定] をクリックします。
    • 組織が所有するアプリの場合:
      1. [自分の組織] をクリックします。
      2. 組織の右側にある [設定] をクリックします。
  3. 左側のサイドバーの [Developer settings] をクリックします。

  4. 左側のサイドバーで、 [GitHub Apps] をクリックします。

  5. 変更する GitHub App の横にある [ 編集] をクリックします。

  6. [ GitHub Apps 設定] サイドバーで、[ オプション機能] をクリックします。

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

GitHub では、この機能を選択してセキュリティを強化することをお勧めします。

既にユーザーをサインインさせ、アクセス トークンを取得した後で、有効期限付きのユーザー アクセス トークンを再度有効にした場合、それらの既存のユーザー アクセス トークンの有効期限は切れなくなります。 これらのトークンは、DELETE /applications/CLIENT_ID/token エンドポイントを使用して削除するか、有効期限付きトークンを取得するようにユーザーに再認証してもらう必要があります。 詳しくは、「OAuth 承認用 REST API エンドポイント」をご覧ください。

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

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

    Query parameter (クエリ パラメーター)タイプ説明
    client_idstring

必須。 GitHub Appのクライアント ID。 クライアント ID は、アプリ ID とは異なります。 クライアント ID は、アプリの設定ページで確認できます。 client_secret | string | 必須 ユーザー アクセス トークンがデバイス フローを使用して生成された場合を除きます。 GitHub App のクライアントシークレット。 grant_type | string | 必須。 値は "refresh_token" である必要があります。 refresh_token | string | 必須。 ユーザー アクセス トークンを生成したときに受け取った更新トークン。

  1. GitHub では、次のパラメーターを含む応答が返されます。

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