Skip to main content

その他の認証方法

この記事では、次の項目が扱われます。

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

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

基本認証

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

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

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

$ curl -u username:token http(s)://[hostname]/api/v3/user

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

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

GitHub Enterprise Server API で基本認証を使用するには、アカウントに関連付けられているユーザー名とパスワードを送信するだけです。

たとえば、cURL を介して API にアクセスする場合、<username> を実際の GitHub Enterprise Server ユーザー名に置き換えて次のコマンドを実行すると、認証が行われます。 (cURL からパスワードの入力を求められます。)

$ curl -u username http(s)://[hostname]/api/v3/user

ご自分が 2 要素認証を有効にしている場合は、2 要素認証の使用方法を理解していることを確認してください。

2 要素認証を使用する

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

GitHub Enterprise Server 開発者設定 を使用して新しい個人用トークン 。 詳細については、コマンド ライン用の個人用アクセス トークンの使用に関するページを参照してください。 そうすれば、それらのトークンを使用して、OAuth トークンを使用した認証を GitHub Enterprise Server API で行うことができます。ユーザー名とパスワードで認証する必要があるのは、OAuth トークンを作成するときまたは OAuth 認証 API を使用するときのみです。

2 要素認証で OAuth Authorizations API を使用する

OAuth Authorizations API を呼び出す場合、Basic 認証では、トークンの代わりにワンタイムパスワード(OTP)とユーザ名とパスワードを使用する必要があります。 OAuth Authorizations API で認証しようとすると、サーバーは 401 Unauthorized とこれらのヘッダーの 1 つで応答し、2 要素認証コードが必要であることを通知します。

X-GitHub-OTP: required; SMS または X-GitHub-OTP: required; app

このヘッダは、アカウントの 2 要素認証コードの受け取り方法を示します。 アカウントの設定方法に応じて、SMS 経由で OTP コードを受け取るか、Google 認証システムや 1Password などのアプリケーションを使用します。 詳細については、「2 要素認証の構成」を参照してください。 ヘッダーで次のように OTP を渡します。

$ curl --request POST \
  --url https://api.github.com/authorizations \
  --header 'authorization: Basic PASSWORD' \
  --header 'content-type: application/json' \
  --header 'x-github-otp: OTP' \
  --data '{"scopes": ["public_repo"], "note": "test"}'