Skip to main content

このバージョンの GitHub Enterprise サーバーはこの日付をもって終了となります: 2024-06-29. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの向上、新機能の向上を図るために、最新バージョンの GitHub Enterprise サーバーにアップグレードしてください。 アップグレードに関するヘルプについては、GitHub Enterprise サポートにお問い合わせください

GitHub Appとしての認証

インストール アクセス トークンを生成したり、アプリを管理したりするために、GitHub App として認証できます。

GitHub App としての認証について

アプリケーションとして REST API 要求を行うには、GitHub App として認証を行う必要があります。 たとえば、API を使って、組織のリソースにアクセスするためのインストール アクセス トークンを生成したり、アプリの組織全体のインストールを一覧表示したり、アプリのインストールを中断したりする場合は、アプリとして認証を行う必要があります。

ユーザーがアプリとして認証を行う必要がある REST API エンドポイントの場合、そのエンドポイントのドキュメントで、JWT を使ってエンドポイントにアクセスする必要があることが示されています。 GraphQL API では、ユーザーがアプリとして認証を行う必要があるクエリや変更はサポートされていません。

JSON Web Token (JWT) を使用して GitHub App としての認証を行う

  1. アプリの JSON Web Token (JWT) を生成します。 詳しくは、「GitHub アプリの JSON Web トークン (JWT) の生成」を参照してください。

  2. 要求の Authorization ヘッダーに JWT を含めます。 次の例では、YOUR_JWT を自分の JWT に置き換えてください。

    curl --request GET \
    --url "/app/installations" \
    --header "Accept: application/vnd.github+json" \
    --header "Authorization: Bearer YOUR_JWT" \
    --header "X-GitHub-Api-Version: 2022-11-28"
    

Octokit.js SDK を使用して GitHub App としての認証を行う

GitHub の Octokit.js SDK を使って、GitHub App としての認証を行うことができます。 SDK を使って認証を行う利点の 1 つは、JSON Web Token (JWT) を自分で生成する必要がないことです。 さらに、JWT の期限が切れると、SDK によって再生成されます。

: Octokit.js ライブラリを使うには、octokit をインストールしてインポートする必要があります。 次の例では、ES6 に従って import ステートメントを使っています。 インストールとインポートのさまざまな方法について詳しくは、octokit/octokit リポジトリの「使用法」セクションをご覧ください。

  1. アプリの ID を取得します。 アプリ ID は、お使いの GitHub App の [設定] ページで確認できます。 GitHub App の設定ページに移動する方法の詳細については、「AUTOTITLE」を参照してください。

  2. 秘密キーを作成します。 詳しくは、「GitHub Apps の秘密キーの管理」を参照してください。

  3. octokit から App をインポートします。

    JavaScript
    import { App } from "octokit";
    
  4. App の新しいインスタンスを作成します。 次の例では、APP_ID をアプリの ID への参照に置き換えます。 PRIVATE_KEY をアプリの秘密キーの値への参照に置き換えます。

    JavaScript
     const app = new App({
      appId: APP_ID,
      privateKey: PRIVATE_KEY,
    });
    
  5. JWT が必要な REST API エンドポイントに対して要求を行うには、octokit メソッドを使います。 次に例を示します。

    JavaScript
    await app.octokit.request("/app")