启用安全性之后发生错误

如果在启用了安全性之后仍然遇到错误,请使用此信息。

注: 本主题引用了一个或多个应用程序服务器日志文件。作为另一种建议采用的方法,您可以在分布式系统和 IBM® i 系统上配置服务器以使用高性能可扩展日志记录 (HPEL) 记录和跟踪基础结构,而不使用 SystemOut.logSystemErr.logtrace.logactivity.log 文件。您还可以将 HPEL 与本机 z/OS® 日志记录设施结合使用。如果要使用 HPEL,那么可从服务器概要文件 bin 目录使用 LogViewer 命令行工具来访问所有日志和跟踪信息。有关使用 HPEL 的更多信息,请参阅有关使用 HPEL 对应用程序进行故障诊断的信息。
您遇到的是哪类错误?

[AIX Solaris HP-UX Linux Windows][IBM i]有关诊断和解决与安全性相关的问题的一般技巧,请参阅主题对安全性组件进行故障诊断

IBM 支持机构提供了一些文档和工具,可以帮助您收集在解决问题时所需要的信息,从而为您节省时间。打开问题报告前,请参阅“支持机构”页面:

访问 Web 页面时的认证错误

认证错误可能的原因包含:
  • 用户名或密码不正确。检查用户名和密码并确保它们是正确的。
  • 安全性配置错误:未正确设置用户注册表类型。检查管理控制台的 管理安全性 设置中的用户注册表属性。验证该用户注册表属性是否为期望的用户注册表。
  • 内部程序错误。如果客户机应用程序是 Java™ 独立程序,那么此程序可能没有正确收集或发送凭证信息。

[AIX Solaris HP-UX Linux Windows][IBM i]如果用户注册表配置、用户标识和密码显示正确,请使用 WebSphere Application Server 跟踪来确定问题的原因。要启用安全性跟踪,请使用 com.ibm.ws.security.*=all=enabled 跟踪规范。

访问 Web 页面时的权限错误

如果某用户应有权访问资源但实际上没有,那么可能是忽略了某个配置步骤。复审授予管理角色访问权

应明确执行:
  • 检查所访问 Web 资源的必需角色。
  • 检查授权表,确保用户或用户所属的组被指定了必需角色中的一个角色。
  • 查看 Web 资源的部署描述符中 Web 资源的必需角色。
  • 使用管理控制台查看包含 Web 资源的应用程序的授权表。
  • 测试授予了必需角色的用户,查看该用户是否可访问问题资源。
  • 如果要求该用户具有一个或多个必需角色,那么使用管理控制台为该用户指定必需的角色,然后停止应用程序,再重新启动它。

[AIX Solaris HP-UX Linux Windows][IBM i]如果该用户已获得必需角色,但仍无法访问受保护的资源,请使用 com.ibm.ws.security.*=all=enabled 作为跟踪规范来启用安全性跟踪。收集跟踪信息以获得进一步的解决。

当客户机与服务器之间的代码页不同时,认证将失败

当客户机使用与服务器不同的代码页,并且在基本认证期间将非美国 ASCII 字符用于用户标识和密码时,登录将不会成功。HTTP 头不包含转换编码数据所需的编码方法信息,因此服务器不知道如何正确地解码信息。
使用依赖于 POST 参数的登录形式,POST 参数位于 HTML 主体文本中。文本的编码由浏览器发送,因此能够正确地进行解码。
注: Web Service 客户无法使用表单登录来解决此问题。用户必须确保客户机与服务器之间的代码页一致。

错误消息:CWSCJ0314E: 当前 Java 2 安全策略报告了服务器上可能的违例

如果您在服务器上找到类似于下列的错误:
错误消息:CWSCJ0314E: 当前 Java 2 安全策略报告了 Java 2 安全许可权可能的违例。请参阅 Problem Determination Guide 以了解更多信息。{0} 许可权:{1} 代码:{2}{3} 堆栈跟踪:{4} 代码库位置:{5}
Java 安全管理器 checkPermission 方法报告了 SecurityException 异常。

报告的异常对于安全系统可能十分关键。请打开安全性跟踪以确定可能违反了安全策略的代码。在确定违例代码之后,请通过检查所有适用的 Java 2 安全策略文件和应用程序代码,验证 Java 2 安全性是否允许尝试的操作。

通过将 RAS 跟踪配置为调试方式或者指定 Java 属性来启用更详细的报告。
  • [AIX Solaris HP-UX Linux Windows][IBM i]检查“跟踪和记录配置”一文,以了解如何将可靠性可用性可维护性 (RAS) 配置为调试方式的指示信息,或
  • 从管理控制台依次选择服务器 > 服务器类型 > WebSphere 应用程序服务器 > server_name > Java 和进程管理 > 进程定义 > Java 虚拟机窗格,在“通用 JVM 参数”窗格中指定下列属性:
    • 添加 java.security.debug 运行时标志
    • 有效值:
      access
      打印所有调试信息(包括所需的许可权、代码、堆栈和代码库位置)。
      stack
      打印调试信息,包括必需的许可权、代码和堆栈。
      failure
      打印调试信息,包括必需和许可权和代码。

要复审 Java 安全策略,请参阅 Java 2 安全性文档 ( http://www.ibm.com/developerworks/java/jdk/security/)。

提示:如果应用程序正与 Java 邮件应用程序编程接口 (API) 一起运行,那么此消息可能是良性的。您可以更新 installed Enterprise Application root/META-INF/was.policy 文件以对应用程序授予下列许可权:
  • permission java.io.FilePermission "${user.home}${/}.mailcap", "read";
  • permission java.io.FilePermission "${user.home}${/}.mime.types", "read";
  • permission java.io.FilePermission "${java.home}${/}lib${/}mailcap", "read";
  • permission java.io.FilePermission "${java.home}${/}lib${/}mime.types", "read";

启动应用程序服务器时,SystemOut.log 中显示“错误消息:CWMSG0508E: JMS 服务器安全服务无法认证用户标识:”错误

如果先安装 Java 消息服务 (JMS) API 样本,然后启用安全性,就有可能会产生此错误。可以遵循相应 JMS 样本文档中的“配置和运行”页面中的指示信息来配置样本,以使用 WebSphere Application Server 安全性。

可以通过启动安装程序,选择定制并浏览在“选择您要安装的功能部件”窗格中已安装的组件,来验证消息驱动的 Bean 样本的安装。JMS 样本在“嵌入式消息传递”下显示为“消息驱动的 Bean 样本”。

还可以通过使用管理控制台打开包含样本的应用程序服务器的属性来验证此安装。选择 MDBSamples 并单击卸载。

启用安全性并启动应用程序服务器后,出现“错误消息:CWSCJ0237E: 一个或多个重要 LTPAServerObject 配置属性为空或不可用”

此错误消息会在选择轻量级第三方认证 (LTPA) 作为认证机制但不生成 LTPA 密钥时产生。LTPA 密钥对 LTPA 令牌进行加密。

要解决此问题,请执行以下操作:
  1. 单击安全性 > 全局安全性 > 认证 > 认证机制和到期 > LTPA
  2. 输入密码,它可以是任何字符。
  3. 在“确认密码”中输入同一密码。
  4. 单击“应用”。
  5. 单击“生成密钥”。
  6. 单击“保存”。

在 SystemOut.log 中报告了 AccessControlException 异常

此问题与 WebSphere Application Server 的 Java 2 安全性功能部件(在 WebSphere Application Server 中实现的 API 级别安全框架)相关。会显示类似于以下示例的异常。此错误消息和数量可改变。
[AIX Solaris HP-UX Linux Windows]
CWSRV0020E: [Servlet Error]-[validator]: Failed to load servlet: 
java.security.AccessControlException: access denied 
(java.io.FilePermission 
app_server_root/systemApps/isclite.ear/isclite.war/WEB-INF/validation.xml read) 
[z/OS]
CWSRV0020E: [Servlet Error]-[validator]: Failed to load servlet: 
java.security.AccessControlException: access denied  
(java.io.FilePermission 
/WebSphere/V6R1M0/AppServer/systemApps/isclite.ear/isclite.war/WEB-INF/validation.xml read)
[IBM i]
CWSRV0020E: [Servlet Error]-[validator]: Failed to load servlet: 
java.security.AccessControlException: access denied  
(java.io.FilePermission 
app_server_root/systemApps/isclite.ear/isclite.war/WEB-INF/validation.xml read)

[AIX Solaris HP-UX Linux Windows][IBM i]有关 Java 2 安全性的说明、如何及为何将其启用或禁用、它如何与策略文件相关以及如何编辑策略文件,请参阅此信息中心导航中的 Java 2 安全性 主题。本主题说明不仅此产品使用 Java 2 安全性,开发者也可以实现它以用于他们的业务应用程序。 如果客户机尝试访问 WebSphere Application Server 主管的资源时产生此异常,那么管理员可能需要让开发人员介入。

这些错误可能的原因包含:
  • 策略文件中的语法错误。
  • 捆绑在 .rar 文件中的 ra.xml 文件的许可权指定的语法错误。这种情况适用于支持对 CICS® 或其他资源的连接器访问的资源适配器。
  • 应用程序在策略文件或捆绑在 .rar 文件中的 ra.xml 文件的许可权指定中缺少指定的许可权。
  • 未正确设置类路径,使得无法为服务提供程序接口 (SPI) 正确地创建对 resource.xml 文件的许可权。
  • 应用程序调用的库或应用程序缺少支持访问资源的 doPrivileged 块。
  • 在错误的策略文件中指定许可权。
要解决这些问题,请执行以下操作:
  • 检查所有相关的策略文件,以验证是否指定显示在异常中的许可权,例如 java.io.FilePermission。
  • 在报告语法错误详细信息的 SystemOut.log 文件中查找相关的 ParserException 异常。
    [AIX Solaris HP-UX Linux Windows]例如:
    CWSCJ0189E: Caught ParserException while creating template for application policy
    
    profile_root/config/cells/cell_name/nodes/node_name/app.policy
    [z/OS]
    CWSCJ0189E: Caught ParserException while creating template for application policy
    
    /WebSphere/V6R1M0/AppServer1/profiles/profile_name/config/cells/cell_name/nodes/node_name/app.policy.
    [IBM i]
    CWSCJ0189E: Caught ParserException while creating template for application policy
    
    profile_root/config/cells/cell_name/nodes/node_name/app.policy
    其中:
    • [z/OS]V6R1M0 表示您正在使用的 WebSphere Application Server 的版本。
    • cell_name 表示单元的名称。
    • profile_name 表示概要文件的名称。
    • node_name 表示节点的名称。
    此异常是 com.ibm.ws.security.util.ParserException: line 18: expected ';', found 'grant'
  • 查找类似于此消息的消息:CWSCJ0325W: 未解析策略文件中指定的许可权 permission
  • 检查调用堆栈以确定哪个方法没有许可权。识别此方法的类路径。如果很难识别此方法,那么启用 Java2 安全性报告。
    • [AIX Solaris HP-UX Linux Windows][IBM i]通过指定 com.ibm.ws.security.core.*=all=enabled 或指定 Java property.java.security.debug 属性来配置 RAS 跟踪。java.security.debug 属性的有效值为:
      access
      打印调试信息,包括:必需的许可权、代码、堆栈和代码库位置。
      stack
      打印调试信息,包括:必需的许可权、代码和堆栈。
      failure
      打印调试信息,包括:必需的许可权和代码。
    • 此报告显示:
      Permission
      缺少的许可权。
      Code
      指示哪个方法存在问题。
      Stack Trace
      发生访问违例的位置。
      CodeBaseLocation
      每个堆栈帧的详细信息。
      [AIX Solaris HP-UX Linux Windows]通常,许可权和代码足以识别此问题。以下示例说明了一个报告:
      Permission: 
      app_server_root/logs/server1/SystemOut_02.08.20_11.19.53.log : 
      access denied (java.io.FilePermission 
      app_server_root/logs/server1/SystemOut_02.08.20_11.19.53.log delete) 
      
      Code: 
       com.ibm.ejs.ras.RasTestHelper$7  in  
      {file:app_server_root/installedApps/app1/JrasFVTApp.ear/RasLib.jar
      } 
      
      Stack Trace: 
      
      java.security.AccessControlException: access denied (java.io.FilePermission 
      app_server_root/logs/server1/SystemOut_02.08.20_11.19.53.log delete
      ) 
              at java.security.AccessControlContext.checkPermission
                                    (AccessControlContext.java(Compiled Code)) 
              at java.security.AccessController.checkPermission
                                    (AccessController.java(Compiled Code))
              at java.lang.SecurityManager.checkPermission
                                    (SecurityManager.java(Compiled Code)) 
                                     . 
      Code Base Location: 
      
      com.ibm.ws.security.core.SecurityManager : 
      file:/app_server_root/plugins/com.ibm.ws.runtime_6.1.0.jar
      
        ClassLoader: com.ibm.ws.bootstrap.ExtClassLoader 
        Permissions granted to CodeSource 
      (file:/app_server_root/plugins/com.ibm.ws.runtime_6.1.0.jar <no certificates>
      
        { 
          (java.util.PropertyPermission java.vendor read); 
          (java.util.PropertyPermission java.specification.version read); 
          (java.util.PropertyPermission line.separator read); 
          (java.util.PropertyPermission java.class.version read); 
          (java.util.PropertyPermission java.specification.name read); 
          (java.util.PropertyPermission java.vendor.url read); 
          (java.util.PropertyPermission java.vm.version read); 
          (java.util.PropertyPermission os.name read); 
          (java.util.PropertyPermission os.arch read); 
         } 
         ( This list continues.)
      [z/OS]
      Permission: 
      /WebSphere/AppServer/logs/server1/SystemOut_02.08.20_11.19.53.log : 
      access denied (java.io.FilePermission 
      WebSphere/AppServer/logs/server1/SystemOut_02.08.20_11.19.53.log delete) 
      
      Code: 
       com.ibm.ejs.ras.RasTestHelper$7  in  
      {file:/WebSphere/AppServer/installedApps/app1/JrasFVTApp.ear/RasLib.jar} 
      
      Stack Trace: 
      
      java.security.AccessControlException: access denied (java.io.FilePermission 
      
      /WebSphere/AppServer/logs/server1/SystemOut_02.08.20_11.19.53.log delete) 
              at java.security.AccessControlContext.checkPermission
                                    (AccessControlContext.java(Compiled Code)) 
              at java.security.AccessController.checkPermission
                                    (AccessController.java(Compiled Code))
              at java.lang.SecurityManager.checkPermission
                                    (SecurityManager.java(Compiled Code)) 
                                     . 
      Code Base Location: 
      
      com.ibm.ws.security.core.SecurityManager : 
      
      file:/WebSphere/AppServer/lib/securityimpl.jar
        ClassLoader: com.ibm.ws.bootstrap.ExtClassLoader 
        Permissions granted to CodeSource 
      (file:/WebSphere/AppServer/lib/securityimpl.jar <no certificates>
        { 
          (java.util.PropertyPermission java.vendor read); 
          (java.util.PropertyPermission java.specification.version read); 
          (java.util.PropertyPermission line.separator read); 
          (java.util.PropertyPermission java.class.version read); 
          (java.util.PropertyPermission java.specification.name read); 
          (java.util.PropertyPermission java.vendor.url read); 
          (java.util.PropertyPermission java.vm.version read); 
          (java.util.PropertyPermission os.name read); 
          (java.util.PropertyPermission os.arch read); 
         } 
         ( This list continues.)
      [IBM i]
      Permission: 
      profile_root/logs/server1/SystemOut_02.08.20_11.19.53.log : 
      access denied (java.io.FilePermission 
      profile_root/logs/server1/SystemOut_02.08.20_11.19.53.log delete) 
      
      Code: 
       com.ibm.ejs.ras.RasTestHelper$7  in  
      {file:profile_root/installedApps/app1/JrasFVTApp.ear/RasLib.jar
      } 
      
      Stack Trace: 
      
      java.security.AccessControlException: access denied (java.io.FilePermission 
      profile_root/logs/server1/SystemOut_02.08.20_11.19.53.log delete
      ) 
              at java.security.AccessControlContext.checkPermission
                                    (AccessControlContext.java(Compiled Code)) 
              at java.security.AccessController.checkPermission
                                    (AccessController.java(Compiled Code))
              at java.lang.SecurityManager.checkPermission
                                    (SecurityManager.java(Compiled Code)) 
                                     . 
      Code Base Location: 
      
      com.ibm.ws.security.core.SecurityManager : 
      file:app_server_root/plugins/com.ibm.ws.runtime_6.1.0.jar
      
        ClassLoader: com.ibm.ws.bootstrap.ExtClassLoader 
        Permissions granted to CodeSource 
      (file:app_server_root/plugins/com.ibm.ws.runtime_6.1.0.jar <no certificates>
        { 
          (java.util.PropertyPermission java.vendor read); 
          (java.util.PropertyPermission java.specification.version read); 
          (java.util.PropertyPermission line.separator read); 
          (java.util.PropertyPermission java.class.version read); 
          (java.util.PropertyPermission java.specification.name read); 
          (java.util.PropertyPermission java.vendor.url read); 
          (java.util.PropertyPermission java.vm.version read); 
          (java.util.PropertyPermission os.name read); 
          (java.util.PropertyPermission os.arch read); 
         } 
         ( This list continues.)
      Permission: 
      profile_root/logs/server1/SystemOut_02.08.20_11.19.53.log : 
      access denied (java.io.FilePermission 
      profile_root/logs/server1/SystemOut_02.08.20_11.19.53.log delete) 
      
      Code: 
       com.ibm.ejs.ras.RasTestHelper$7  in  
      {file:profile_root/installedApps/app1/JrasFVTApp.ear/RasLib.jar} 
      
      Stack Trace: 
      
      java.security.AccessControlException: access denied (java.io.FilePermission 
      
      profile_root/logs/server1/SystemOut_02.08.20_11.19.53.log delete) 
              at java.security.AccessControlContext.checkPermission
                                    (AccessControlContext.java(Compiled Code)) 
              at java.security.AccessController.checkPermission
                                    (AccessController.java(Compiled Code))
              at java.lang.SecurityManager.checkPermission
                                    (SecurityManager.java(Compiled Code)) 
                                     . 
      Code Base Location: 
      
      com.ibm.ws.security.core.SecurityManager : 
      
      file:app_server_root/plugins/com.ibm.ws.runtime_6.1.0.jar
        ClassLoader: com.ibm.ws.bootstrap.ExtClassLoader 
        Permissions granted to CodeSource 
      (file:app_server_root/plugins/com.ibm.ws.runtime_6.1.0.jar <no certificates>
        { 
          (java.util.PropertyPermission java.vendor read); 
          (java.util.PropertyPermission java.specification.version read); 
          (java.util.PropertyPermission line.separator read); 
          (java.util.PropertyPermission java.class.version read); 
          (java.util.PropertyPermission java.specification.name read); 
          (java.util.PropertyPermission java.vendor.url read); 
          (java.util.PropertyPermission java.vm.version read); 
          (java.util.PropertyPermission os.name read); 
          (java.util.PropertyPermission os.arch read); 
         } 
         ( This list continues.)
      Permission: 
      profile_root
      /logs/server1/SystemOut_02.08.20_11.19.53.log : 
      access denied (java.io.FilePermission 
      profile_root
      /logs/server1/SystemOut_02.08.20_11.19.53.log delete) 
      
      Code: 
       com.ibm.ejs.ras.RasTestHelper$7  in  
      {file:profile_root
      /installedApps/app1/JrasFVTApp.ear/RasLib.jar} 
      
      Stack Trace: 
      
      java.security.AccessControlException: access denied (java.io.FilePermission 
      
      profile_root
      /logs/server1/SystemOut_02.08.20_11.19.53.log delete) 
              at java.security.AccessControlContext.checkPermission
                                    (AccessControlContext.java(Compiled Code)) 
              at java.security.AccessController.checkPermission
                                    (AccessController.java(Compiled Code))
              at java.lang.SecurityManager.checkPermission
                                    (SecurityManager.java(Compiled Code)) 
                                     . 
      Code Base Location: 
      
      com.ibm.ws.security.core.SecurityManager : 
      
      file:app_server_root/plugins/com.ibm.ws.runtime_6.1.0.jar
        ClassLoader: com.ibm.ws.bootstrap.ExtClassLoader 
        Permissions granted to CodeSource 
      (file:app_server_root/plugins/com.ibm.ws.runtime_6.1.0.jar <no certificates>
        { 
          (java.util.PropertyPermission java.vendor read); 
          (java.util.PropertyPermission java.specification.version read); 
          (java.util.PropertyPermission line.separator read); 
          (java.util.PropertyPermission java.class.version read); 
          (java.util.PropertyPermission java.specification.name read); 
          (java.util.PropertyPermission java.vendor.url read); 
          (java.util.PropertyPermission java.vm.version read); 
          (java.util.PropertyPermission os.name read); 
          (java.util.PropertyPermission os.arch read); 
         } 
         ( This list continues.)
      其中:
      • app1 表示应用程序的名称。
      • app_server_root 表示 WebSphere Application Server WebSphere Application Server Network Deployment 的安装根目录。
      • profile_root 表示系统中特定概要文件的位置和名称。
      • profile1 或 profile_name 表示概要文件的名称。
      • server1 或 server_name 表示应用程序服务器的名称。
  • 如果此方法是 SPI,那么检查 resources.xml 文件以确保类路径正确。
  • 要确认正确装入所有策略文件,或授予每个类路径什么许可权,可使用 com.ibm.ws.security.policy.*=all=enabled 启用跟踪。所有已装入的许可权都列出在 trace.log 文件中。搜索 app.policywas.policyra.xml 文件。要检查类路径的许可权列表,请在“有效策略”中搜索 classpath
  • 如果策略文件或 ra.xml 文件中有任何语法错误,那么使用策略工具更正它们。请避免手动编辑策略,因为这会导致语法错误。

  • 如果许可权列为未解析,那么它不生效。验证指定的许可权名称是否正确。
  • 如果 resource.xml 文件中指定的类路径不正确,那么更正它。
  • 如果在策略文件或 ra.xml 文件中不存在必需的许可权,那么检查应用程序代码以查看是否需要添加此许可权。如果需要添加,那么将它添加到正确的策略文件或 ra.xml 文件。
  • 如果没有对访问此资源的特定方法之外的方法授予许可权,那么修改代码需要以使用 doPrivileged 块。
  • [AIX Solaris HP-UX Linux Windows][IBM i]如果在策略文件或 ra.xml 文件中确实存在此许可权并且正确装入了该许可权,但类路径在它的列表中仍没有许可权,那么此许可权的位置可能不正确。请仔细阅读此信息中心导航中的Java 2 安全性,以确定应在哪个策略文件或 ra.xml 文件中指定该许可权。
提示:如果应用程序与 Java 邮件 API 一起运行,那么您可以更新 installed Enterprise Application root/META-INF/was.policy 文件以授予应用程序以下许可权:
  • permission java.io.FilePermission "${user.home}${/}.mailcap", "read";
  • permission java.io.FilePermission "${user.home}${/}.mime.types", "read";
  • permission java.io.FilePermission "${java.home}${/}lib${/}mailcap", "read";
  • permission java.io.FilePermission "${java.home}${/}lib${/}mime.types", "read";

由于以下异常 {1} 而出现“错误消息:CWSCJ0336E: 用户 {0} 的认证失败”

如果在轻量级目录访问协议 (LDAP) 用户注册表中找不到所指示的用户标识,就会产生此错误消息。要解决此问题,请执行以下操作:
  1. 验证您的用户标识和密码是否正确。
  2. 验证注册表中是否存在用户标识。
  3. 验证基本专有名称 (DN) 是否正确。
  4. 验证用户过滤器是否正确。
  5. 验证绑定 DN 和绑定 DN 的密码是否正确。如果未指定绑定 DN 和密码,那么添加缺少的信息并重试。
  6. 验证主机名和 LDAP 类型是否正确。
如果问题还存在,那么向管理员查询有关用户注册表的事宜。

错误消息:初始化安全性时发生意外的异常,collaborator.java.lang.SecurityException: AuthConfigFactory error: java.lang.ClassNotFoundException: org.apache.geronimo.components.jaspi.AuthConfigFactoryImpl

如果 java.security 文件缺少 JASPI 提供程序的条目,那么将显示此错误消息。java.security 文件的缺省位置为 install_dir/properties。编辑 java.security 文件并向其中添加以下行:
#
# 缺省 JASPI 工厂实现类的标准类名。
#
authconfigprovider.factory=com.ibm.ws.security.jaspi.ProviderRegistry
注: 仅在您对配置进行显式设置以使用该类的情况下,才会显示此错误。否则,您可能会看到以下错误消息 SECJ8032W。

错误消息:SECJ8032W: 使用缺省 JASPI 工厂实现类时 AuthConfigFactory 未定义

如果未定义 JASPI 工厂实现,那么将显示此错误消息。缺省 JASPI 工厂实现已在服务器运行时中进行设置。但是,JASPI 可能无法用于客户机。

要解决此问题,请在 java.security 文件中将缺省 JASPI 工厂实现类的标准类名设置为属性 authconfigprovider.factory 的值,如以下示例中所示:
#
# 缺省 JASPI 工厂实现类的标准类名。
#
authconfigprovider.factory=com.ibm.ws.security.jaspi.ProviderRegistry

错误消息:SECJ0352E: 无法使用户与模式 {0} 相匹配,因为发生了以下异常 {1}

外部用户帐户存储库已损坏或不可用,并且 WebSphere Application Server 无法认证存储库中的用户名时,将显示此认证失败消息。通常,在认证错误消息后面会显示附加信息,表明问题的性质或根本原因,例如:

请确保注册表中存在用户匹配的模式。如果问题仍然存在,请联系您的服务代表。

如果用户帐户存储库已损坏或 WebSphere Application Server 与外部用户帐户存储库之间的用户连接已断开,那么此附加信息可能不会提供明确的用户操作。外部用户帐户存储库(在本文档中称为存储库)可能是轻量级目录访问协议 (LDAP) 产品。
要解决此问题,可能需要重新安装存储库并通过测试连接来验证安装是否成功。
警告:
仅当您已确定所有与 WebSphere Application Server 相关的配置设置都正确时,才能继续以下步骤。
完成以下步骤以解决该问题:
  1. 重新启动存储库和 WebSphere Application Server
  2. 测试与存储库的连接。如果连接尝试仍失败,那么可能需要重新安装存储库。
  3. 如果随存储库提供了诊断,那么运行诊断以避免必须重新安装存储库。
    注意: 如果前面的步骤不能解决问题,那么可能需要重新安装存储库。继续之前,请生成所有已配置用户和组的完整列表;重新安装之后,将需要重新填写这些字段。
  4. 如有必要,请重新安装已毁坏的存储库。
  5. 将列表中的用户和组填充到刚刚安装的存储库中。
  6. 重新启动存储库和 WebSphere Application Server
  7. 在管理控制台中,浏览至安全性 > 全局安全性并选择相应的用户帐户存储库。例如,如果您正在使用独立的轻量级目录访问协议存储库,请选择“独立 LDAP 注册表”。
  8. 单击测试连接以确保 WebSphere Application Server 可以连接到该存储库。

密钥或令牌类型无效导致 LTPA 令牌验证失败

如果 LTPA 令牌的安全上下文反序列化失败并抛出包含消息密钥或令牌类型无效导致 LTPA 令牌验证失败的 WSSecurityException,请将 com.ibm.websphere.security.recoverContextWithNewKeys 属性设置为 true

使用 Profile Management Tool 来创建新概要文件时生成密钥错误

使用 Profile Management Tool 或命令行 manageprofiles 实用程序创建新概要文件时,会显示一条错误消息,表明部分成功或失败。位于 install_dir/logs/manageprofiles/profile_name_create.log 文件中的错误消息可能指明 generateKeysforSingleProfile 任务或 or the generateKeysForCellProfile 服务发生错误。

概要文件创建工具和 manageprofiles 实用程序调用几个任务。创建独立应用程序服务器或 Deployment Manager 概要文件时,将调用 generateKeysForSingleProfile 任务。创建单元概要文件时,将调用 generateKeysForCellProfile 任务。这两个任务是调用 Wsadmin 命令之前的任务。虽然日志表明其中一个任务发生错误,但实际上可能是 wsadmin 命令失败导致错误,而不是安全性任务发生错误。

要确定问题的实际原因,请复审下列日志文件中提供的信息:

  • install_dir/logs/manageprofiles/profile_name_create.log 文件指示失败的错误代码
  • install_dir/logs/manageprofiles/profile_name/keyGeneration.log 文件
  • install_dir/logs/manageprofiles/profile_name/wsadminListener.log 文件

LDAP 在其中启用了 Tivoli Access Manager 的受保护应用程序无法立即使用某些安全角色

在某些情况下,当您部署 LDAP 在其中启用了 Tivoli® Access Manager 的受保护应用程序时,可能无法立即使用某些安全角色。

您可能会看到类似以下异常的错误:
"Exception: java.lang.OutOfMemoryError"
可通过执行以下操作来解决此问题:
  1. 根据最小和最大 Java 堆大小来分配较多内存。
    1. 在管理控制台中,选择服务器 > 服务器类型 > WebSphere 应用程序服务器 > server1
    2. 选择服务器基础结构 > Java 和进程管理 > 进程定义
    3. 选择 Java 虚拟机。
    4. 将初始堆大小设为 512 MB,并将最大堆大小设为 1024 MB。
    5. 选择确定,然后选择保存
    6. 重新启动 WebSphere Application Server
  2. WebSphere Application Sever 处于停止状态时,请对嵌入式 Tivoli Access Manager 添加一些性能调整属性。
    1. config/cells/CELLNAME 目录中,编辑 amwas.amjacc.template.properties 文件,在其中添加以下属性:
      com.tivoli.pd.as.jacc.DBRefresh=0
      com.tivoli.pd.as.jacc.AuthTableRemoteMode=yes
      com.tivoli.pd.as.rbpf.NoUncheckedRoles=true

      重新配置嵌入式 Tivoli Access Manager 时,这很有用

    2. 由于已配置嵌入式 Tivoli Access Manager,因此您可以使用以上提供的属性更新所生成的配置文件。对于 ND 中的每个 WebSphere Application Server 实例(dmgr、NA 及服务器),请转至 profiles/NAME/etc/tam 目录并执行以下操作。
      对于每个以 amjacc.properties 结尾的文件,请添加给定的 3 个属性:
      com.tivoli.pd.as.jacc.DBRefresh=0
      com.tivoli.pd.as.jacc.AuthTableRemoteMode=yes
      com.tivoli.pd.as.rbpf.NoUncheckedRoles=true

      对于每个以 pdperm.properties 结尾的文件,请将 appsvr-dbrefresh 属性更新成:appsvr-dbrefresh=0

      对于每个以 authztable.pdperm.properties 结尾的文件,请将 appsvr-mode 属性更新为:appsvr-mode=remote

  3. 重新启动单元。

将域的领域设置为不可信后,无法使用全局安全性设置

如果从管理控制台中添加可信的域领域,但稍后决定将此领域设置为“不可信”,那么 domain-security.xml 文件中可能会生成空的 inboundTrustedAuthenticationRealm 条目。domain-security.xml 文件中此空的入站或出站可信领域定义将阻止该域使用全局安全性设置。

要解决此问题,请执行以下操作:
  1. 移除当前域。
  2. 创建新域。
  3. 不要将不正确的领域添加为“可信”。

更新后的全局安全性域名称重复

更新全局安全性域名后,应用程序安全域的域名也将使用相同域名进行更新

在 WebSphere Application Server V8.0 中,除了具有全局级别的实例外,您还可以在多安全域环境中的域级别配置联合存储库的唯一实例。但是,如果已在全局级别配置联合存储库用户注册表,或者配置安全域后在全局级别更改了域名,那么所有使用联合存储库的安全域的域名也将进行更新。这会导致所有使用联合存储库的域都使用在全局级别定义的联合存储库。

要解决此问题,在创建联合存储库或在全局级别更改域名后,请使用原始域名更新使用联合存储库的安全域。如果全局级别的联合存储库是在您配置安全域中的联合存储库之前配置的,那么可以避免发生此问题。

注: 在 FP2 中,更新全局安全性域名后,应用程序安全域的域名不会使用相同的域名进行更新。

启用会话安全性功能时可能会发生错误

启用会话安全性功能(此为 WebSphere Application Server V8.0 中的缺省功能),并且多个会话正在使用同一用户标识时,如果某个用户注销了一个会话,那么当已使用同一用户标识登录的其他用户注销时另一个会话可能会接收到以下错误:
SESN0008E: 认证为匿名的用户已尝试访问用户 {<user>} 所拥有的会话

要解决此问题,请确保先前用户已注销,然后另一个用户再使用同一用户标识登录。

避免故障 避免故障: 即使未启用会话安全性功能,此问题也可能在某些情况下发生。如果遇到了此情况,那么解决方法相同,即确保先前用户已注销,然后另一个用户再使用同一用户标识登录。gotcha
[z/OS]

ABEND WITH ABEND EC3 REASON=020F2001

如果在安装 WebSphere Application Server for z/OS 时未立即对 zPMT 对话或 ISPF 定制对话启用安全性,那么不会完整地生成 RACF® 定义。如果稍后使用管理控制台启用安全性,那么缺少的 RACF 语句将导致 WebSphere Application Server 控制区域无法启动。请参阅 APAR PK36598 以获取有关解决此问题的更多详细信息。


指示主题类型的图标 参考主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rtrb_secprobs2
文件名:rtrb_secprobs2.html