我在 CICS 的 Liberty 上运行了一个 Web 应用程序,我正在尝试使用 SAF 角色映射和 CICS 身份验证。我将以下 EJBROLE 映射到 CICS 中的三个用户进行测试: 该应用程序名为 CPSM。.APP
技术。中科植物检疫措施。.APP。观众
技术。中科植物检疫措施。.APP。更新
技术。中科植物检疫措施。.APP。管理
但是当这些用户登录到应用程序时,它会为所有 403 个用户返回 3 错误。不知道我做错了什么。我将在下面发布我的相关服务器.xml和相关网络.xml组件。
网络.XML
<security-role>
<description>Admin privileges</description>
<role-name>ADMIN</role-name>
</security-role>
<security-role>
<description>Viewer privileges</description>
<role-name>VIEWER</role-name>
</security-role>
<security-role>
<description>Updater privileges</description>
<role-name>UPDATER</role-name>
</security-role>
<security-constraint>
<display-name>com.ibm.cicsdev.jdbc.web.SecurityConstraint</display-name>
<web-resource-collection>
<web-resource-name>com.regions.cics.CPSM_Batch.jdbc</web-resource-
name>
<url-pattern>/main.xhtml</url-pattern>
<url-pattern>/viewgroups.xhtml</url-pattern>
<url-pattern>/viewfileandtran.xhtml</url-pattern>
<url-pattern>/viewgrouptable.xhtml</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>ADMIN</role-name>
<role-name>VIEWER</role-name>
<role-name>UPDATER</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-constraint>
<display-name>com.ibm.cicsdev.jdbc.web.SecurityConstraint</display-name>
<web-resource-collection>
<web-resource-name>com.regions.cics.CPSM_Batch.jdbc</web-resource-
name>
<url-pattern>/editgroup.xhtml</url-pattern>
<url-pattern>/addnewgroup.xhtml</url-pattern>
<url-pattern>/entergroup.xhtml</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>ADMIN</role-name>
<role-name>UPDATER</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
服务器.xml
<featureManager>
<feature>cicsts:core-1.0</feature>
<feature>cicsts:defaultApp-1.0</feature>
<feature>jsp-2.3</feature>
<feature>javaMail-1.5</feature>
<feature>jndi-1.0</feature>
<feature>jsf-2.2</feature>
<feature>jdbc-4.1</feature>
<feature>jsp-2.3</feature>
<feature>appSecurity-2.0</feature>
<feature>cicsts:security-1.0</feature>
<feature>ssl-1.0</feature>
</featureManager>
<!-- Use SAF registry -->
<safRegistry enableFailover="true" id="saf"/>
<safAuthorization id="saf"/>
<safCredentials profilePrefix="TECH" unauthenticatedUser="LIBGUEST"/>
<safRoleMapper profilePattern="%profilePrefix%.%resource%.%role%"
toUpperCase="true"/>
当我尝试访问应用程序定义的任何 URL 时,出现 403 错误。 以及系统日志中的以下错误消息:
.ibm.ws.webcontainer.security.WebAppSecurityCollaboratorImpl A CWWKS9104A:
Authorization failed for user LIBTST1 while invoking CPSM on
/viewgroups.xhtml. The user is not granted access to any of the required
roles: [ADMIN, VIEWER, UPDATER].
更新:我正在从已安装的应用程序添加对此应用程序的引用.xml以防它可能有助于解决问题。
<application id="CPSM.APP" name="CPSM.APP" type="war"
location="${server.output.dir}/installedApps/CPSM.APP.war"
bundle="X11CPSM" token="1BEB96B000000199" bundlepart="CPSM_Batch"
platform_id="" application_id="" appl_major_ver="-1" appl_minor_ver="-1"
appl_micro_ver="-1">
<application-bnd>
<security-role name="cicsAllAuthenticated">
<special-subject type="ALL_AUTHENTICATED_USERS"/>
</security-role>
</application-bnd>
</application>
你的 safAuthorization 元素被注释掉了 - 这就是启用 safAuthorization (即 EJBRoles 检查(的原因。然后还要检查您的 safRoleMapper 值,以确保它们使用正确的前缀映射到您创建的 EJBroles。
使用 EJBROLE 时,application-bnd
被绕过/忽略。映射保存在 SAF 中,而不是绑定元素中。另请注意,在启动 CICS 区域之前,必须"刷新"SAF 更改。我认为必须对 EJBROLE(或 TOP SECRET 中的等效项(进行"读取"访问。
我也想知道您是否具有配置文件模式的resource
部分正确匹配,您说该应用程序称为CPSM.APP
。通常,Eclipse 中的项目(如果这是你的 dev-env(会反映到installedApps.xml
中的application
元素中,并且具有更限定的名称。CICS提供的一个例子叫做com.ibm.cics.server.examples.wlp.hello.war
,所以EJBROLE的定义是TECH.com.ibm.cics.server.examples.wlp.hello.war.ADMIN
。
这里有更多信息,以防我略读并错过任何有用的东西。
我已经解决了这个问题。我在下面包含一个链接,解释了遇到相同问题的任何人需要更改的内容。对于那些使用 CA 绝密进行 CICS 安全保护的用户。必须设置一个设施控制选项 RES,以允许将前缀资源(如 EJBROLES(的规则加载到给定用户的安全记录中。如果此选项设置为 NORES,那么对给定 EJBROLE 的所有安全检查都将失败。
链接到解决方案:https://comm.support.ca.com/kb/permitted-resource-receiving-tss7250e-136/kb000005323