GitHub アプリの OAuth 2.0 認証情報 - JWT
JWT ベアラートークンを使用して、GitHub アプリを統合するには、次の手順を実行します。
事前準備
必要なロール:
- DevOps 変更速度管理 の oauth_admin。
- GitHub のアドミンアカウント。注:OAuth 2.0 JWT 権限許可タイプは、GitHub および MID サーバーを使用する GitHub Enterprise でサポートされています。
GitHub アカウントで GitHub アプリを構成する (JWT)
GitHub アカウントからカスタム GitHub アプリを作成し、インスタンスの ServiceNow で OAuth 2.0 認証をアクティブ化にします。
始める前に
GitHub要件:ServiceNowとデータ連携するように構成されたGitHubアプリ
必要なロール:インスタンスロールは不要
このタスクについて
GitHub アカウントから、次の手順を完了します。「」を参照してください。 建物 GitHub アプリケーション カスタムアプリケーションの作成と構成の手順については、 GitHub 開発者サイトを参照してください。
手順
- GitHub アカウントから、次に移動して GitHub アプリを作成します 開発者設定 > GitHub アプリ.
- [ホームページ URL (Homepage URL)] フィールドに「https://<instance-name>.service-now.com」と入力します。
- [ユーザー認証コールバック URL (User authorization callback URL)] フィールドに、「https://<instance-name>.service-now.com/oauth_redirect.do」と入力します。
- [ユーザーの識別と認証 (Identifying and authorizing users)] セクションで、[ユーザー認証トークンの有効期限 (Expire user authorization tokens)] フィールドの選択を解除します。
- [Webhook] セクションで、[アクティブ] フィールドを選択します。
-
[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 を入力し、後で構成できます。後で構成するには:
- 接続されたツールのツールレコードページに移動します。
- [ GitHub アプリの構成] を選択し、 [ 既存のトークンを使用して自動構成] を選択します。
ツール ID は、次のいずれかの方法で取得できます。- DevOps 変更速度管理 でツールに接続しているときに、ページ URL でツール ID を使用できます。例:
https://<instance-name>.service-now.com/.../sn_devops_tool/<Tool ID>/...。 - Webhook URL は、DevOps 変更速度管理 の GitHub ツールレコードページからコピーできます。 構成 > 手動で構成 > Webhook URL.
- 残りのフィールドは空のままにします (デフォルト)。
-
[リポジトリの権限] セクションで、次の設定を構成します。
アクション 読み取り専用 チェック 読み取り専用 コンテンツ 読み取り専用 展開 読み取りと書き込み 環境 読み取り専用 メタデータ 読み取り専用 プル要求 読み取り専用 シークレット 読み取り専用 Webhook 読み取りと書き込み 注:ServiceNow から Webhook を構成するには、読み取りおよび書き込み権限が必要です。注:すでに GitHub アプリを使用していて、いずれかの権限を更新する場合は、GitHub アプリのそれらの権限を確認して受け入れる必要があります。アプリに移動して、[構成] > [レビュー要求] > [新しい権限を承認 (Accept new permissions)] を選択できます。 - 残りの権限は [アクセスなし] (デフォルト) のままにします 。
- [イベントのサブスクライブ (Subscribe to events)] セクションで、[展開保護ルール (Deployment protection rule)] オプションを選択します。
- 変更内容を保存します。
- GitHub アプリを作成後、新しい秘密鍵を生成してマシンに保存します。
-
新しく作成した GitHub アプリを選択したアカウントにインストールします。
- GitHub アプリの設定ページからアプリを選択します。
- 左のサイドバーで、[アプリのインストール] を選択します。
- 正しいリポジトリを含む組織または個人アカウントの横にある [インストール] を選択します。
-
すべてのリポジトリまたは選択したリポジトリにアプリをインストールします。
詳細については、「GitHub アプリのインストール」を参照してください。
GitHub の Java KeyStore 証明書の作成
JWT 認証用に JKS 証明書を生成します。
始める前に
必要なロール:admin
手順
-
GitHub アプリの秘密鍵を使用して、CA 署名済み証明書を作成します。
openssl req -new -x509 -key <file-name>.pem -out <certificate-name>.pem -days 1095 - 必要な詳細を入力します。
-
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 - エクスポートパスワードを入力します。
-
JKS ファイルを作成します。
keytool -importkeystore -srckeystore <PKCS-12-file-name>.p12 -srcstoretype pkcs12 -destkeystore <JKS-certificate-filename>.jks -deststoretype JKS - 宛先とソースのキーストアのパスワードを入力します。
GitHubJava KeyStore 証明書をインスタンスに添付
有効な GitHub Java KeyStore (JKS) 証明書を ServiceNow インスタンスに添付して、JWT ベアラー権限許可トークン認証をアクティブ化します。
始める前に
有効な Java KeyStore 証明書の可用性の確認
必要なロール:admin
手順
- 移動先 すべて > システム定義 > 証明書.
- [New (新規)] を選択します。
-
フォームのフィールドに入力します。
表 : 1. X.509 証明書フォームのフィールド フィールド 説明 名前 レコードを一意に識別する名前を入力します。例: My GitHub App Certificate. 期限切れ時に通知 証明書の有効期限が切れたときに通知するユーザーを指定するオプション。 有効期限切れ前に警告 証明書の有効期限が切れる前に通知を送信する日数。 アクティブ 証明書を有効にするオプション。 タイプ 証明書のタイプを選択するオプション。[Java キーストア] を選択します。 数日中に期限切れ 証明書の有効期限が切れるまでの日数。 キーストアパスワード 証明書に関連付けられたパスワード (ヒント:以前に作成した宛先キーストアのパスワード)。 簡単な説明 証明書の概要です。 -
添付ファイルアイコン (
) を選択し、JKS 証明書を添付します。
- [ストア/証明書を検証] を選択します。
GitHub JKS 証明書の JWT 署名キーを作成する
GitHub Java KeyStore 証明書にアサインする JSON Web トークン (JWT) 署名キーを作成します。
始める前に
必要なロール:アドミンまたは sn_devops.admin
手順
- 移動先 すべて > システム OAuth > JWT キー.
- [New (新規)] を選択します。
-
フォームのフィールドに入力します。
表 : 2. JWT キーフォームのフィールド フィールド 説明 名前 JWT 署名キーを一意に識別する名前です。例:My GitHub App JWT Key for AVR。 署名キーストア 前のタスクで添付された有効な JKS 証明書です。例: My GitHub App Certificate. キー Id ユニーク ID は、複数のキーを使ってトークンに署名する際に、どのキーを使用するかを識別します。 署名アルゴリズム JWT キーで署名するアルゴリズム (ヒント:RSA 256)。 署名キーパスワード 証明書に関連付けられたパスワード (ヒント:以前に作成した宛先キーストアのパスワード)。 アクティブ キーを有効にするオプション。 - [送信] を選択します。
GitHub 署名キーの JWT プロバイダーを作成する
GitHub の ServiceNow インスタンスに JSON Web トークン (JWT) プロバイダーを追加します。
始める前に
必要なロール:アドミンまたは sn_devops.admin
手順
- 移動先 すべて > システム OAuth > JWT プロバイダー.
- [New (新規)] を選択します。
-
フォームのフィールドに入力します。
表 : 3. JWT プロバイダーフォームのフィールド フィールド 説明 名前 JWT プロバイダーを一意に識別する名前。例:My GitHub App JWT Provider。 有効期限の間隔 (秒) JWT プロバイダートークンの有効期間を設定する秒数です。(ヒント:デフォルトのままにすることもできます。) 署名構成 以前に作成された有効な JWT 署名キー。例:My GitHub App JWT Key。 - フォームヘッダーを右クリックし、[保存] を選択します。
- [標準要求] 関連リストに、GitHub アプリのアプリ ID (GitHub の GitHub アプリ構成の [関連情報] セクションで利用可能) を iss 要求の値として入力します。
- aud と sub の値は空白のままにします (デフォルト)。
OAuth プロバイダー (JWT) として GitHub を登録
GitHub アプリアカウントの構成中に生成された情報を使用し、GitHub を OAuth プロバイダーとして登録して、インスタンスが OAuth 2.0 トークンを要求できるようにします。
始める前に
必要なロール:アドミンまたは sn_devops.admin
手順
- 移動先 すべて > システム OAuth > アプリケーションレジストリー.
-
[新規] を選択します。
「OAuth アプリケーションの種類」について尋ねるメッセージが表示されます。
- [サードパーティ OAuth プロバイダーに接続します] を選択します。
-
フォームのフィールドに入力します。
表 : 4. アプリケーションレジストリフォームのフィールド フィールド 説明 名前 レコードを一意に識別する名前を入力します。たとえば、My GitHub App Provider と入力します。 クライアント ID ご利用のGitHubアプリのクライアント ID(ヒント:GitHubのGitHubアプリの設定画面内の [関連情報] セクションで確認できます)。 クライアントシークレット ご利用のGitHubアプリのクライアントシークレット(ヒント:GitHubのGitHubアプリの設定画面内の [関連情報] セクションで確認できます)。 OAuth API スクリプト 修正済み OAuthUtil スクリプトインクルードを参照できるようにするオプション。OAuthDevOpsGitHubJWTHandler を選択します。 デフォルトの権限許可タイプ アプリケーションレジストリに関連付けられた権限許可のタイプ。[JWT ベアラー (JWT Bearer)] を選択します。 トークン 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>。
-
フォームの残りのフィールドはデフォルトのままにします。
- フォームヘッダーを右クリックし、[保存] を選択します。
- [OAuth エンティティプロファイル (OAuth Entity Profiles)] 関連リストで、デフォルトのプロファイルを開きます。
- 以前に作成した JWT プロバイダーを [JWT プロバイダー] フィールドに入力し、フォームを保存します。
- [キー管理] > [モジュールアクセスポリシー (Module Access Policies)] > [すべて] に移動します。
- [暗号化モジュール (Crypto module)] フィールドの値として、com_snc_platform_security_oauth_glideencrypter を持ち、スクリプトインクルード:OAuthDevOpsGitHubJWTHandler をターゲットスクリプトフィールド値に持つポリシーを選択します。
-
[結果 (Result)] フィールドが [追跡] に設定されていることを確認し、変更を保存します。
GitHubアプリプロバイダー (JWT) の認証情報レコードの作成
アクションを許可するために、以前に作成した GitHub アプリプロバイダーに認証情報レコードを作成します。
始める前に
必要なロール:アドミンまたは sn_devops.admin
手順
- 移動先 すべて > 接続 & 認証情報 > 認証情報.
-
[新規] を選択します。
「作成する認証情報のタイプは? (What type of Credentials would you like to create?)」というメッセージが表示されます。
- [OAuth 2.0 認証情報 (OAuth 2.0 Credentials)] を選択します。
-
フォームのフィールドに入力します。
表 : 5. OAuth 2.0 認証情報フォームフィールド フィールド 必要な値 名前 レコードを一意に識別する名前を入力します。例:「My GitLab アプリ資格情報」。 アクティブ レコードを有効にするオプション。 OAuth エンティティプロファイル アプリケーションレジストリに作成されたデフォルトの OAuth エンティティプロファイル。アプリケーションレジストリに作成されたデフォルトの OAuth エンティティプロファイル。 - レコードを保存します。
- OAuth トークンを生成するには、[OAuth トークンを取得 (Get OAuth Token)] 関連リンクを選択します。