11.3. 統合Windows認証¶
項目
11.3.1. 概要¶
統合Windows認証機能は、ドメインコントローラ上の認証済みユーザと同じユーザコードをもつユーザで intra-mart Accel Platform アクセス時に、統合Windows認証済みユーザ情報を取得して自動ログインを行うことができる機能です。これにより、シングルサインオンを実現できます。注意
統合Windows認証は、 Internet Information Services(IIS) が必須です。注意
ログイン画面からのログインはサポートしません。詳しくは以下の制限を参照してください。
11.3.2. 前提条件¶
アプリケーションサーバには Resin を使用してください。
Resin を Windows Server 上で動作させる必要があります。
Resin を実行する Windows Server がドメインに参加している必要があります。
ブラウザは 「リリースノート」に記した Microsoft Edge を使用してください。
- 統合Windows認証モジュールが必要です。
- IM-Juggling 上で「追加機能」-「認証拡張機能」-「統合Windows認証モジュール」を選択し intra-mart Accel Platform を構築する必要があります。
- 統合Windows認証モジュールは、8.0.0-PATCH_001 以降のバージョンを使用してください。
注意
シングルサインオンを実現するためには、ドメインコントローラ上のユーザコードと intra-mart Accel Platform 上のユーザコードが一致している必要があります。注意
統合Windows認証機能には、ドメインコントローラ、統合Windows認証に対応したブラウザが必要です。注意
スマートフォンでの統合Windows認証機能の利用はサポートしておりません。注意
統合Windows認証は intra-mart Accel Platform の機能として Resin 上で実行されます。そのため、IIS の Windows 認証を無効化してください。その他認証は必要に応じて設定してください。
11.3.3. セットアップ¶
11.3.3.1. 統合Windows認証機能の設定¶
IM-Juggling で次の設定を行いwarファイルを作成してください。
機能の有効化の設定
<(プロジェクト名)/juggling.im>の「ベースモジュール」タブで統合Windows認証モジュール(im_sso_windows)を選択します。「設定ファイル」タブの統合Windows認証モジュールを選択しim-sso-windows-config.xmlを出力します。 <(プロジェクト名)/conf> 配下に出力されたim-sso-windows-config.xmlを開き<im-sso-windows-config>/<authentication>/<@enable> を true に設定します。テナント解決の設定(intra-mart Accel Platform 2014 Spring(Granada) 以降のみ)
認証対象となるテナントを解決する方法として plugin を採用しています。plugin の設定仕様については、「PluginManagerのAPIドキュメント」を参照してください。
intra-mart Accel Platform 2015 Spring(Juno) まで(統合Windows認証モジュールバージョン 8.0.3 まで)をご利用の場合
「plugin/jp.co.intra_mart.foundation.admin.tenant.context.tenant.resolver.windows_8.0.1」フォルダを作成し、そのフォルダ内に以下のようなplugin.xmlを配置してください。
<?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="true"> <!-- ドメインをテナント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>intra-mart Accel Platform 2015 Summer(Karen) 以降(統合Windows認証モジュールバージョン 8.0.4 以降)をご利用の場合
「plugin/jp.co.intra_mart.foundation.admin.tenant.context.tenant.resolver.windows_8.0.4」フォルダを作成し、そのフォルダ内に以下のようなplugin.xmlを配置してください。
<?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.4" rank="90" enable="true"> <!-- ドメインをテナント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--> <!-- 設定された固定値をテナントIDとするリゾルバー tenant_idパラメータに設定した値をテナントIDとして解決します。 FixedConfigBasedWindowsTenantIdResolver と違い、どのようなリクエストに対しても必ず設定値を返却します。 --> <tenant-id-resolver class="jp.co.intra_mart.foundation.admin.tenant.context.ConstantConfigBasedWindowsTenantIdResolver"> <init-param> <param-name>tenant_id</param-name> <param-value>default</param-value> </init-param> </tenant-id-resolver> </tenant-id-resolvers> </extension> </plugin>
<plugin>/<extension>/<tenant-id-resolvers>/<tenant-id-resolver>/<@class> に実装クラスを指定し、必要に応じて実装クラスにパラメータを設定します。
- 使用可能な実装クラス、および設定するパラメータについてはテナント解決プラグインの設定を参照してください。
以上で統合Windows認証機能の設定は終了です。
11.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.ConstantConfigBasedWindowsTenantIdResolver どのようなリクエストに対しても、設定された固定値をテナントIDとして解決します。intra-mart Accel Platform 2015 Summer(Karen) 以降(統合Windows認証モジュールバージョン 8.0.4 以降)でのみ利用可能です。
jp.co.intra_mart.foundation.admin.tenant.context.DomainBasedWindowsTenantIdResolver
ユーザが参加しているドメインをテナントIDとして解決します。本実装クラスに必要なパラメータはありません。
jp.co.intra_mart.foundation.admin.tenant.context.FixedConfigBasedWindowsTenantIdResolver
tenant_id パラメータを受け取り、その値をテナントIDとして解決します。下記の設定例では、「default」がテナントIDとして解決されます。統合Windows認証が無効化されたリクエストに対しては null を返却します<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>
jp.co.intra_mart.foundation.admin.tenant.context.ConstantConfigBasedWindowsTenantIdResolver
tenant_id パラメータを受け取り、その値をテナントIDとして解決します。下記の設定例では、「default」がテナントIDとして解決されます。FixedConfigBasedWindowsTenantIdResolver と違い、どのようなリクエストに対しても設定値を返却します。intra-mart Accel Platform 2015 Summer(Karen) 以降(統合Windows認証モジュールバージョン 8.0.4 以降)でのみ利用可能です。<tenant-id-resolver class="jp.co.intra_mart.foundation.admin.tenant.context.ConstantConfigBasedWindowsTenantIdResolver"> <init-param> <param-name>tenant_id</param-name> <param-value>default</param-value> </init-param> </tenant-id-resolver>コラム
intra-mart Accel Platform 2015 Summer(Karen) 以前(統合Windows認証モジュールバージョン 8.0.4 以前)では FixedConfigBasedWindowsTenantIdResolver, 以降では ConstantConfigBasedWindowsTenantIdResolver をご利用ください。
11.3.3.2. 統合Windows認証環境でWebサービスを利用する¶
統合Windows認証環境でWebサービスを利用するためには、以下の設定が必要です。IM-Juggling で次の設定を行いwarファイルを作成してください。
機能の有効化の設定
<(プロジェクト名)/juggling.im>の「ベースモジュール」タブでWebサービス 認証・認可(im_ws_auth)、Webサービス認証・認可クライアント(im_ws_auth_client)、Apache Axis2(axis2) を選択します。「設定ファイル」タブのwebサービス 認証・認可を選択しim-sso-windows-path-config/im-sso-windows-path-config_ws_auth.xmlを出力します。 <(プロジェクト名)/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>コラム
ベースモジュール選択時にWebサービスライブラリをチェックし依存関係を解消することでモジュールを探すことなく設定ファイルを出力可能です。
11.3.3.3. 統合Windows認証環境で外部ソフトウェア連携機能を利用する¶
統合Windows認証環境で外部ソフトウェア連携機能を利用するためには、以下の設定が必要です。IM-Juggling で次の設定を行いwarファイルを作成してください。
機能の有効化の設定
<(プロジェクト名)/juggling.im>の「ベースモジュール」タブで 外部連携認証 認可(imaca_provider)、外部連携クライアント(imaca_client)を選択します。「設定ファイル」タブの外部連携 認証・認可を選択しconf/im-sso-windows-path-config/im-sso-windows-path-config_imaca_provider.xmlを出力します。 <(プロジェクト名)/conf/im-sso-windows-path-config> 配下に出力されたim-sso-windows-path-config_imaca_provider.xmlを開き以下のようにコメントを外して、設定を有効化します。<no-authentication> <path>/HTTPActionEventListener</path> </no-authentication>
11.3.3.4. 「インターネット オプション」の設定¶
Microsoft Edge は「インターネット オプション」の設定を変更することにより、Windows にログインしているユーザで自動的に intra-mart Accel Platform にログインできます。
インターネット オプションを表示します。
コラム
ツールメニューが表示されていない場合、Alt キーを押すことで表示できます。コラム
インターネット オプションはコントロールパネルからも表示できます。「セキュリティ設定」画面を表示し「ローカル イントラネット」を選択ます。
「ローカル イントラネット」ゾーンの「サイト」画面を表示します。
「詳細設定ボタン」を押下して「詳細設定」画面を表示します。
intra-mart Accel Platform に該当するURLを追加します。
「ローカル イントラネット」ゾーンのレベルの「カスタマイズ」画面を表示します。
ユーザ認証の設定を変更します。
「イントラネットゾーンでのみ自動的にログオンする」を選択します。コラム
上記の設定を行うことで、Microsoft Edge 利用時に自動的にユーザ認証を行うことができます。
11.3.3.5. Keep-Alive の設定¶
統合Windows認証機能を利用するためには Keep-Alive を有効化する必要があります。
インターネット インフォメーション サービス (IIS) マネージャー より「IIS サーバ(ここでは WIN-QDQ41RVOU80)」「Application Request Routing Cache」「機能を開く」の順にクリックします。 「Server Proxy Settings...」をクリックし、「Application Request Routing」画面を表示します。 「Keep alive」チェックボックスをオンにします。さらに、「適用」をクリックし、設定を反映します。「imart」ディレクトリを選択後、「HTTP 応答ヘッダー」、「機能を開く」をクリックします。
「共通ヘッダーの設定」をクリックします。
「HTTP Keep-Alive を有効にする」チェックボックスをオンにします。
11.3.4. 統合Windows認証機能を無効化するには¶
統合Windows認証機能を無効化したい場合、以下の手順を実施するか、または単に統合Windows認証モジュールを含めずに war を作成し、再デプロイを行ってください。
IM-Juggling で次の設定を行いwarファイルを作成してください。
機能の無効化の設定
<(プロジェクト名)/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"> <parameter> <param-name>allow-guest-login</param-name> <param-value>false</param-value> </parameter> </authentication> </im-sso-windows-config>コラム
デフォルトではfalseが指定されています。 plugin配下にフォルダを作成(例:「jp.co.intra_mart.foundation.security.certification.sso.user.provider.windows_8.0.0.disable」)し、そのフォルダ内に以下のようなplugin.xmlを配置してください。version 属性にはすでに差し込まれているプラグイン ID の version 属性より大きい値を設定してください。<?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.1" rank="90" enable="false"> <sso-user-provider class="jp.co.intra_mart.foundation.security.certification.sso.WindowsSSOUserProvider"/> </sso-user-providers> </extension> </plugin> plugin配下にフォルダを作成(例:「jp.co.intra_mart.foundation.admin.tenant.context.tenant.resolver.windows_8.0.4.disable」)し、そのフォルダ内に以下のようなplugin.xmlを配置してください。version 属性にはすでに差し込まれているプラグイン ID の version 属性より大きい値を設定してください。<?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.5" rank="90" 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--> <!-- 設定された固定値をテナントIDとするリゾルバー tenant_idパラメータに設定した値をテナントIDとして解決します。 FixedConfigBasedWindowsTenantIdResolver と違い、どのようなリクエストに対しても必ず設定値を返却します。 --> <!--tenant-id-resolver class="jp.co.intra_mart.foundation.admin.tenant.context.ConstantConfigBasedWindowsTenantIdResolver"> <init-param> <param-name>tenant_id</param-name> <param-value>default</param-value> </init-param> </tenant-id-resolver--> </tenant-id-resolvers> </extension> </plugin> plugin配下にフォルダを作成(例:「jp.co.intra_mart.foundation.admin.tenant.context.tenant.validator.windows_8.0.1.disable」)し、そのフォルダ内に以下のようなplugin.xmlを配置してください。version 属性にはすでに差し込まれているプラグイン ID の version 属性より大きい値を設定してください。<?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.2" rank="100" 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>コラム
プラグイン配下に作成するフォルダ名は任意です。他のフォルダ名と重複することの無いようユニークな名称を設定してください。
11.3.5. 統合Windows認証機能をリクエストに応じて無効化するには¶
intra-mart Accel Platform 2014 Summer(Honoka) 以降では、以下のリクエストヘッダを設定することで、統合Windows認証機能、テナントバリデーション機能を無効化できます。
リクエストヘッダ 値 動作 x-jp-co-intra-mart-sso-windows-disable-authentication true 該当のリクエストにおいて統合Windows認証を行いません。 x-jp-co-intra-mart-sso-windows-disable-tenant-validation true 該当のリクエストにおいてテナントバリデーションを行いません。 注意
値には “true” を指定してください。その他の値を指定した場合の動作は保証しません。
11.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 を再起動してください。
11.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) を再起動します。
11.3.6. 統合Windows認証機能の認証失敗時に通常のログイン機能を利用するには¶
intra-mart Accel Platform 2014 Winter(Iceberg) 以降では、<(プロジェクト名)/conf> 配下に出力されている im-sso-windows-config.xml の allow-fallback-login パラメータに true を設定することで、統合Windows認証機能による認証に失敗したユーザは通常のログイン機能を使用できます。<?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="true"> <parameter> <param-name>allow-guest-login</param-name> <param-value>false</param-value> </parameter> <parameter> <param-name>allow-fallback-login</param-name> <param-value>true</param-value> </parameter> </authentication> </im-sso-windows-config>注意
本機能における、 統合Windows認証 機能の認証失敗の条件は以下のような場合です。
- ユーザ認証に使用されるユーザ名、パスワードがドメインコントローラー上のものと一致しない場合。
- 認証ダイアログによる認証要求をキャンセルした場合。
- ゲストログインが無効の場合に、ドメインコントローラー上のゲストユーザで認証をした場合。
注意
本機能有効時に 統合Windows認証 に失敗したユーザに対しては、以降セッションが破棄されるまで 統合Windows認証は行われません。
11.3.7. ケルベロス認証を無効化しNTLM認証を強制するには¶
NTLM認証を強制するには、以下の設定が必要です。IM-Juggling で次の設定を行いwarファイルを作成してください。
NTLM認証強制化の設定
「設定ファイル」タブの統合Windows認証モジュールを選択しim-sso-windows-config.xmlを出力します。 <(プロジェクト名)/conf配下に出力されたim-sso-windows-config.xmlを開き以下のようにコメントを外して、設定を有効化します。<parameter> <param-name>waffle.servlet.spi.NegotiateSecurityFilterProvider/protocols</param-name> <param-value>NTLM</param-value> </parameter>注意
本設定は以下のバージョンでのみ利用可能です。
- 統合Windows認証モジュールバージョン 8.0.1-PATCH_001 以降
- 統合Windows認証モジュールバージョン 8.0.2-PATCH_001 以降
- 統合Windows認証モジュールバージョン 8.0.3-PATCH_001 以降
- 統合Windows認証モジュールバージョン 8.0.4 以降
11.3.8. 統合Windows認証機能の認証失敗時にリダイレクトさせるには¶
intra-mart Accel Platform 2015 Winter(Lydia) 以降では、<(プロジェクト名)/conf> 配下に出力されている im-sso-windows-config.xml の redirect-on-authentication-failure パラメータに URL を設定することで、統合Windows認証機能による認証に失敗したユーザに指定した URL にリダイレクトさせることができます。<?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="true"> <parameter> <param-name>allow-guest-login</param-name> <param-value>false</param-value> </parameter> <parameter> <param-name>allow-fallback-login</param-name> <param-value>false</param-value> </parameter> <!--parameter> <param-name>waffle.servlet.spi.NegotiateSecurityFilterProvider/protocols</param-name> <param-value>NTLM</param-value> </parameter--> <parameter> <param-name>redirect-on-authentication-failure</param-name> <param-value></param-value> </parameter> </authentication> </im-sso-windows-config>注意
本機能における、統合Windows認証機能の認証失敗の条件は以下のような場合です。
- ユーザ認証に使用されるユーザ名、パスワードがドメインコントローラー上のものと一致しない場合。
- ゲストログインが無効の場合に、ドメインコントローラー上のゲストユーザで認証をした場合。
注意
本機能を利用して intra-mart Accel Platform へリダイレクトを行う場合、リダイレクト先の URL に対し統合Windows認証が行われます。これを避けたい場合、以下の機能等を用いて、リダイレクト先 URL に対する統合Windows認証を無効化してください。