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 ヘッダーを手動で作成することです。

OAuth と個人アクセストークンを使用する

GitHub API への認証には OAuth トークンを使用することをお勧めします。 OAuth トークンには 個人用アクセス トークンが含まれていて、ユーザーはいつでもアクセスを取り消すことができます。

$ curl -u username:token https://api.github.com/user

このアプローチは、ツールが Basic 認証のみをサポートしているが、OAuth アクセストークンのセキュリティ機能を利用したい場合に役立ちます。

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

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

SAML SSO を認証する

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

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

API を使用して、認証に SAML SSO を適用する組織にアクセスする場合は、個人用アクセス トークン (PAT) を作成し、その組織のトークンを承認する必要があります。 X-GitHub-SSO で指定された 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"
}

複数の組織からのデータを要求する場合 (たとえば、ユーザーが作成した問題のリストを要求する)、X-GitHub-SSO ヘッダーは個人用アクセス トークンの承認を要求する組織を示します。

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

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

organizations は、個人用アクセス トークンの承認が必要な組織を表す組織 ID のコンマ区切りのリストです。

2 要素認証を使用する

2 要素認証を有効にしている場合、REST API の ほとんど のエンドポイントの Basic 認証 では、ユーザー名とパスワードではなく個人用アクセス トークン 。

GitHub 開発者設定