4.28. 「401(Unauthorized)」や「12015 Unknown」エラーが発生する¶
関連する現象
4.28.1. 統合Windows認証モジュール利用時にエラーが発生する¶
コラム
当事象は FAQ にも同内容を掲載しています。
対象バージョン¶
iWP / iAF の場合
- 対象外
intra-mart Accel Platform の場合
- 2014 Spring(Granada) IM-Workflow 8.0.7 ~ 最新バージョン
現象¶
以下のタイミングで、「401(Unauthorized)」や「12015 Unknown」エラーが発生します。
- IM-Workflow の標準処理画面(申請画面など)の表示時や、標準処理画面を表示するための csjs「workflowOpenPage」の実行時
- 上記に限らず、不特定の URL へのアクセス時
条件¶
統合Windows認証モジュール(2014 Spring 以降)を利用し、かつ、ブラウザに Internet Explorer 、または Google Chrome 43.0.2357.81 m 以降を利用している。
解決方法¶
ありません。
回避方法¶
Internet Information Services(IIS) にて静的コンテンツを返却するように設定を行ってください。
統合Windows認証利用時にはこの設定は必須です。以下のURLを参考に設定を行ってください。
IM-Workflow の申請画面や workflowOpenPage などにて特定の URL のみが 401 になる場合
401 となっているリクエスト(URL)をリクエストログやブラウザの開発者ツール等にて特定してください。
- 例:URL が「/im_workflow/common/session_timeout_check/session_timeout_check」の場合
WEB-INF/conf/im-sso-windows-path-config/{任意のファイル名}.xml ファイルを作成します。<no-authentication> タグ直下に、 <path regex=”false”>/im_workflow/common/session_timeout_check/session_timeout_check</path> を追加します。コラム
設定例は 添付 の im-sso-windows-path-config_disable_auth.xml を参照してください。401 となるリクエストが他にもある場合、同様にその URL に対して <path> タグを追加してください。このファイルに追加した URL に対しては、統合Windows認証がかからなくなり、通常の AccelPlatform による認証が発生します。im-sso-windows-path-config については 統合Windows認証パス設定 を参照してください。次に、添付 の ConstantConfigBasedWindowsTenantIdResolver.java を WEB-INF/classes/jp/co/intra_mart/foundation/admin/tenant/context 直下に配置してください。
最後に、WEB-INF/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"> <!-- ドメインをテナント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>
- 変更後
<?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"> <!-- ドメインをテナント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.ConstantConfigBasedWindowsTenantIdResolver"> <init-param> <param-name>tenant_id</param-name> <param-value>default</param-value> </init-param> </tenant-id-resolver> </tenant-id-resolvers> </extension> </plugin>注意
上記の例は、テナントIDが「default」の場合の設定です。設定内容に応じて適宜変更してください。不特定の URL において 401 になる場合
Kerberos 認証において問題が発生している可能性があります。
Internet Explorer の「ツール」-「インターネット オプション」の「詳細設定」タブ中の「セキュリティ」セクションにある「統合 Windows 認証を利用する」のチェックを外してください。
これにより、Kerberos 認証の代わりにNTLM 認証が行われます。