API は複数の認証方式を提供していますが、本番アプリケーションには OAuth を使用することを強くお勧めします。 他の方式は、スクリプトまたはテスト(完全な OAuth では過剰になる� �合)に使用するために提供されています。 認証に GitHub Enterprise Server を利用するサードパーティのアプリケーションでは、GitHub Enterprise Server 認証情� �を要求または収集してはなりません。 代わりに、OAuth web フローを使用してく� さい。
Basic 認証
API は、RFC2617 で定義されている Basic 認証をサポートしていますが、若干の違いがあります。 主な違いは、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 アクセストークンのセキュリティ機能を利用したい� �合に役立ちます。
ユーザ名とパスワードを使用する
Basic 認証を 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 トークンをユーザ名とパスワードの代わりに を使用する必要があります。
新しい個人アクセストークンを生成するか、 OAuth Authorizations API で [新しい認証の作成][/rest/reference/oauth-authorizations#create-a-new-authorization] エンドポイントを使用して新しい OAuth トークンを生成することができます。 詳しい情� �については、「コマンドラインの個人アクセストークンを作成する」を参照してく� さい。 そうすれば、それらのトークンを使ってGitHub Enterprise Server APIからOAuthトークンで認証を受けます。ユーザ名とパスワードで認証を受ける必要があるのは、OAuthトークンを作成する際、あるいはOAuth Authorizations 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"}'