トークンが期限切れになるか取り消されると、Git 要求と API 要求の認証に使用できなくなります。 期限切れのトークンや取り消されたトークンを復元することはできません。ユーザーまたはアプリケーションが新しいトークンを作成する必要があります。
この記事では、GitHub トークンが取り消される、または期限切れになる可能性がある理由について説明します。
メモ
personal access tokenトークン、OAuth appトークン、またはGitHub Appトークンの有効期限が切れたり取り消されたりすると、セキュリティログにoauth_authorization.destroyアクションが表示されることがあります。 詳しくは、「セキュリティ ログをレビューする」をご覧ください。
有効期限に達した後に取り消されるトークン
personal access tokenを作成するときは、トークンの有効期限を設定することをお勧めします。 有効期限に達すると、トークンは自動的に取り消されます。 詳しくは、「個人用アクセス トークンを管理する」をご覧ください。
パブリック リポジトリまたはパブリック gist にプッシュされたときに取り消されるトークン
有効な OAuth トークン、GitHub App トークン、personal access tokenがパブリック リポジトリまたはパブリック gist にプッシュされると、そのトークンは自動的に取り消されます。
使用されないために期限切れになるトークン
OAuth トークンまたは personal access token が 1 年間使われなかった場合、そのトークンは GitHub によって自動的に取り消されます。
ユーザーによって取り消されるトークン
アカウント設定から GitHub Appまたは OAuth appの認可を取り消して、アプリに関連付けられているトークンを取り消すことができます。 詳細については、「GitHub アプリの承認の確認と取り消し」および「承認された OAuth アプリをレビューする」を参照してください。
認可が取り消されると、その認可に関連付けられているトークンも取り消されます。 アプリケーションを再認証するには、サードパーティのアプリケーションまたは Web サイトの指示に従って、GitHub のアカウントを再度接続します。
サード パーティによるトークンの取り消し
露出したトークンを使って認可されていないアクセスが行われるのを防ぐため、GitHub は、トークンを失効させて、GitHub への認証にトークンを使用できないようにすることをお勧めします。 資格情報失効 API では、次の種類のトークンの取り消しがサポートされています。
- Personal access tokens (classic) を
ghp_プレフィックス付きで使用する。 - Fine-grained personal access tokens を
github_pat_プレフィックスと共に使用する - OAuth app トークンに
gho_プレフィックスが付いたもの - GitHub App
ghu_プレフィックス付きのユーザーからサーバーへのトークン - {プレフィックス
ghr_を使用してGitHub Appのリフレッシュトークンを更新する}
GitHub または他の場所でこれらのトークンのいずれかがリークしている場合は、REST API を使用して失効要求を送信できます。 サポートされているトークンの種類の完全で権限のある一覧については、 無効化 を参照してください。
有効なトークンが GitHub の資格情報失効 API に送信されると、トークンは自動的に取り消されます。 この API は、サード パーティが自分で所有していないトークンを取り消すのに使用でき、このトークンに関連付けられているデータを不正アクセスから保護し、露出したトークンの影響を制限するのに役立ちます。
報告を奨励し、露出したトークンを迅速かつ簡単に取り消すことができるようにするため、API を使って送信された失効要求では認証は必要ありません。 そのため、GitHub は、報告されたトークンのソースに関する詳細情報を提供できません。
OAuth appによって取り消されるトークン
OAuth appの所有者は、アプリのアカウントの認可を取り消すことができます。これにより、認可に関連付けられているトークンも取り消されます。 OAuth appの認可を取り消す方法の詳細については、「OAuth 承認用 REST API エンドポイント」を参照してください。
OAuth app 所有者は、承認に関連付けられている個々のトークンを取り消すこともできます。 OAuth appの個別のトークンを取り消す方法の詳細については、「OAuth 承認用 REST API エンドポイント」を参照してください。
同じスコープを持つ OAuth appのトークン数が多すぎるために取り消されるトークン
ユーザー/アプリケーション/スコープの組み合わせごとに、1 時間あたり作成されるトークン数には 10 という上限があります。 アプリケーションで同じユーザーと同じスコープに対して 10 個を超えるトークンが作成された場合、同じユーザー/アプリケーション/スコープの組み合わせを持つ最も古いトークンが取り消されます。 ただし、時間単位のレート制限に達しても、最も古いトークンは取り消されません。 代わりに、ブラウザー内で再承認プロンプトがトリガーされ、ユーザーはアプリに付与しているアクセス許可を再確認するよう求められます。 このプロンプトは、アプリが 1 時間以内にユーザーに 10 個のトークンを要求する理由がほとんどないため、アプリが陥っている可能性のある無限ループを中断させることを目的としています。
GitHub Appの構成が原因で期限切れしたユーザー トークン
GitHub App によって作成されたユーザー アクセス トークンは、既定では 8 時間後に期限切れになり、含まれている更新トークンを使用して再生成する必要があります。 GitHub Apps の所有者は、必要に応じてこれらのトークンを期限切れにならないように構成できますが、セキュリティへの影響があるため、これは推奨されません。 GitHub App アプリのユーザー アクセス トークンの構成の詳細については、「GitHub アプリのオプション機能のアクティブ化」を参照してください。