認証について
多くの REST API エンドポイント操作では、認証が必要であるか、認証されている場合は追加情報が返されます。 さらに、認証されている場合は 1 時間あたりの要求を増やすことができます。
要求の Authorization
ヘッダーでトークンを送信することで、要求を認証できます。 次の例では、YOUR-TOKEN
をトークンへの参照に置き換えます。
curl --request GET \
--url "https://api.github.com/octocat" \
--header "Authorization: Bearer YOUR-TOKEN" \
--header "X-GitHub-Api-Version: 2022-11-28"
注: ほとんどの場合は、Authorization: Bearer
または Authorization: token
を使用してトークンを渡すことができます。 ただし、JSON Web トークン (JWT) を渡す場合は、Authorization: Bearer
を使用する必要があります。
トークンなしで、またはアクセス許可が不十分なトークンで REST API エンドポイントを使用しようとすると、404 Not Found
または 403 Forbidden
応答を受け取ります。
personal access token で認証を行う
個人用に GitHub REST API を使用する場合は、personal access token を作成できます。可能であれば、GitHub では、personal access token (classic) の代わりに fine-grained personal access token を使用することをお勧めします。personal access token の作成について詳しくは、「個人用アクセス トークンの作成」を参照してください。
認証に SAML シングル サインオン (SSO) を適用する Organization にアクセスするために personal access token (classic) を使用する場合は、作成後にトークンを承認する必要があります。Fine-grained personal access token は、Organization へのアクセスが許可される前に、トークンの作成時に承認されます。詳しくは、「SAMLシングルサインオンで利用するために個人アクセストークンを認可する」を参照してください。
SAML SSO を適用する Organization にアクセスするために personal access token (classic) の使用を試みる前に承認しないと、404 Not Found
または 403 Forbidden
エラーが発生する可能性があります。 403 Forbidden
エラーが発生した場合は、X-GitHub-SSO
ヘッダーの URL に従ってトークンを承認できます。 URL は 1 時間後に期限切れになります。 複数の Organization から取得される可能性があるデータを要求した場合、API では SAML SSO を必要とする Organization からの結果が返されません。 X-GitHub-SSO
ヘッダーは、personal access token (classic) の SAML SSO 承認を必要とする Organization の ID を示します。 (例: X-GitHub-SSO: partial-results; organizations=21955855,20582480
)。
アプリによって生成されたトークンを使用した認証
Organization で、または他のユーザーの代わりに API を使用する場合、GitHub では、GitHub App の使用が推奨されます。 詳しくは、「GitHub アプリでの認証について」を参照してください。
また、OAuth App を使用して OAuth トークンを作成し、REST API にアクセスすることもできます。 しかし、GitHub では、代わりに GitHub App を使用することが推奨されます。 GitHub App を使用すると、アプリのアクセスとアクセス許可をより詳細に制御できます。
アプリによって作成されたアクセス トークンは、SAML SSO に対して自動的に承認されます。
基本認証を使用する
GitHub App と OAuth App の一部の REST API エンドポイントでは、基本認証を使用してエンドポイントにアクセスする必要があります。 ユーザー名としてアプリのクライアント ID を使用し、パスワードとしてアプリのクライアント シークレットを使用します。
次に例を示します。
curl --request POST \
--url "https://api.github.com/authorizations" \
--user ":" \
--header "X-GitHub-Api-Version: 2022-11-28"
クライアント ID を見つけて、アプリの設定ページでクライアント シークレットを生成できます。 ユーザー所有の GitHub App の場合、設定ページは https://github.com/settings/apps/APP-SLUG
です。 Organization 所有の GitHub App の場合、設定ページは https://github.com/organizations/ORGANIZATION/settings/apps/APP-SLUG
です。 APP-SLUG
をアプリのスラッグ化された名前に置き換え、ORGANIZATION
を組織のスラッグ化された名前に置き換えます。 たとえば、「 https://github.com/organizations/octo-org/settings/apps/octo-app
」のように入力します。
GitHub Actions ワークフローにおける認証
GitHub Actions ワークフローで API を使用する場合、GitHub では、トークンを作成するのではなく、組み込み GITHUB_TOKEN
で認証することが推奨されます。 permissions
キーを使用して、GITHUB_TOKEN
へのアクセス許可を付与できます。 詳しくは、「自動トークン認証」を参照してください。
ユーザー名とパスワードによる認証
ユーザー名とパスワードによる認証はサポートされていません。 ユーザー名とパスワードを使用して認証しようとすると、4xx エラーが表示されます。