使用集成Windows身份验证模块(2014 Spring 及之后版本)时,发生“401(Unauthorized)”和“12015 Unknown”的错误。

 
【发生条件】
使用Kerberos身份验证时发生。

【原因】
Internet Explorer(IE)进行Kerberos身份验证时失败。

【解决方法】
首先,前提是在Internet Information Services(IIS)中将静态内容设置为返回。
使用集成Windows身份验证时,此设置是必须的。请参阅以下的URL进行设置。

・IM-Workflow的申请画面、workflowOpenPage等仅特定的URL发生401错误时
请使用请求日志或浏览器开发工具等来确定发生HTTP 401错误的请求(URL)。
例如,发生401错误的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>。
其他,例如以下的URL“/im(5f)workflow(2f)common(2f)session(5f)timeout(5f)check(2f)session(5f)timeout(5f)check.jssps”发生401错误,同样在<no-authentication>标签下添加<path regex="false">/im(5f)workflow(2f)common(2f)session(5f)timeout(5f)check(2f)session(5f)timeout(5f)check.jssps</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">

      <!-- 将Domain作为TenantID的解析器
           将加入的Domain作为TenantID来解析。 -->
      <!--tenant-id-resolver class="jp.co.intra_mart.foundation.admin.tenant.context.DomainBasedWindowsTenantIdResolver"/-->

      <!-- 将设置的固定值作为TenantID的解析器
          将tenant_id参数中设置的值作为TenantID来解析。 -->
      <!--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">

      <!-- 将Domain作为TenantID的解析器
          将加入的Domain作为TenantID来解析。 -->
      <!--tenant-id-resolver class="jp.co.intra_mart.foundation.admin.tenant.context.DomainBasedWindowsTenantIdResolver"/-->

      <!-- 将设置的固定值作为TenantID的解析器
           将tenant_id参数中设置的值作为TenantID来解析。 -->
      <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>

请按实际情况更改文件中TenantID的“default”。

・不特定的URL发生401错误时
可能是Kerberos身份验证时发生的问题。
去除Internet Explorer(IE)的“工具”-“Internet 选项”的“详细设置”标签中“安全”的“使用集成Windows身份验证”的选项。
这样将使用NTLM身份验证替代Kerberos身份验证。
本公司已确认Firefox ESR 31.7默认使用的是NTLM身份验证,因此,请使用它来区分是否是Kerberos身份验证引起的问题。
另外,已确认Chrome 43.0.2357.81 m 及之后版本和Internet Explorer(IE)一样,默认使用的是Kerberos身份验证而不是NTLM身份验证,因此,请使用它来区分是否是浏览器引起的验证问题。

另外,使用集成Windows身份验证模块的版本是8.0.1_PATCH-001及之后版本、8.0.2_PATCH-001及之后版本、8.0.3_PATCH-001及之后版本的情况下,通过在conf\im-sso-windows-config.xml中添加以下设置,不用更改上述的Internet Explorer(IE)的设置就可以强制使用NTLM身份验证。
    <parameter>
      <param-name>waffle.servlet.spi.NegotiateSecurityFilterProvider/protocols</param-name>
      <param-value>NTLM</param-value>
    </parameter>

-- 适用对象 ----------------------------------------------------------------
iAP/Accel Platform/2014 Spring(Granada)及之后版本
--------------------------------------------------------------------------------


FAQID:532
这篇文章有帮助吗?
0 人中有 0 人觉得有帮助
由 Zendesk 提供技术支持