intra-mart Accel Platform セットアップガイド 第29版 2019-08-01

5.3.3.11. iAP-iWP間SSO連携(IM-HybridSSO)

intra-mart Accel Platform(以下 iAP と記述します)と iWP / iAF v7.2 (以下 iWP と記述します)の間で、 シングルサインオン(以下 SSO と記述します)連携するための機能(IM-HybridSSO)の設定方法について説明します。

注意

IM-HybridSSO は、2014 Summer(Honoka) から利用することが可能です。

注意

IM-HybridSSO の iWP用のモジュールは、patch8 で提供されました。
iWP の patch7 で IM-HybridSSO を利用するためには、別途個別パッチモジュールをインストールする必要があります。
個別パッチモジュールは、以下の URL からダウンロード可能です。
※ダウンロードには製品のライセンスキーが必要です。
該当のファイルを解凍し、展開された readme.txt を参照してインストールおよび設定を行ってください。

なお、上記個別パッチモジュールを適用し、その後 patch8 の適用を行う場合、patch8 の適用によって一部設定ファイルが初期化されるためSSO連携が行えなくなります。
必ず patch8 の readme.txt を参照した上でパッチの適用を行ってください。

注意

IM-HybridSSO を利用する上での制限事項については、「 リリースノート 」-「 制限事項 」-「 HybridSSO・外部メニュー連携 」を参照してください。

5.3.3.11.1. 概要

5.3.3.11.1.1. IM-HybridSSO とは

IM-HybridSSO とは、iAP と iWP の間で、SSO 連携するための機能です。
iWP の認証情報の管理と、外部メニュー連携を利用して取得したメニューからのアクセス時に iWP へ自動的にログインすることにより実現されます。
これにより、iAP と iWP のサービスをシームレスに利用することが可能です。
外部メニュー連携については、「 外部メニュー連携とは 」を参照してください。
IM-HybridSSO を利用するためには、外部メニュー連携の設定が必要です。
IM-HybridSSO の設定 」では、IM-HybridSSO と外部メニュー連携の設定を併せて行いますので、手順に沿って設定を行ってください。

5.3.3.11.1.2. IM-HybridSSO の構成

IM-HybridSSO では、接続元と接続先を以下のように定義します。
SSO認証プロバイダ
接続元の iAP のログイン対象のテナント
外部メニュー連携機能のメニュークライアントとしての役割も担います。
SSOサービスプロバイダ
接続先の iWP のログイングループ
外部メニュー連携機能のメニュープロバイダとしての役割も担います。
IM-HybridSSO の基本構成は以下の通りです。
../../_images/configuration_file_hybrid_sso_1.png

図 IM-HybridSSO の構成

設定はテナントごとに連携先のSSOサービスプロバイダを定義することで行います。

5.3.3.11.1.3. IM-HybridSSO の機能

IM-HybridSSO は、以下の機能により実現されます。

  • 認証情報の管理

    iAP にログインすることで、iWP にログイン確認を行い、 ログイン可能な場合は、ブラウザの Cookie に認証情報を保存します。
  • SSO自動ログイン

    外部メニュー連携で取得した外部メニューからアクセスすることで、Cookie の認証情報を利用して iWP に自動的にログインし、該当のページを表示します。
  • ログアウト連携

    iAP からログアウトすることで、連携している全ての iWP からログアウトし、Cookie から認証情報を削除します。
IM-HybridSSO では、iAP にログインしたユーザのユーザコードを利用して iWP にログインします。
iWP に同一のユーザコードのユーザが存在しない場合は、SSO連携できません。
iAP と iWP のアカウント情報を同期するためには、マスタ情報の同期機能の BackwardSync が利用可能です。
BackwardSync については「 BackwardSync(version 7.2へのマスタ同期)仕様書 」、および、「 BackwardSync(version 7.2へのマスタ同期)操作ガイド 」を参照してください。

5.3.3.11.2. IM-HybridSSO の設定

5.3.3.11.2.1. iWP の設定

5.3.3.11.2.1.1. SSO自動ログインの設定

IM-HybridSSO によるSSO自動ログインを有効にするため、以下の設定を行います。

注意

修正内容の位置に正しく設定を追加してください。
設定箇所が間違っている場合、正常に動作しません。
  1. メニューサーブレットにフィルタを追加します。

    • 設定ファイル

      <%ApplicationRuntime のインストールパス% /doc/imart/WEB-INF/web.xml>

    • 修正内容

      <filter>
        <filter-name>HTTPContextHandlingFilter</filter-name>
        <filter-class>jp.co.intra_mart.common.aid.jsdk.javax.servlet.filter.HTTPContextHandlingFilter</filter-class>
      </filter>
      <!-- ↓↓↓ 以下を追加 -->
      <filter>
        <filter-name>AutoLoginFilter</filter-name>
        <filter-class>jp.co.intra_mart.foundation.security.filter.AutoLoginFilter</filter-class>
      </filter>
      <!-- ↑↑↑ ここまで --><filter-mapping>
        <filter-name>HTTPContextHandlingFilter</filter-name>
        <servlet-name>MenuServlet</servlet-name>
      </filter-mapping>
      <!-- ↓↓↓ 以下を追加 -->
      <filter-mapping>
        <filter-name>AutoLoginFilter</filter-name>
        <servlet-name>MenuServlet</servlet-name>
      </filter-mapping>
      <!-- ↑↑↑ ここまで -->
      
  2. SSO自動ログイン用のリクエスト解析モジュールを追加します。

    • 設定ファイル

      <%ServerManager のインストールパス% /conf/access-security.xml>

    • 修正内容

      <user-security><initial-request-analyzer>
              <request-analyzer-class>jp.co.intra_mart.foundation.security.certification.ShortCutInitialRequestAnalyzer</request-analyzer-class>
          </initial-request-analyzer>
          <!-- ↓↓↓ 以下を追加 -->
          <initial-request-analyzer>
              <request-analyzer-class>jp.co.intra_mart.system.hybrid_sso_provider.HybridSSORequestAnalyzer</request-analyzer-class>
          </initial-request-analyzer>
          <!-- ↑↑↑ ここまで --></user-security>
      

5.3.3.11.2.1.2. SSOエラーページの設定

以下のエラーページを IM-HybridSSO 用に差し替えます。
  • セッションタイムアウトエラーページ
  • アクティブセッション無効エラーページ
  • ログインブロックエラーページ
差し替えには以下のファイルをそれぞれ修正します。
  1. セッションタイムアウトエラーページ

    • 設定ファイル

      <%ServerManager のインストールパス% /conf/access-security.xml>

    • 修正内容

      <security-config>
        <error-page-provider>
          <page-provider-class>jp.co.intra_mart.foundation.security.certification.StandardErrorPageProvider</page-provider-class><init-param>
            <!-- このパスを修正してください -->
            <param-name>session-timeout-page</param-name>
            <param-value>system/security/error/im_hybrid_sso/session_timeout_page.jssp</param-value>
          </init-param><init-param>
            <!-- スマートフォンを利用している場合は以下も修正してください -->
            <param-name>session-timeout-page.sp</param-name>
            <param-value>system/security/error/im_hybrid_sso/session_timeout_page_smartphone.jssp</param-value>
          </init-param>
      
        </error-page-provider>
      </security-config>
      
  2. アクティブセッション無効エラーページ

    • 設定ファイル

      <%ServerManager のインストールパス% /conf/active-session-config.xml>

    • 修正内容

      <access-security-page-provider provider-class="jp.co.intra_mart.system.security.AccessSecurityPageProviderImpl">
        <access-security-page page-id="active-session-invalidated">
          <location request-header="maskat_layoutid">system/security/error/active_session_invalidated_page_maskat.jssp</location>
          <location client-type="mobile">system/security/error/active_session_invalidated_page_mobile.jssp</location>
      
          <!-- このパスを修正してください -->
          <location>system/security/error/im_hybrid_sso/active_session_invalidated_page.jssp</location>
      
          <!-- スマートフォンを利用している場合は以下も修正してください -->
          <location client-type="sp">system/security/error/im_hybrid_sso/active_session_invalidated_page_smartphone.jssp</location>
        </access-security-page>
      </access-security-page-provider>
      
  3. ログインブロックエラーページ

    • 設定ファイル

      <%ApplicationRuntime のインストールパス% /doc/imart/WEB-INF/web.xml>

    • 修正内容

      <filter>
        <filter-name>LoginBlockFilter</filter-name>
        <filter-class>jp.co.intra_mart.foundation.security.filter.LoginBlockFilter</filter-class>
        <init-param>
          <param-name>pagePath</param-name>
          <!-- このパスを修正してください -->
          <param-value>/system/security/error/im_hybrid_sso/login_block_page.jssp</param-value>
        </init-param>
        <init-param>
          <param-name>mobilePagePath</param-name>
          <param-value>/system/security/error/login_block_page_mobile.jssp</param-value>
        </init-param>
        <init-param>
          <param-name>pagePath.sp</param-name>
          <!-- スマートフォンを利用している場合は以下も修正してください -->
          <param-value>/system/security/error/im_hybrid_sso/login_block_page_smartphone.jssp</param-value>
        </init-param>
      </filter>
      

5.3.3.11.2.1.3. SSOサービスプロバイダの設定

SSOサービスプロバイダのIDと接続先のSSO連携するログイングループの設定を行います。
  • 設定ファイル

    <%ServerManager のインストールパス% /conf/hybrid-sso-provider-config.xml>

  • 設定例

    <hybrid-sso-provider-config
        xmlns="http://www.intra-mart.jp/hybrid_sso_provider/hybrid-sso-provider-config"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.intra-mart.jp/hybrid_sso_provider/hybrid-sso-provider-config"
        provider-id="sample">
    
      <mappings>
        <mapping login-group="default" encrypt-key="default-enc-key" />
        <mapping login-group="other" encrypt-key="other-enc-key" />
      </mappings>
    
    </hybrid-sso-provider-config>
    
SSOサービスプロバイダ設定ファイルには、以下の設定を行います。
  • プロバイダIDの設定

    <hybrid-sso-provider-config>provider-id 属性にプロバイダIDを設定します。
    プロバイダIDは、同一のSSOを構成するドメイン上の iWP に対して、ユニークなIDとなるように設定してください。
  • ログイングループの設定

    <mappings> 内にSSO連携に利用するログイングループの数だけ <mapping> タグを記述します。
    login-group 属性には、ログイングループIDを設定します。
    encrypt-key 属性には、ブラウザの Cookie に設定される認証情報を暗号化するためのキーを設定します。

注意

認証情報の暗号化方式は、Blowfish を利用しています。
そのため暗号化のキーには、Blowfish でキーとして設定可能な文字列長の文字列を設定する必要があります。
また、環境によりキーの文字列長が制限されている場合があります。
Windows 用の Oracle JDK の暗号化プロバイダの実装では、キーの文字列長はデフォルトでは128ビット(半角16文字)に制限されています。(日本で利用する場合)
encrypt-key 属性には、利用している環境で設定可能な文字列長の文字列を設定してください。
Oracle JDK の暗号化プロバイダについては、以下を参照してください。

5.3.3.11.2.1.4. ベースURLの設定

Webサーバを利用するなどして、ブラウザからのリクエストURLと iWP が受け付けるリクエストURLが異なる場合は、ベースURLの設定が必要です。
ベースURLを設定するために、以下の設定が必要です。
設定がない場合は、追加するようにしてください。
  • 設定ファイル

    <%ServerManager のインストールパス% /conf/parameter.xml>

  • 修正内容

    <param>
      <param-name>im.web_server.url</param-name>
      <param-value><http または https>://<アクセス可能なホスト名>:<PORT></param-value>
    </param>
    
以下の構成の場合は、<param-value>http://www.intra-mart.jp を設定します。
WebサーバリクエストURL http://www.intra-mart.jp/imart/~
iWP が受け付けるリクエストURL http://iap.intra-mart.jp:8080/imart/~
外部メニュー連携用モジュールでは、この設定を利用してメニュー情報の URL を生成しています。
この設定がない場合は、iWP が受け付けるリクエストURL を基にメニュー情報の URL が生成されるため、Webサーバ経由のアクセスができなくなります。

5.3.3.11.2.1.5. Webサービス実行ユーザ設定

Webサービスを実行する特定のユーザを定義します。
  1. Webサービス実行ユーザを定義します。
    Webサービス実行用に新しくユーザを作成し、特定のロールを付与してください。
    新しくユーザが作成できない場合は、既存のユーザにロールを付与して、実行用ユーザとして利用することも可能です。
  2. 「ログイングループ管理画面」の「Webサービスアクセスメニュー」より、以下のWebサービスにWebサービス実行ユーザの権限(1.で設定したロール)を付与します。
    IM-HybridSSO 用と外部メニュー連携用のWebサービスがありますが、それぞれのオペレーションに同じ権限を設定してください。
    Webサービス オペレーション 説明
    AdmissionService publishKey IM-HybridSSO のログイン確認と認証情報の作成。
    MenuService getAvailableMenuTree
    表示用の外部メニューツリーの取得。
    グローバルナビやサイトマップに表示されるメニューツリーを取得します。
    MenuService getManagedMenuTree
    管理用の外部メニューツリーの取得。
    メニュー設定画面でメニューの表示位置を設定するためのメニューツリーを取得します。
各画面の操作手順については、iWP の「 グループ管理者操作ガイド 」を参照してください。
  • ロールの作成について・・・「1.5.2 ロールの設定」
  • ユーザの作成とロールの付与について・・・「1.5.3 ユーザの登録と削除(アカウント情報とプロファイル情報)」
  • Webサービス実行ユーザの権限について・・・「1.14 Webサービスアクセス設定」
また、iWP の Webサービスについては詳しく知りたい場合は、 iWP の「 Web サービス プログラミングガイド 」を参照してください。

5.3.3.11.2.1.6. SSOサービスプロバイダ情報の提供

SSO 連携する iAP のシステム管理者に以下の情報を提供します。
iAP のシステム管理者は、この情報を参照して、iAP の設定を行います。
iAP の設定については、「 iAP の設定 」を参照してください。
プロバイダID iWP の設定ファイル「hybrid-sso-provider-config.xml」に設定したプロバイダID
認証情報用エンドポイント
以下のフォーマットです。
http://<HOST>:<PORT>/<CONTEXT_PATH>/services/AdmissionService
外部メニュー連携用エンドポイント
以下がフォーマットです。
http://<HOST>:<PORT>/<CONTEXT_PATH>/services/MenuService
Webサービス接続先
ログイングループID
SSOサービスプロバイダのログイングループIDです。
Webサービス接続用
ユーザコード
権限を与えられたユーザのユーザコードです。
Webサービス接続用
ユーザパスワード
権限を与えられたユーザのパスワードです。
ログアウトURL
以下のフォーマットです。
http://<HOST>:<PORT>/<CONTEXT_PATH>/user.logout

5.3.3.11.2.2. iAP の設定

5.3.3.11.2.2.1. IM-HybridSSO モジュールの選択

IM-Juggling で、「追加機能」-「認証拡張機能」-「iAP-iWP間SSO連携モジュール(IM-HybridSSO)」を選択します。
「iAP-iWP間SSO連携モジュール(IM-HybridSSO)」を利用するには、「外部メニュー連携」モジュールが必要です。
「外部メニュー連携」は、「iAP-iWP間SSO連携モジュール(IM-HybridSSO)」に対して「依存関係も含めて選択」を行うことで自動的に選択されます。

5.3.3.11.2.2.2. SSOサービスプロバイダの設定

利用するSSOサービスプロバイダを設定ファイルに記述します。
「設定ファイル」タブから、「iAP-iWP間SSO連携モジュール(IM-HybridSSO)」-「SSO連携用マッピング設定(hybrid-sso-mapping-config)」を出力します。
「SSO連携用マッピング設定(hybrid-sso-mapping-config)」に、SSOサービスプロバイダの設定を記述します。
連携するSSOサービスプロバイダの数だけ <mapping> タグにSSOサービスプロバイダの情報を記述してください。
プロバイダIDには、「 SSOサービスプロバイダの設定 」で iWP に設定した値を記述してください。
IM-HybridSSO を構成するサーバは、全て同一のドメイン上に構築する必要があります。
以下の構成の場合、設定ファイルのサイトドメインに設定する値は「intra-mart.jp」です。
  • SSO認証プロバイダ: iap.intra-mart.jp
  • SSOサービスプロバイダ1: iwp1.intra-mart.jp
  • SSOサービスプロバイダ2: iwp2.intra-mart.jp
設定ファイルの詳細な設定内容については「 設定ファイルリファレンス 」-「 SSO連携用マッピング設定 」を参照してください。

5.3.3.11.2.2.3. メニュープロバイダの設定

利用する外部メニュー連携用のメニュープロバイダを設定ファイルに記述します。
IM-HybridSSO を利用する場合、メニュープロバイダの接続先情報には、「 SSOサービスプロバイダの設定 」で設定した情報と同じ iWP の接続先情報を設定します。
SSOサービスプロバイダと同じ接続先(URLのホスト)、ログイングループ、Webサービス実行ユーザを設定してください。
設定方法については、「 メニュープロバイダの設定 」、および、「 設定ファイルリファレンス 」-「 外部メニュー連携接続先設定 」を参照してください。