10.3. 統合Windows認証¶
項目
10.3.1. 概要¶
統合Windows認証機能は、ドメインコントローラ上の認証済みユーザと同じユーザコードをもつユーザで intra-mart Accel Platform アクセス時に、統合Windows認証済みユーザ情報を取得して自動ログインを行うことができる機能です。これにより、シングルサインオンを実現することができます。注意
ログイン画面からのログインはサポートしません。詳しくは以下の制限を参照してください。
10.3.2. 前提条件¶
アプリケーションサーバには Resin を使用してください。
Resin を Windows Server 上で動作させる必要があります。
Resin を実行する Windows Server がドメインに参加している必要があります。
- 統合Windows認証モジュールが必要になります。
- IM-Juggling 上で「追加機能」-「統合Windows認証モジュール」を選択し intra-mart Accel Platform を構築する必要があります。
- 統合Windows認証モジュールは、8.0.0-PATCH_001 以降のバージョンを使用してください。
注意
シングルサインオンを実現するためには、ドメインコントローラ上のユーザコードと intra-mart Accel Platform 上のユーザコードが一致している必要があります。注意
統合Windows認証機能には、ドメインコントローラ、統合Windows認証に対応したブラウザが必要になります。注意
統合Windows認証は intra-mart Accel Platform の機能として Resin 上で実行されます。そのため、IIS の Windows 認証を無効化してください。その他認証は必要に応じて設定してください。
10.3.3. セットアップ¶
10.3.3.1. 統合Windows認証機能の設定¶
次の設定をテナント環境セットアップ後に行ってください。
機能の有効化の設定
- 統合Windows認証設定ファイル(<(展開したwar)>/WEB-INF/conf/im-sso-windows-config.xml)を開きます。
- <im-sso-windows-config>/<authentication>/<@enable> を true に設定します。
テナント解決の設定(intra-mart Accel Platform 2014 Spring(Granada) 以降のみ)
認証対象となるテナントを解決する方法として plugin を採用しています。plugin の設定仕様については、「PluginManagerのAPIドキュメント」を参照してください。
<(展開したwar)>/WEB-INF/plugin/jp.co.intra_mart.foundation.admin.tenant.context.tenant.resolver.windows_8.0.1/plugin.xml> を開きます。
<plugin>/<extension>/<tenant-id-resolvers>/<tenant-id-resolver>/<@class> に実装クラスを指定し、必要に応じて実装クラスにパラメータを設定します。
- 使用可能な実装クラス、および設定するパラメータについてはテナント解決プラグインの設定を参照してください。
以上で統合Windows認証機能の設定は終了です。
10.3.3.1.1. テナント解決プラグインの設定¶
テナント解決を行う仕組みとして、以下の二つの実装クラスを用意しています。
実装クラス 概要 jp.co.intra_mart.foundation.admin.tenant.context.DomainBasedWindowsTenantIdResolver ユーザが参加しているドメインをテナントIDとして解決します。 jp.co.intra_mart.foundation.admin.tenant.context.FixedConfigBasedWindowsTenantIdResolver 設定された固定値をテナントIDとして解決します。
jp.co.intra_mart.foundation.admin.tenant.context.DomainBasedWindowsTenantIdResolver
ユーザが参加しているドメインをテナントIDとして解決します。本実装クラスに必要なパラメータはありません。
jp.co.intra_mart.foundation.admin.tenant.context.FixedConfigBasedWindowsTenantIdResolver
tenant_id パラメータを受け取り、その値をテナントIDとして解決します。下記の設定例では、「default」がテナントIDとして解決されます。<tenant-id-resolver class="jp.co.intra_mart.foundation.admin.tenant.context.FixedConfigBasedWindowsTenantIdResolver"> <init-param> <param-name>tenant_id</param-name> <param-value>default</param-value> </init-param> </tenant-id-resolver>
10.3.3.2. 統合Windows認証環境でWebサービスを利用する¶
統合Windows認証環境でWebサービスを利用するためには、以下の設定が必要です。
機能の有効化の設定
設定ファイル(<(展開したwar)>/WEB-INF/conf/im-sso-windows-path-config/im-sso-windows-path-config_ws_auth.xml>)を開きます。
以下のようにコメントを外して、設定を有効化します。
<no-authentication> <path regex="true">/services/.*</path> <path regex="true">/axis2-admin/.*</path> </no-authentication>
10.3.3.3. 統合Windows認証環境で外部ソフトウェア連携機能を利用する¶
統合Windows認証環境で外部ソフトウェア連携機能を利用するためには、以下の設定が必要です。
機能の有効化の設定
設定ファイル(<(展開したwar)>/WEB-INF/conf/im-sso-windows-path-config/im-sso-windows-path-config_imaca_provider.xml>)を開きます。
以下のようにコメントを外して、設定を有効化します。
<no-authentication> <path>/HTTPActionEventListener</path> </no-authentication>
10.3.3.4. Internet Explorer の設定¶
Internet Explorer の設定を変更することにより、Windows にログインしているユーザで自動的に intra-mart Accel Platform にログインすることができます。
10.3.4. 統合Windows認証機能を無効化するには¶
統合Windows認証機能を無効化したい場合、以下の手順を実施するか、または単に統合Windows認証モジュールを含めずに war を作成し、再デプロイを行ってください。
<(展開したwar)>/WEB-INF/conf/im-sso-windows-config.xml ファイルを開きます。
<im-sso-windows-config>/<authentication>/<@enable> を false に設定します。
<?xml version="1.0" encoding="UTF-8"?> <im-sso-windows-config xmlns="http://www.intra-mart.jp/sso-windows/config/im-sso-windows-config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.intra-mart.jp/sso-windows/config/im-sso-windows-config ../schema/im-sso-windows-config.xsd"> <authentication enable="false"> <!-- enable="false" を設定 --> <parameter> <param-name>allow-guest-login</param-name> <param-value>false</param-value> </parameter> </authentication> </im-sso-windows-config><(展開したwar)>/WEB-INF/plugin/jp.co.intra_mart.foundation.security.certification.sso.user.provider.windows_8.0.0/plugin.xml ファイルを開きます。
<plugin>/<extension>/<sso-user-providers>/<@enable> を false に設定します(enable 属性がない場合、追加してください)
<?xml version="1.0" encoding="UTF-8"?> <plugin> <extension point="jp.co.intra_mart.foundation.security.certification.sso.user.providers"> <sso-user-providers id="jp.co.intra_mart.foundation.security.certification.sso.user.provider.windows" name="Windows SSO User Provider" version="8.0.0" rank="90" enable="false"> <!-- enable="false" を設定または追加 --> <sso-user-provider class="jp.co.intra_mart.foundation.security.certification.sso.WindowsSSOUserProvider"/> </sso-user-providers> </extension> </plugin><(展開したwar)>/WEB-INF/plugin/jp.co.intra_mart.foundation.admin.tenant.context.tenant.resolver.windows_8.0.1/plugin.xml ファイルを開きます。
<plugin>/<extension>/<tenant-id-resolvers>/<@enable> を false に設定します(enable 属性がない場合、追加してください)
<?xml version="1.0" encoding="UTF-8"?> <plugin> <extension point="jp.co.intra_mart.foundation.admin.tenant.context.tenant.resolvers"> <tenant-id-resolvers id="jp.co.intra_mart.foundation.admin.tenant.context.tenant.resolver.windows" name="Windows Tenant Id Resolver" version="8.0.1" rank="90" enable="false"> <!-- enable="false" を設定または追加 --> <!-- ドメインをテナントIDとするリゾルバー 参加しているドメインをテナントIDとして解決します。 --> <!--tenant-id-resolver class="jp.co.intra_mart.foundation.admin.tenant.context.DomainBasedWindowsTenantIdResolver"/--> <!-- 設定された固定値をテナントIDとするリゾルバー tenant_idパラメータに設定した値をテナントIDとして解決します。 --> <!--tenant-id-resolver class="jp.co.intra_mart.foundation.admin.tenant.context.FixedConfigBasedWindowsTenantIdResolver"> <init-param> <param-name>tenant_id</param-name> <param-value>default</param-value> </init-param> </tenant-id-resolver--> </tenant-id-resolvers> </extension> </plugin><(展開したwar)>/WEB-INF/plugin/jp.co.intra_mart.foundation.admin.tenant.context.tenant.validator.windows_8.0.1/plugin.xml ファイルを開きます。
<plugin>/<extension>/<tenant-id-validators>/<@enable> を false に設定します
<?xml version="1.0" encoding="UTF-8"?> <plugin> <extension point="jp.co.intra_mart.foundation.admin.tenant.context.tenant.validators"> <tenant-id-validators id="jp.co.intra_mart.foundation.admin.tenant.context.tenant.validator.windows" name="Windows TenantIdValidator" version="8.0.1" rank="100" enable="false"> <!-- enable="false" を設定 --> <tenant-id-validator class="jp.co.intra_mart.system.sso_windows.context.WindowsSSOTenantIdValidator"> <!-- テナントID解決必須チェック --> <init-param> <param-name>required_tenant_id</param-name> <param-value>true</param-value> </init-param> <!-- テナントID存在チェック --> <init-param> <param-name>valid_tenant_id</param-name> <param-value>true</param-value> </init-param> </tenant-id-validator> </tenant-id-validators> </extension> </plugin>コラム
intra-mart Accel Platform 2014 Spring(Granada) 以前の場合、<plugin>/<extension>/<tenant-id-validators>/<@id> 等の設定値が上記と異なる場合がありますが、手順通り enable=”false” を設定してください。
10.3.5. 統合Windows認証機能をリクエストに応じて無効化するには¶
以下のリクエストヘッダーを設定することで、統合Windows認証機能、テナントバリデーション機能を無効化することができます。
リクエストヘッダー 値 動作 x-jp-co-intra-mart-sso-windows-disable-authentication true 該当のリクエストにおいて統合Windows認証を行いません。 x-jp-co-intra-mart-sso-windows-disable-tenant-validation true 該当のリクエストにおいてテナントバリデーションを行いません。 注意
値には “true” を指定してください。その他の値を指定した場合の動作は保証しません。
10.3.5.1. Apache を使用して無効化する場合¶
Apache を利用して上記ヘッダーを設定するには、以下の手順を行ってください。
<%APACHE_HOME%/conf/httpd.conf> ファイルを開きます。
Dynamic Shared Object (DSO) Supportエリアに以下の設定を追加またはコメントアウトを外してください。
LoadModule headers_module modules/mod_headers.so下記設定を追加してください。
RequestHeader append x-jp-co-intra-mart-sso-windows-disable-authentication "true" RequestHeader append x-jp-co-intra-mart-sso-windows-disable-tenant-validation "true"Apache を再起動してください。
10.3.5.2. Internet Information Services(IIS) を使用して無効化する場合¶
IIS を利用して上記ヘッダーを設定するには、以下の手順を行ってください。
統合Windows認証機能を無効化したいサイト、「URL 書き換え」、「機能を開く」の順にクリックします。
![]()
「サーバ変数の表示」をクリックします。
![]()
「追加」をクリックします。
![]()
「サーバー変数名」に「HTTP_X_JP_CO_INTRA_MART_SSO_WINDOWS_DISABLE_AUTHENTICATION」を入力し、「OK」をクリックします。
![]()
同様に、サーバー変数「HTTP_X_JP_CO_INTRA_MART_SSO_WINDOWS_DISABLE_TENANT_VALIDATION」を追加します。
統合Windows認証機能を無効化したいサイト、「URL 書き換え」、「機能を開く」の順にクリックします。
![]()
Resin への振り分けルール(ここでは ReverseProxyInboundDynamic)を選択し、編集をクリックします。
![]()
「サーバー変数」の「追加」をクリックします。
![]()
以下の内容を入力し、「OK」をクリックします。
サーバー変数名
HTTP_X_JP_CO_INTRA_MART_SSO_WINDOWS_DISABLE_AUTHENTICATION
値
true
![]()
同様に、以下のサーバ変数を追加します。
サーバー変数名
HTTP_X_JP_CO_INTRA_MART_SSO_WINDOWS_DISABLE_TENANT_VALIDATION
値
true
「適用」をクリックします。
![]()
Internet Information Services(IIS) を再起動します。