Service Portal の SSO ログインでユーザーが Service Portal にリダイレクトされないIssue <!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } ユーザーが Service Portal にアクセスして SSO 経由でログインした場合、Service Portal に戻ることが期待されますが、代わりにプラットフォームビュー (navpage.do) またはアセット (フォント、画像など) に遷移してしまいます。 Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 原因 #1 - すべてのバージョンに適用 原因 #2 - Paris 以降に適用 原因 #3 - すべてのバージョンに適用 Cause<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 原因 #1 - Service Portal 内で使用されるアセット (画像、フォントなど) が非公開になっている ブラウザー (Chrome または Firefox) で、デベロッパーツールを開き、[ネットワーク] タブを表示します ([ログの保存] にチェックが入っていることを確認してください)。Service Portal (https://acme.service-now.com/sp) に移動します。ネットワークキャプチャ内で、アセット (例:「iix」フォントファイル、「png/jpg」画像ファイル、または「sys_attachment」レコード) が「302 / Redirect」になっているのを確認できる場合があります。未認証のユーザーが非公開のアセットを読み込もうとすると、インスタンスはユーザーに先に認証を求めます (通常は SSO)。ただしこの場合、リダイレクトが Service Portal の「Login」ウィジェットからの SSO リダイレクトを上書きする可能性があるため、認証後にユーザーは「navpage.do」または問題のアセットにリダイレクトされます。 原因 #2 - カスタム「Login」ウィジェットが使用されており、Paris 以降へのアップグレード後にこの動作が発生するようになった Paris より前のバージョンでは、インスタンスはユーザーが最後にアクセスしたパブリックページ (この場合は Service Portal) を記憶するため、認証後にインスタンスはユーザーをそのページ (Service Portal) に戻す処理を行います。 しかし Paris 以降では、この動作は変更されており、記憶されなくなっています。 原因 #3 - Angular バインディング/変数によってアセットが誤って参照されている ブラウザー (Chrome または Firefox) でデベロッパーツールを開き、[ネットワーク] タブを表示します ([ログの保存] にチェックが入っていることを確認してください)。Service Portal (https://acme.service-now.com/sp) に移動します。ネットワークキャプチャ内で、Angular バインディング式のように見えるリクエストが正しく置換値に置き換えられておらず、「302 / リダイレクト」になっているのを確認できる場合があります。 ユーザーが未認証のため、セッションは URL の背後にあるリソースへのアクセスを許可しません (公開されていないと仮定)。その結果、認証が必要となり、原因 #1 と同様に Relay State が上書きされます。 Resolution<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 解決 #1 - Service Portal 内で使用されているアセットが非公開になっている アセット (フォント、画像など) を削除するか、公開アクセス可能にする必要があります。詳細については、以下のリンクを参照してください。 製品ドキュメント - データベースへの画像の保存KB0782047:サービスポータルのログインページから、カスタムフォントを使用するとログインボタンでカスタムフォントのダウンロードが試行されるNOW Community - サービスポータルでのカスタムフォントの使用 解決策 #2 - カスタム「Login」ウィジェットが使用されており、Paris 以降へのアップグレード後にこの動作が発生するようになった Service Portal 内ですぐに利用可能な「Login」ウィジェットの使用に戻してください。カスタムログインウィジェットを実装する必要がある場合は、「サーバースクリプト」内で GlideSession プロパティ「starting_page」を設定して、リレー状態 (ログイン後にアクセスするページ) を定義できます。 gs.getSession().putProperty("is_direct_redirect", "true"); gs.getSession().putProperty("starting_page", "/sp"); 解決策 #3 - Angular バインディング/変数によってアセットが誤って参照されている この問題の最も一般的な原因は Service Portal テーマ内にあり、Angular バインディング式が「src」属性で参照されています。 <img src="{{::portal.logo}}" title="{{::portal.title}}" alt="{{::portal.title}} ${Logo}" /> Angular バインディング式を使用する場合、正しい属性は「ng-src」です。 <img ng-src="{{::portal.logo}}" title="{{::portal.title}}" alt="{{::portal.title}} ${Logo}" />