GitHub アプリの OAuth 2.0 認証情報 - JWT

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:12分
  • JWT ベアラートークンを使用して GitHub Apps を統合するには、次の手順を実行します。

    事前準備

    必要なロール:

    • oauth_admin DevOps 変更速度
    • GitHub のアドミンアカウント。
      注:
      OAuth 2.0 JWT 権限許可タイプは、GitHub および MID サーバーを使用する GitHub Enterprise でサポートされています。

    GitHub アカウントで GitHub アプリを構成する (JWT)

    GitHub アカウントからカスタム GitHub アプリを作成し、ServiceNow インスタンスで OAuth 2.0 認証を有効にします。

    始める前に

    GitHub 要件: GitHub アプリと統合するように構成された ServiceNow

    必要なロール:インスタンスロールは不要

    このタスクについて

    GitHub アカウントから、次の手順を完了します。「」を参照してください。 建物 GitHub アプリ カスタムアプリケーションを作成および構成する方法については、 GitHub Developer サイトのページを参照してください。

    手順

    1. GitHub アカウントから、次の場所に移動して GitHub アプリを作成します 開発者設定 > GitHub アプリ.
    2. [ホームページ URL (Homepage URL)] フィールドに「https://<instance-name>.service-now.com」と入力します。
    3. [ユーザー認証コールバック URL (User authorization callback URL)] フィールドに、「https://<instance-name>.service-now.com/oauth_redirect.do」と入力します。
    4. [ユーザーの識別と認証 (Identifying and authorizing users)] セクションで、[ユーザー認証トークンの有効期限 (Expire user authorization tokens)] フィールドの選択を解除します。
    5. [Webhook] セクションで、[アクティブ] フィールドを選択します。
    6. [Webhook URL] フィールドに「https://<instance-name>.service-now.com/api/sn_devops/v2/devops/tool/apps?toolId=<Tool ID>」と入力します。ここで、[ツール ID] はDevOps 変更速度からのGitHubツール ID (sys_id) です。
      注:
      ツールを新しく作成していてツール ID がない場合は、ツール ID なしで Webhook URL を入力して、後で構成できます。後で設定するには:
      1. 接続されたツールのツールレコードページに移動します。
      2. [GitHub アプリの構成] を選択し、 [既存のトークンを使用して自動構成する] を選択します。

        既存のトークンを使用して自動構成します。

      これにより、GitHub アプリの Webhook URL が自動的に構成されます。
      ツール ID は、次のいずれかの方法で取得できます。
      • DevOps 変更速度 でツールに接続している間、ツール ID はページの URL で確認できます。例: https://<instance-name>.service-now.com/.../sn_devops_tool/<Tool ID>/...
      • Webhook URL は、DevOps 変更速度GitHub ツールレコードページからコピーできます。 構成 > 手動で構成 > Webhook URL.
    7. 残りのフィールドは空のままにします (デフォルト)。
    8. [リポジトリの権限 (Repository permissions)] セクションで、次の設定を構成します。
      アクション 読み取り専用
      チェック 読み取り専用
      コンテンツ 読み取り専用
      展開 読み取りと書き込み
      環境 読み取り専用
      メタデータ 読み取り専用
      プル要求 読み取り専用
      シークレット 読み取り専用
      Webhook 読み取りと書き込み
      注:
      ServiceNowから Webhook を構成するには、読み取り権限と書き込み権限が必要です。
      注:
      すでに GitHub アプリを使用していて、いずれかの権限を更新する場合は、GitHub アプリのそれらの権限を確認して受け入れる必要があります。アプリに移動して、[構成] > [レビュー要求] > [新しい権限を承認 (Accept new permissions)] を選択できます。
    9. 残りの権限は [アクセス権なし] (デフォルト) のままにします 。
    10. [イベントのサブスクライブ (Subscribe to events)] セクションで、[展開保護ルール (Deployment protection rule)] オプションを選択します。
    11. 変更を保存します。
    12. GitHub アプリを作成したら、新しい秘密鍵を生成してマシンに保存します。
    13. 新しく作成した GitHub アプリを選択したアカウントにインストールします。
      1. GitHub アプリの設定ページからアプリを選択します。
      2. 左のサイドバーで、[アプリのインストール (Install App)] を選択します。
      3. 正しいリポジトリを含む組織または個人アカウントの横にある [インストール] を選択します。
      4. すべてのリポジトリまたは選択したリポジトリにアプリをインストールします。
        詳細については、「GitHub アプリのインストール」を参照してください。

    クライアント ID を DevOps プロパティに追加

    GitHub アプリを構成した後、クライアント ID プレフィックス (ID の最初の 3 文字以上) が DevOps プロパティ ( GitHub アプリのクライアント ID 指定子) に追加されていることを確認する必要があります。

    始める前に

    必要なロール:sn_devops.admin

    手順

    1. 移動先 ワークスペース > DevOps 変更ワークスペース > アドミニストレーション > システム構成 > プロパティ.
    2. アプリケーションスコープを DevOps データモデルに変更します。
    3. GitHub アプリのクライアント ID 指定子 [sn_devops.github_oauth_client_id_specifier] プロパティを検索します。
    4. GitHub アプリのクライアント ID プレフィックス (ID の最初の 3 文字以上) をプロパティに入力します。
    5. [Save (保存)] を選択します。

    の Java KeyStore 証明書の生成 GitHub

    JWT 認証用の Java KeyStore (JKS) 証明書を生成します。

    始める前に

    必要なロール:admin

    手順

    1. GitHub アプリの秘密鍵を使用して、CA 署名済み証明書を作成します。
      openssl req -new -x509 -key <file-name>.pem -out <certificate-name>.pem -days 1095
    2. 必要な詳細を入力します。
    3. GitHub アプリの秘密鍵と CA 署名済み証明書を使用して、PKCS 12 ファイルを作成します。
      openssl pkcs12 -export -in <certificate-name>.pem -inkey <file-name>.pem -certfile <certificate-name>.pem -out <PKCS-12-file-name>.p12 
    4. エクスポートパスワードを入力します。
    5. JKS ファイルを作成します。
      keytool -importkeystore -srckeystore <PKCS-12-file-name>.p12 -srcstoretype pkcs12 -destkeystore <JKS-certificate-filename>.jks -deststoretype JKS
    6. 宛先とソースのキーストアのパスワードを入力します。

    GitHub Java KeyStore 証明書をインスタンスに添付します

    有効な GitHub Java KeyStore (JKS) 証明書を ServiceNow インスタンスに添付して、JWT ベアラー権限許可トークン認証を有効にします。

    始める前に

    有効な Java KeyStore 証明書の可用性を確認します。

    必要なロール:admin

    手順

    1. 移動先 すべて > システム定義 > 証明書.
    2. [New (新規)] を選択します。
    3. フォームのフィールドに入力します。
      表 : 1. X.509 証明書フォームのフィールド
      フィールド 説明
      名前 レコードを一意に識別する名前。たとえば、 自分の GitHub アプリ証明書です。
      期限切れ時に通知 証明書の有効期限が切れたときに通知するユーザーを指定するオプション。
      有効期限切れ前に警告 証明書の有効期限が切れる前に通知を送信する日数。
      アクティブ 証明書を有効にするオプション。
      タイプ 証明書のタイプを選択するオプション。[Java キーストア] を選択します。
      数日中に期限切れ 証明書の有効期限が切れるまでの日数。
      キーストアパスワード 証明書に関連付けられたパスワード (ヒント:以前に作成した宛先キーストアのパスワード)。
      簡単な説明 証明書の概要です。
    4. 添付ファイルアイコン ( 添付ファイルアイコン) を選択し、JKS 証明書を添付します。
    5. [ストア/証明書を検証] を選択します。

    GitHub JKS 証明書の JWT 署名キーを作成する

    GitHub Java KeyStore 証明書にアサインする JSON Web トークン (JWT) 署名キーを作成します。

    始める前に

    必要なロール:admin、sn_devops.admin

    手順

    1. 移動先 すべて > システム OAuth > JWT キー.
    2. [New (新規)] を選択します。
    3. フォームのフィールドに入力します。
      表 : 2. JWT キーフォームのフィールド
      フィールド 説明
      名前 JWT 署名キーを一意に識別する名前です。例:My GitHub App JWT Key
      署名キーストア 前のタスクで添付された有効な JKS 証明書です。たとえば、 自分の GitHub アプリ証明書です。
      キー ID トークンの署名に複数のキーを使用する場合に使用されるキーを識別する一意の ID。
      署名アルゴリズム JWT キーで署名するアルゴリズム (ヒント:RSA 256)。
      署名キーパスワード 署名キーに関連付けられたパスワード (ヒント:以前に作成されたソースキーストアパスワード)。
      アクティブ キーを有効にするオプション。
    4. [Submit (送信)] を選択します。

    GitHub署名キーの JWT プロバイダーを作成する

    GitHubServiceNow インスタンスに JSON Web トークン (JWT) プロバイダーを追加します。

    始める前に

    必要なロール:admin、sn_devops.admin

    手順

    1. 移動先 すべて > システム OAuth > JWT プロバイダー.
    2. [New (新規)] を選択します。
    3. フォームのフィールドに入力します。
      表 : 3. JWT プロバイダーフォームのフィールド
      フィールド 説明
      名前 JWT プロバイダーを一意に識別する名前。例:My GitHub App JWT Provider
      有効期限の間隔 (秒) JWT プロバイダートークンの有効期間を設定する秒数 (ヒント:デフォルトのままにしておくことができます)。
      署名構成 以前に作成された有効な JWT 署名キー。例:My GitHub App JWT Key
    4. フォームヘッダーを右クリックし、[保存] を選択します。
    5. [標準要求] 関連リストに、GitHub アプリ ID (GitHubGitHub アプリ構成の [関連情報] セクションで利用可能) を iss 要求の値として入力します。
    6. audsub の値は空白のままにします (デフォルト)。

    GitHub を OAuth プロバイダー (JWT) として登録

    GitHub アプリアカウントの構成中に生成された情報を使用し、GitHub を OAuth プロバイダーとして登録して、インスタンスが OAuth 2.0 トークンを要求できるようにします。

    始める前に

    必要なロール:admin、sn_devops.admin

    手順

    1. 移動先 すべて > システム OAuth > アプリケーションレジストリー.
    2. [New (新規)] を選択します。
      OAuth アプリケーションの種類は?」というメッセージが表示されます。
    3. [サードパーティ OAuth プロバイダーに接続します] を選択します。
    4. フォームのフィールドに入力します。
      表 : 4. アプリケーションレジストリフォームのフィールド
      フィールド 説明
      名前 レコードを一意に識別する名前。たとえば、「 My GitHub App Provider」と入力します。
      クライアント ID GitHubアプリのクライアント ID (ヒント:GitHubGitHub アプリ構成の [関連情報] セクションで利用可能)。
      クライアントシークレット GitHubアプリのクライアントシークレット (ヒント:GitHubGitHub アプリ構成の [関連情報] セクションで利用可能)。
      OAuth API スクリプト 修正済み OAuthUtil スクリプトインクルードを参照できるようにするオプション。OAuthDevOpsGitHubJWTHandler を選択します。
      デフォルトの権限許可タイプ アプリケーションレジストリに関連付けられた権限許可のタイプ。[JWT ベアラー] を選択します。
      トークン URL トークンを取得および更新するためにインスタンスが使用するトークンエンドポイントの場所。

      クラウドバージョンの場合は、「 https://api.github.com/app/installations/<installation_id>/access_tokens」と入力します。

      エンタープライズバージョンの場合は、「 https://<HOST_URL>/api/v3/app/installations/<installation_id>/access_tokens」と入力します。

      インストール ID については、GitHub の GitHub アプリ構成の [アプリのインストール] セクションに移動し、歯車アイコンを選択してアプリを構成します。インストールIDはWebページのURLにあります。例:https://github.com/settings/installations/<installation_id>。

    5. フォームの残りのフィールドはデフォルトのままにします。
      アプリケーションレジストリフォーム
    6. フォームヘッダーを右クリックし、[保存] を選択します。
    7. [OAuth エンティティプロファイル] 関連リストで作成されたデフォルトプロファイルを開きます。
    8. 以前に作成した JWT プロバイダーを [JWT プロバイダー] フィールドに入力し、フォームを保存します。
    9. [キー管理] > [モジュール アクセス ポリシー] > [すべて] に移動します。
    10. [暗号化モジュール] フィールド値として [com_snc_platform_security_oauth_glideencrypter] を持つポリシー、[ターゲットスクリプト] フィールド値として [スクリプトインクルード:OAuthDevOpsGitHubJWTHandler] があるポリシーを選択します。
    11. [ Result ] フィールドが [ Track ] に設定されていることを確認し、変更を保存します。
      結果フィールドが追跡に設定されていることを示すフォーム。

    GitHubアプリプロバイダー (JWT) の認証情報レコードの作成

    アクションを許可するために、以前に作成した GitHub アプリプロバイダーに認証情報レコードを作成します。

    始める前に

    必要なロール:admin、sn_devops.admin

    手順

    1. 移動先 すべて > 接続 & 認証情報 > 認証情報.
    2. [New (新規)] を選択します。
      「作成する認証情報のタイプは?」というメッセージが表示されます。
    3. [OAuth 2.0 認証情報] を選択します。
    4. フォームで、フィールドに入力します。
      表 : 5. OAuth 2.0 認証情報フォームのフィールド
      フィールド 必要な値
      名前 レコードを一意に識別する名前。たとえば、「 My GitHub App Credential」と入力します。
      アクティブ レコードを有効にするオプション。
      OAuth エンティティプロファイル アプリケーションレジストリに作成されたデフォルトの OAuth エンティティプロファイル。
    5. レコードを保存します
    6. OAuth トークンを生成するには、[ OAuth トークンの取得 ] 関連リンクを選択します。