Edge Encryption プロキシ URL ログインを含むマルチプロバイダーシングルサインオンを実装する方法Issue この記事では、一部のユーザーにEdge Encryption プロキシ URLを介してインスタンスにログインさせ、他のユーザーに通常のインスタンスホスト名のURLを介してログインさせる方法について説明します。Edge Encryption と Multiple Provider Single Sign-On プラグインが実装されていることを前提としています。 手順 Multi-Provider SSO > ID プロバイダー に移動し、2 つの IdP レコードを作成します。 両方の IdP レコードの ID プロバイダー URL 設定は同じである必要がありますが、デフォルトでは、一意の制約によりこの値の重複は防止されます。複数のIdP レコードでID プロバイダー URLの重複を許可するには: admin ロールを持つユーザーとしてインスタンスにログインします。 sys_dictionary_list.do に移動します。 次のフィルターを作成し、[実行] をクリックします: [テーブル] [は、次の値に等しい] [saml2_update1_properties]および[列名] [は、次の値に等しい] [idp] [一意] 列をリストビューに追加し、値を true から false に変更して保存します。 2 つの ID プロバイダーを作成します。 Edge Proxy ログインには、次の値を使用します: ID プロバイダー URL:<IdP メタデータからインポートされたURL>ServiceNow ホームページ: https://<edge hostname>:<port>/navpage.doエンティティ ID / 発行者:https://<edge hostname>:<port>対象者 URI:https://<edge hostname>:<port> 通常のインスタンスホスト名の場合: ID プロバイダー URL:https://<instance>.service-now.com/navpage.do ServiceNow ホームページ: https://<instance>.service-now.com/navpage.do エンティティ ID/発行者:https://<instance>.service-now.com 対象者 URI:https://<instance>.service-now.com 両方の IdP レコードの他のプロパティは、IdP メタデータからインポートされます。 これには、IdPの2つの個別の証明書利用者信頼とインスタンスの 2つの個別の IdP レコード (ステップ 1 で説明) が必要です。またEdge Encryptionルートまたは非- Edge Encryption ルートを使用してログインすることを選択するためにユーザーに表示されるログイン ページも必要です。これは IdP プロバイダー側で設定されます。 2つのログイン URL を指定します。1つは Edge プロキシ用で、もう1つは Edge プロキシを使用していません。 Edge プロキシ経由でログイン: https://<edge hostname>:<port>/login_with_sso.do?glide_sso_id=インスタンス名] でログイン: https://<instance name>.service-now.com/login_with_sso.do?glide_sso_id= ログインするユーザーは、Edge プロキシを使用するかどうかにかかわらず、適切なURLを使用してログインする必要があります。 MultiSSO インストレーションイグジットを変更します。 2 つの異なる IdP レコード で同じ ID プロバイダー URL 値を使用しているため (通常の構成ではありません)、両方のIdPのID プロバイダー URL が同じで、間違ったURL がプルされる可能性があるため、IdP IDをSAML 応答からプルできません。 そのため、値を下記のように変更します。 変更前: var samlResponseTxt = request.getParameter("SAMLResponse");if (!GlideSession.get().isLoggedIn() && GlideStringUtil.notNil(samlResponseTxt)) { var idpRecord = this.getIdPRecord(request); if (idpRecord) { SSO_Helper.debug("IdP found based on SAML response:" + idpRecord.getUniqueValue()); return new SSO_Helper(idpRecord.getUniqueValue(), false, null, true); } } 変更後: var samlResponseTxt = request.getParameter("SAMLResponse"); if (!GlideSession.get().isLoggedIn() && GlideStringUtil.notNil(samlResponseTxt)) { /* // You have two profiles that use the same idp entity id it cannot use // the idp issuer / entity id from the response otherwise it may result in the // wrong idp profile. idp initiated login will not work var idpRecord = this.getIdPRecord(request); if (idpRecord) { SSO_Helper.debug("IdP found based on SAML response:" + idpRecord.getUniqueValue()); return new SSO_Helper(idpRecord.getUniqueValue(), false, null, true); }*/ return new SSO_Helper(null, true); } 注意: MultiSSO V2を使用している場合、Edge Encryptionが設定されている場合には、インストールイグジット MultiSSOV2 で以下のKBに指定の変更を行う必要があります: KB0831608 - Multi-provider SSO V2 と Edge Encryption プロキシ 注意: 上記のコメントと構成では、IdPで開始されたログインが機能しないことに注意してください。 Jakarta 以降、IdP をアクティブ化するには、IdP が「テスト接続」にパスする必要があります。この構成では、「テスト接続」が失敗する可能性が高く、IdP をアクティブ化できません。IdP を有効にするには、このシステムプロパティを作成して設定し、IdP レコードを有効にします。 名前 = glide.authenticate.multisso.test.connection.mandatoryタイプ = true|false値 = false