intra-mart IM-Workflow トラブルシューティング 第17版 2019-12-01

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 Explorer 、 Google Chrome 43.0.2357.81 m 以降の仕様です。

解決方法

ありません。

回避方法

  • Internet Information Services(IIS) にて静的コンテンツを返却するように設定を行ってください。

    統合Windows認証利用時にはこの設定は必須です。以下のURLを参考に設定を行ってください。

  • IM-Workflow の申請画面や workflowOpenPage などにて特定の URL のみが 401 になる場合

    1. 401 となっているリクエスト(URL)をリクエストログやブラウザの開発者ツール等にて特定してください。

    2. 例: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認証パス設定 を参照してください。
    3. 次に、添付 の ConstantConfigBasedWindowsTenantIdResolver.java を WEB-INF/classes/jp/co/intra_mart/foundation/admin/tenant/context 直下に配置してください。

    4. 最後に、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 認証が行われます。

復旧方法

ありません。