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

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

    事前準備

    必要なロール:

    • oauth_admin DevOps チェンジベロシティ
    • GitHub のアドミンアカウント。
    注:
    GitHub Enterprise Server (オンプレミスインスタンス) の場合、MID サーバーを使用して接続している場合、OAuth はサポートされません。

    GitHub アカウント (JWT) での GitHub アプリの構成

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

    始める前に

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

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

    このタスクについて

    GitHub アカウントから、次の手順を完了します。「」を参照してください。 建物 GitHub アプリ カスタムアプリケーションの作成と構成の手順については、 GitHub 開発者サイトを参照してください。

    手順

    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 は<c3/>からの<c2/>ツール ID (sys_id) です。GitHubDevOps チェンジベロシティ
      注:
      ツールを新しく作成していて、ツール ID がない場合は、ツール ID なしで Webhook URL を入力し、後で構成できます。後で構成するには:
      1. 接続されたツールのツールレコードページに移動します。
      2. [ GitHub アプリの構成] を選択し、 [ 既存のトークンを使用して自動構成] を選択します。

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

      これにより、GitHub アプリの Webhook URL が自動的に構成されます。
      ツール ID は、次のいずれかの方法で取得できます。
      • DevOps チェンジベロシティ でツールに接続しているときに、ページ URL でツール ID を使用できます。例: https://<instance-name>.service-now.com/.../sn_devops_tool/<Tool ID>/...
      • Webhook URL は、DevOps チェンジベロシティGitHub ツールレコードページからコピーできます。 Configure (構成) > 手動で構成 > 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 アプリのインストール」を参照してください。

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

    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. [保存] を選択します。

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

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

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

    始める前に

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

    手順

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

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

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

    始める前に

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

    手順

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

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

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

    始める前に

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

    手順

    1. 移動先 すべて > システム OAuth > アプリケーションレジストリ.
    2. [新規] を選択します。
      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」と入力します。

      Enterprise バージョンの場合は、「 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. [ Key Management] > [モジュールアクセスポリシー] > [All] に移動します。
    10. [暗号化モジュール (Crypto module)] フィールドの値としてcom_snc_platform_security_oauth_glideencrypterポリシーを選択し、[ターゲットスクリプト (Target script)] フィールドの値として [スクリプトインクルード:OAuthDevOpsGitHubJWTHandler] を選択します。
    11. [ 結果 ] フィールドが [ 追跡] に設定されていることを確認し、変更を保存します。
      結果フィールドが追跡に設定されていることを示すフォーム。

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

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

    始める前に

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

    手順

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