{"meta":{"title":"REST API に対する認証","intro":"REST API に対して認証を行って、より多くのエンドポイントにアクセスし、レート制限を高めることができます。","product":"REST API","breadcrumbs":[{"href":"/ja/enterprise-server@3.21/rest","title":"REST API"},{"href":"/ja/enterprise-server@3.21/rest/authentication","title":"認証"},{"href":"/ja/enterprise-server@3.21/rest/authentication/authenticating-to-the-rest-api","title":"認証"}],"documentType":"article"},"body":"# REST API に対する認証\n\nREST API に対して認証を行って、より多くのエンドポイントにアクセスし、レート制限を高めることができます。\n\n## 認証について\n\n多くの REST API エンドポイント操作では、認証が必要であるか、認証されている場合は追加情報が返されます。 さらに、認証されている場合は 1 時間あたりの要求を増やすことができます。\n\n要求を認証するには、必要なスコープまたはアクセス許可を持つ認証トークンを提供する必要があります。 トークンを取得するには、いくつかの方法があります。personal access tokenを作成したり、GitHub Appでトークンを生成したり、`GITHUB_TOKEN`ワークフローで組み込みのGitHub Actionsを使用したりできます。\n\nトークンを作成すると、要求の `Authorization` ヘッダーでトークンを送信することで要求を認証できます。 たとえば、次の要求では、`YOUR-TOKEN` をトークンへの参照に置き換えます。\n\n```shell\ncurl --request GET \\\n--url \"http(s)://HOSTNAME/api/v3/octocat\" \\\n--header \"Authorization: Bearer YOUR-TOKEN\" \\\n--header \"X-GitHub-Api-Version: 2026-03-10\"\n```\n\n> \\[!NOTE]\n> ほとんどの場合は、`Authorization: Bearer` または `Authorization: token` を使用してトークンを渡すことができます。 ただし、JSON Web トークン (JWT) を渡す場合は、`Authorization: Bearer` を使用する必要があります。\n\n### ログイン失敗の制限\n\nトークンなしで、またはアクセス許可が不十分なトークンで REST API エンドポイントを使用しようとすると、`404 Not Found` または `403 Forbidden` 応答を受け取ります。 無効な資格情報で認証すると、`401 Unauthorized` 応答が返されます。\n\n無効な資格情報を含むリクエストを短期間に複数回検出すると、API は、`403 Forbidden` 応答で、そのユーザに対するすべての認証試行 (有効な資格情報による試行を含む) を一時的に拒否します。 詳しくは、「[REST API のレート制限](/ja/enterprise-server@3.21/rest/using-the-rest-api/rate-limits-for-the-rest-api)」をご覧ください。\n\n## personal access tokenを使用した認証の実行\n\n個人用に GitHub REST API を使用する場合は、 personal access tokenを作成できます。 可能であれば、GitHubはfine-grained personal access tokenではなくpersonal access token (classic)を使用することをお勧めします。\npersonal access tokenの作成の詳細については、「[個人用アクセス トークンを管理する](/ja/enterprise-server@3.21/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)」を参照してください。\n\nfine-grained personal access tokenを使用している場合、各 REST API エンドポイントにアクセスするには、fine-grained personal access tokenに特定のアクセス許可が必要です。 各エンドポイントの REST API リファレンス ドキュメントでは、エンドポイントが fine-grained personal access tokenで動作するかどうかを示し、トークンがエンドポイントを使用するために必要なアクセス許可を示します。 一部のエンドポイントでは複数のアクセス許可が必要な場合があり、一部のエンドポイントでは複数のアクセス許可のうちの 1 つが必要な場合があります。 各アクセス許可で fine-grained personal access token がアクセスできる REST API エンドポイントの概要については、 [詳細に制御された個人用アクセス トークンに必要なアクセス許可](/ja/enterprise-server@3.21/rest/authentication/permissions-required-for-fine-grained-personal-access-tokens) を参照してください。\n\npersonal access token (classic)を使用している場合は、各 REST API エンドポイントにアクセスするために特定のスコープが必要です。 選択するスコープに関する全般的なガイダンスについては、「[OAuth アプリのスコープ](/ja/enterprise-server@3.21/apps/oauth-apps/building-oauth-apps/scopes-for-oauth-apps#available-scopes)」を参照してください。\n\nPersonal access tokens は、REST API に要求を行うときに ID として機能します (選択したスコープまたはアクセス許可によって制限されます)。 そのため、 personal access tokens をセキュリティで保護することが重要です。\npersonal access tokensのセキュリティ保護の詳細については、「[API 資格情報をセキュリティで保護する](/ja/enterprise-server@3.21/rest/authentication/keeping-your-api-credentials-secure?apiVersion=2022-11-28)」を参照してください。\n\n### Personal access tokens と SAML SSO\n\n## アプリによって生成されたトークンを使用した認証\n\n組織または別のユーザーの代わりに API を使用する場合は、GitHubGitHub Appを使用することをお勧めします。 詳しくは、「[GitHub アプリでの認証について](/ja/enterprise-server@3.21/apps/creating-github-apps/authenticating-with-a-github-app/about-authentication-with-a-github-app)」をご覧ください。\n\n各エンドポイントの REST API リファレンス ドキュメントでは、エンドポイントが GitHub Apps で動作するかどうかを示し、アプリがエンドポイントを使用するために必要なアクセス許可を示しています。 一部のエンドポイントでは複数のアクセス許可が必要な場合があり、一部のエンドポイントでは複数のアクセス許可のうちの 1 つが必要な場合があります。 各アクセス許可で GitHub App がアクセスできる REST API エンドポイントの概要については、 [GitHub Apps に必要なアクセス許可](/ja/enterprise-server@3.21/rest/authentication/permissions-required-for-github-apps) を参照してください。\n\nREST API にアクセスするための OAuth app を使用して OAuth トークンを作成することもできます。 ただし、 GitHub では、代わりに GitHub App を使用することをお勧めします。\nGitHub Apps を使用すると、アプリが持つアクセスとアクセス許可をより詳細に制御できます。\n\n### 基本認証を使用する\n\nGitHub AppsおよびOAuth appsの一部の REST API エンドポイントでは、基本認証を使用してエンドポイントにアクセスする必要があります。 ユーザー名としてアプリのクライアント ID を使用し、パスワードとしてアプリのクライアント シークレットを使用します。\n\n次に例を示します。\n\n```shell\ncurl --request POST \\\n--url \"http(s)://HOSTNAME/api/v3/applications/YOUR_CLIENT_ID/token\" \\\n--user \"YOUR_CLIENT_ID:YOUR_CLIENT_SECRET\" \\\n--header \"Accept: application/vnd.github+json\" \\\n--header \"X-GitHub-Api-Version: 2026-03-10\" \\\n--data '{\n  \"access_token\": \"ACCESS_TOKEN_TO_CHECK\"\n}'\n```\n\nクライアント ID とクライアント シークレットは、アプリの所有者またはアプリを承認したユーザーではなく、アプリに関連付けられます。 アクセス トークンの作成など、アプリに代わって操作を実行するために使用されます。\n\nGitHub AppまたはOAuth appの所有者である場合、またはGitHub Appのアプリ マネージャーである場合は、アプリの設定ページでクライアント ID を見つけてクライアント シークレットを生成できます。 アプリの設定ページに移動するには:\n\n1. GitHubのページの右上隅にあるプロフィール画像をクリックします。\n2. アカウント設定にアクセスしてください。\n   * 個人用アカウントが所有するアプリの場合は、**\\[設定]** をクリックします。\n   * 組織が所有するアプリの場合:\n     1\\.\n     **\\[自分の組織]** をクリックします。\n     1. 組織の右側にある **\\[設定]** をクリックします。\n3. 左側のサイドバーの **<svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-code\" aria-label=\"code\" role=\"img\"><path d=\"m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z\"></path></svg> \\[Developer settings]** をクリックします。\n4. 左側のサイドバーで、\\[ **GitHub Apps** ] または \\[ **OAuth apps**] をクリックします。\n5. GitHub Appsの場合は、アクセスするGitHub Appの右側にある \\[**編集**] をクリックします。\n   OAuth appsの場合は、アクセスするアプリをクリックします。\n6. **\\[クライアント ID]** の横に、アプリのクライアント ID が表示されます。\n7. **\\[クライアント シークレット]** の横にある **\\[新しいクライアント シークレットの生成]** をクリックして、アプリのクライアント シークレットを生成します。\n\n## GitHub Actions ワークフローでの認証\n\nGitHub Actions ワークフローで API を使用する場合GitHubは、トークンを作成するのではなく、組み込みの`GITHUB_TOKEN`で認証することをお勧めします。\n`GITHUB_TOKEN` キーを使用して、`permissions` へのアクセス許可を付与できます。 詳しくは、「[ワークフローでの認証に GITHUB\\_TOKEN を使用する](/ja/enterprise-server@3.21/actions/tutorials/authenticate-with-github_token#modifying-the-permissions-for-the-github_token)」をご覧ください。\n\nこれが不可能な場合は、トークンをシークレットとして格納し、 GitHub Actions ワークフローでシークレットの名前を使用できます。 シークレットの詳細については、「[GitHub Actions でのシークレットの使用](/ja/enterprise-server@3.21/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets)」を参照してください。\n\n### GitHub Actions を使用した GitHub CLI ワークフローでの認証\n\nGitHub Actionsを使用して、GitHub CLI ワークフロー内の API に対して認証済み要求を行うには、`GITHUB_TOKEN`の値を環境変数として格納し、`run` キーワードを使用して GitHub CLI`api` サブコマンドを実行します。\n`run` キーワードについて詳しくは、「[GitHub Actions　のワークフロー構文](/ja/enterprise-server@3.21/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstepsrun)」をご覧ください。\n\n次のワークフロー例では、`PATH` をエンドポイントのパスに置き換えます。 パスの詳細については、 [REST API を使用した作業の開始](/ja/enterprise-server@3.21/rest/using-the-rest-api/getting-started-with-the-rest-api?tool=cli#path) を参照してください。\n`HOSTNAME`をお使いの GitHub Enterprise Server インスタンスの名前に置き換えます。\n\n```yaml\njobs:\n  use_api:\n    runs-on: ubuntu-latest\n    permissions: {}\n    steps:\n      - env:\n          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        run: |\n          gh api /PATH\n```\n\n### GitHub Actions を使用した `curl` ワークフローでの認証\n\nGitHub Actionsを使用して、`curl` ワークフロー内の API に対して認証された要求を行うには、`GITHUB_TOKEN`の値を環境変数として格納し、`run` キーワードを使用して API に`curl`要求を実行します。\n`run` キーワードについて詳しくは、「[GitHub Actions　のワークフロー構文](/ja/enterprise-server@3.21/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstepsrun)」をご覧ください。\n\n次のワークフロー例では、`PATH` をエンドポイントのパスに置き換えます。 パスの詳細については、 [REST API を使用した作業の開始](/ja/enterprise-server@3.21/rest/using-the-rest-api/getting-started-with-the-rest-api?tool=cli#path) を参照してください。\n`HOSTNAME`をお使いの GitHub Enterprise Server インスタンスの名前に置き換えます。\n\n```yaml copy\njobs:\n  use_api:\n    runs-on: ubuntu-latest\n    permissions: {}\n    steps:\n      - env:\n          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        run: |\n          curl --request GET \\\n          --url \"http(s)://HOSTNAME/api/v3/PATH\" \\\n          --header \"Authorization: Bearer $GH_TOKEN\"\n```\n\n### JavaScript を使用した GitHub Actions ワークフローでの認証\n\nJavaScript を使用して GitHub Actions ワークフローで認証する方法の例については、 [REST API と JavaScript を使用したスクリプト](/ja/enterprise-server@3.21/rest/guides/scripting-with-the-rest-api-and-javascript#authenticating-in-github-actions) を参照してください。\n\n## ユーザー名とパスワードによる認証\n\nGitHub では、パスワードではなく、トークンを使用して REST API に対する認証を行うことをお勧めします。 トークンで行うことができる内容をより詳細に制御でき、いつでもトークンを取り消すことができます。 しかし、基本認証にユーザー名とパスワードを使用して REST API に対して認証することもできます。 これを行うには、`--user` オプションを使用してユーザー名とパスワードを渡します。\n\n```shell\ncurl --request GET \\\n--url \"http(s)://HOSTNAME/api/v3/user\" \\\n--user USERNAME:PASSWORD \\\n--header \"X-GitHub-Api-Version: 2026-03-10\"\n```\n\n## 参考資料\n\n* [API 資格情報をセキュリティで保護する](/ja/enterprise-server@3.21/rest/authentication/keeping-your-api-credentials-secure)\n* [REST API を使用した作業の開始](/ja/enterprise-server@3.21/rest/using-the-rest-api/getting-started-with-the-rest-api#authentication)"}