シングル サインオン、ログイン、および URL リダイレクト

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間:7分
  • サービスポータル システムのプロパティとスクリプトインクルードを組み合わせて使用し、ポータルにログインするユーザーに対してシステムが URL リダイレクトを処理する方法を決定します。

    SSO、URL リダイレクト、および ServiceNow プラットフォームを理解しているユーザーだけが、変更を加えることができます。

    シングル サインオン サービスポータル

    サービスポータルでシングル サインオンを使用するには、統合 - 複数プロバイダーのシングル サインオン インストーラー プラグイン (com.snc.integration.sso.msoiinstaller) を有効にする必要があります。

    システム プロパティを使用してプライマリ IdP に自動的にリダイレクトする場合、サービスポータルはその IdP に自動的にリダイレクトされます。ID プロバイダが複数ある場合は、サービスポータルはログインページで [外部ログインを使用] へのリンクを表示します 。プラットフォームでの SSO と認証の詳細については、「 複数プロバイダーのシングルサインオン (SSO)」を参照してください。

    注:
    サービスポータル には、マルチプロバイダー SSO と Okta の使用に関連する既知の問題があります。この問題とワークアラウンドの詳細については、Now Support ナレッジベースの記事「 Service Portal: After enabling Multi SSO, end users are able to access navpage.do through OKTA if they are already logged in (サービスポータル:マルチ SSO を有効にした後、エンドユーザーがすでにログインしている場合は、OKTA 経由で navpage.do にアクセスできる) [KB0687717]」を参照してください。

    サービスポータル ページで認証を要求する

    サービスポータル ページで認証を要求する場合は、ページ レコードの [公開] フラグが選択されていないことを確認してください。詳細については、「サービスポータル デザイナーを使用したページの作成と編集」を参照してください。ユーザーが非公開のページに移動すると、要求されたポータルのログインページにリダイレクトされます。

    すべてのページ リクエストは $sp ページを経由してルーティングされるため、このページは公開される必要があります。公開ページの sys_public テーブルにある次の値がページを公開として定義します。

    • ページ$sp
    • 有効: true

    ポータルをインスタンスログインページとして設定する

    すべての未認証ユーザーをポータルのログインページに誘導してログインするようにします。ポータルのログイン ページは、インスタンスのプライマリログインページになります。

    始める前に

    必要なロール:admin

    手順

    1. 次の設定を使用して、システムプロパティを追加します
      • 名前:glide.entry.page.script
      • タイプ:文字列
      • [Value (値)]:
        new SPEntryPage().getLoginURL()
    2. オプション: デフォルトポータル以外のポータルにユーザーを誘導する必要がある場合は、SPEntryPage スクリプトインクルードで指定されたポータルを編集します。

      SPEntryPage は、インスタンス上の既定のポータルをリダイレクト先のポータル パスとして使用します。 従業員センター (esc) がデフォルトのポータルです。

      注:
      スクリプトインクルードを編集すると、将来の更新でアップグレードされません。
      1. 移動先 すべて > システム定義 > スクリプトインクルード.
      2. スクリプトインクルード [sys_script_include] テーブルから、 SPEntryPage という名前のスクリプトインクルードを検索します。
      3. [ スクリプト] フィールドで、スクリプトを編集して、割り当てられたポータルを目的のportal_suffixに変更します。

        たとえば、 this.portal = this.getDefaultPortal();this.portal = "/sp/"; に変更して、 サービスポータル にリダイレクトします。

        SPEntryPage.prototype = {
        
            initialize: function() {
                this.logVariables = false; // for debugging 
                this.portal = this.getDefaultPortal(); // The URL suffix for default portal
            },
        
        注:
        /sp の後のスラッシュ (/) は、シングルサインオンの設定時に問題を引き起こす可能性があります。問題が発生している場合は、スクリプトからその文字を削除してみてください。

    ログイン後にサービス ポータルへリダイレクトする

    ログイン後、ユーザーを サービスポータル ページに条件付きでリダイレクトします。

    始める前に

    必要なロール:admin

    手順

    1. ナビゲーションフィルターに、「sys_properties.list」と入力します。
    2. システムプロパティ [sys_properties] テーブルで、次のプロパティと値を追加します。
      プロパティ タイプ 説明
      glide.entry.first.page.script 文字列 new SPEntryPage().getFirstPageURL() 認証後の最初のページ
      glide.entry.page.script 文字列 ユーザーをログイン先にリダイレクトするサーバースクリプト。例:

      new SPEntryPage().getLoginURL()

      ログイン先を決定するサーバースクリプトインクルードメソッドの呼び出しが含まれます
      getFirstPageURL は主に次の処理を行います。
      • フレームセットから抜け出すために login_redirect.do へリダイレクトします (該当する場合)。
      • ユーザーがロールを持っていない場合はデフォルトのポータルにリダイレクトされ、ポータルに直接移動しようとしていないロールを持つユーザーの場合はフルプラットフォームにリダイレクトされます。

        ユーザーがロールを持っていない場合は、ポータルに相当するページにリダイレクトされます。次に例を示します。

        https://<instance_name>.service-now.com/nav_to.do?uri=change_request_list.do

        ロールのないユーザーのリダイレクト先:

        https://<instance_name>.service-now.com/sp/?id=list&table=change_request

      注:
      この変更によって、ロールのないユーザーが完全なプラットフォームにアクセスできなくなることはありません。ロールのないユーザーがプラットフォームにアクセスするのを防ぎ、常にポータルにリダイレクトするには、glide.entry.loggedin.page_ess システムプロパティの値を /sp などのポータルサフィックスに設定します。
    3. オプション: SPEntryPage スクリプトインクルードでログイン後の動作をカスタマイズします。

      スクリプトインクルードの変更の詳細については、「 スクリプトインクルード」を参照してください。

      たとえば、特定のロールを持つユーザーを サービスポータル にリダイレクトする場合は、次のコードで user.hasRoles() を変更できます。
      if (user.hasRoles() && !redirectURL && !isServicePortalURL)
      注:
      • スクリプトインクルードを編集すると、将来の更新でアップグレードされません。
      • admin ロールを持つユーザーは、常に user.hasRoles() チェックを通過します。
      • 外部認証を使用している場合は、IdP が RelayState URL パラメーターをサポートしていることを確認してください。このパラメーターは最初に要求された URL をユーザーの認証中に保持します。これは、ログイン後のリダイレクトで必要になります。

    次のタスク

    リダイレクトをデバッグするには、「サービス ポータル URL のリダイレクトをデバッグする」を参照してください。リダイレクトのトラブルシューティングの追加情報については、Now Support ナレッジベースの記事「 Frequently Asked Questions on redirection with service portal (サービスポータルでのリダイレクトに関するよくある質問 (FAQ)) [KB0747432]」を参照してください。

    サービス ポータル URL のリダイレクトをデバッグする

    サービスポータルにログインして最初のページへリダイレクトするために、URL リダイレクトをデバッグします。

    SPEntryPage からのデバッグ出力を表示し、リダイレクトのベースになるセッション変数を確認するには:
    1. システム プロパティ glide.entry.first.page.script の値が、new SPEntryPage().getFirstPageURL() であることを確認します。
    2. SPEntryPage スクリプトインクルードから、this.logVariables = true を設定します。
    3. 別のブラウザでログインします。
    4. システムナビゲーターから、次の場所に移動してログ出力を表示します システムログ > システムログ > すべて.