Skip to main content

その他の認証方法

本番環境以外でのテストには、Basic 認証を使用できます。

この API には認証のための方法が複数用意されていますが、運用アプリケーションには OAuth を使用することを強くお勧めします。 他の方式は、スクリプトまたはテスト (完全な OAuth では過剰になる場合) に使うために提供されています。 認証に GitHub を使うサードパーティのアプリケーションでは、GitHub の認証情報を要求することも収集することもしてはなりません。 代わりに、OAuth Web フローを使う必要があります。

基本認証

API では、RFC2617 で定義されている基本認証がサポートされていますが、わずかな相違点があります。 主な相違点は、RFC では、認証されていないリクエストに 401 Unauthorized レスポンスで応える必要があるという点です。 これにより、多くの場所でユーザー データの存在が明らかになります。 その代わりに、GitHub API は、404 Not Found で応答します。 これにより、401 Unauthorized を応答を想定する HTTP ライブラリに問題が発生する可能性があります。 解決策は、Authorization ヘッダーを手動で作成することです。

personal access tokenの使用

fine-grained personal access tokenを使って GitHub API に対する認証を行うことをお勧めします。

$ curl -u USERNAME:TOKEN https://api.github.com/user

この方法は、ツールは基本認証のみをサポートしているが、personal access tokenのセキュリティ機能を利用したい場合に役立ちます。

ユーザ名とパスワードを使用する

注: GitHub は、2020 年 11 月 13 日以降、GitHub.com アカウントの API へのパスワード認証を廃止しました。これには、GitHub Free、GitHub Pro、GitHub Team、または GitHub Enterprise Cloud プランに対するものが含まれます。 GitHub API に対する認証は、トークンで行う必要があることに応じて、OAuth アクセス トークン、GitHub App インストール アクセス トークン、personal access tokenなどの API トークンを使って行う必要があります。 詳細については、トラブルシューティングに関するページを参照してください。

SAML SSO を認証する

注: 他のユーザーに代わってトークンを生成するインテグレーションおよび OAuth アプリケーションは、自動的に承認されます。

注: ほとんどの場合は、Authorization: Bearer または Authorization: token を使用してトークンを渡すことができます。 ただし、JSON Web トークン (JWT) を渡す場合は、Authorization: Bearer を使用する必要があります。

API を使って、認証に SAML SSO を適用する組織にアクセスする場合は、personal access tokenを作成し、その組織のトークンを承認する必要があります。 X-GitHub-SSO で指定された URL にアクセスして、組織のトークンを承認します。

生成された URL は 1 時間有効になってから、期限が切れます。 1 時間後に、別の URL を生成する必要があります。

$ curl -v -H "Authorization: Bearer TOKEN" https://api.github.com/repos/octodocs-test/test

> X-GitHub-SSO: required; url=https://github.com/orgs/octodocs-test/sso?authorization_request=AZSCKtL4U8yX1H3sCQIVnVgmjmon5fWxks5YrqhJgah0b2tlbl9pZM4EuMz4
{
  "message": "Resource protected by organization SAML enforcement. You must grant your personal token access to this organization.",
  "documentation_url": "https://docs.github.com"
}

複数の組織からのデータを要求する場合 (たとえば、ユーザーが作成した issue のリストの要求)、X-GitHub-SSO ヘッダーはpersonal access tokenの承認を必要とする組織を示します。

$ curl -v -H "Authorization: Bearer TOKEN" https://api.github.com/user/issues

> X-GitHub-SSO: partial-results; organizations=21955855,20582480

organizations は、personal access tokenの承認が必要な組織を表す組織 ID のコンマ区切りのリストです。

2 要素認証を使用する

2 要素認証を有効にしている場合、REST API での "ほとんどの" エンドポイントに対する基本認証では、personal access tokenを使う必要があります。__

GitHub 開発者設定を使って、新しいpersonal access tokenを生成できます。 詳しくは、コマンド ライン用のpersonal access tokenの作成に関する記事をご覧ください。 そうすれば、それらのトークンを使用して、OAuth トークンを使用した認証を GitHub API で行うことができます。