サービスポータル:マルチプロバイダー SSO を有効にすると、エンドユーザーがすでにログインしている場合、OKTA を介して navpage.do にアクセスできるIssue お客様がマルチプロバイダー SSO を有効にしている場合、ServiceNow インスタンスへの既存のログインセッションがあるときに Okta の [ServiceNow] タイルをクリックすると、ロールのないエンドユーザーがサービスポータルにリダイレクトされるのではなく、OKTA IdP から開始されるログインを通じてプラットフォーム UI の「navpage.do」にリダイレクトされる可能性があります。 再現手順: SSO 対応インスタンスに移動します。 これにより、ユーザーに OKTA ログインのプロンプトが表示されます。エンドユーザーの認証情報 (snc_internal ロールを持つユーザー) を使用して OKTA にログインします。ログインに成功すると、OKTA ホームページが表示されます。OKTA ホームページで、「instance_name」タイルをクリックします。これにより、ユーザーは https://instance-name.service-now.com/sp にリダイレクトされます 次にこのタブを閉じて、OKTA ホームページに戻ります。同じ「instance-name」タイルをもう一度クリックします。ユーザーは https://instance-name.servicenow-now.com/navpage.do にリダイレクトされます。 想定される動作: エンドユーザーは、2 回目以降のログインから毎回、[OKTA] タイルをクリックすると、サービスポータル https://instance-name.service-now.com/sp に移動します。 実際の動作: 最初のログイン時にのみ「/sp」ポータルに正しくリダイレクトされます。ReleaseServiceNow Utah およびそれ以前のリリース。この問題は、Vancouver リリースで修正される予定です。Causeこの動作の原因は、SSO IdP が (ログイン後にユーザーを送信する場所をインスタンスに指示する) relaystate パラメーターを設定しない場合、インスタンスがデフォルトで /navpage.do に設定されるという現在の制限によるものです。ユーザーが既にインスタンスにログインしていて、その後 Okta の「タイル」をクリックすると、インスタンスはユーザーを再認証しないため、relaystate パラメーターは使用されません。これは PRB1254142 に記載されています。Resolution修正 PRB1254142 の修正は Vancouver リリースに含まれます。Vancouver 以降では、システムプロパティ glide.authenticate.honor.relaystate.for.loggedin.sessions を true に設定すると、relaystate パラメーターが空のときにシステムプロパティ glide.entry.first.page.script のスクリプトが確実に実行されます。 ワークアラウンド IdP が開始するセッションで常に Relaystate がオンになるように Okta を設定する Okta は、IdP が開始するセッションの relaystate パラメーターが常にオンになるように設定できます。これにより、どのユーザーが Okta の ServiceNow の「タイル」をクリックしても (既存のセッションがない場合の認証を含め、IdP が開始したセッションがトリガーされ)、relaystate の URL にリダイレクトされます。ただし、これはすべてのユーザーに適用されるため、柔軟性はありません。 設定するには: ServiceNow インスタンスで、システムプロパティ glide.authenticate.honor.relaystate.for.loggedin.sessions の true|false のタイプの値を true として作成/設定します。Okta 管理インターフェイスで、[アプリケーション] -> [アプリケーション] -> (関連する ServiceNow UD アプリをクリック) -> [Sign On (サインイン)] -> [編集] に移動します。 UI スクリプトのワークアラウンド このタイプの問題に関する柔軟なワークアラウンドは、UI スクリプトを作成することです。この UI スクリプトは、ログインしているユーザーのロールを確認し、ロールがない場合はサービスポータルにリダイレクトすることを目的としています。 UI スクリプトのガイドラインの一部: グローバルとしてマークされていることを確認します。([グローバル] チェックボックスをオンにします)これは本番環境に実装する前に、必ず準本番環境でテストする必要があります。このワークアラウンドは開発から提供されたものではないため、完全にはサポートされていません。開発が判断を下すまでの一時的な救済を提供するものとして作成されています。次に示す UI スクリプトについては、インスタンス名をお客様のインスタンス名に切り替え、「/sp」をお客様のポータル名に切り替える必要があります。お客様はポイント 4 を念頭に置いて、インスタンスごとにこのスクリプトを作成する必要があります。 使用できるサンプル UI スクリプトを次に示します。 addLoadEvent(ESSUserRedirect); function ESSUserRedirect() { if (g_user.userName != 'guest' && !g_user.hasRoles()){ if(document.URL.indexOf('sp')==-1) { if(document.URL.indexOf('instance-name.service-now.com')>=0){ top.location = "https://instance-name.service-now.com/sp"; } }} } Related Linkshttps://community.servicenow.com/community?id=community_blog&sys_id=cbcda2e9dbd0dbc01dcaf3231f961949