我有一个在CICS中的Liberty上运行的Web应用程序,我正在尝试将SAF角色映射与CICS身份验证一起使用。我将以下EJBROLE映射到CICS中的三个用户进行测试:该应用程序名为CPSM.APP
TECH.CPSM.APP.VIEWER
TECH.CPSM.APP.UPDATER
TECH.CPSM.APP.ADMIN
但是当这些用户登录到应用程序时,它将为所有3个用户返回403错误。不知道我在做什么错。我将在下面发布相关的server.xml和相关的web.xml组件。
Web.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>
Server.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].
更新:我从我的installedapps.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>
答案 0 :(得分:1)
您的safAuthorization元素已被注释掉-这就是启用safAuthorization的功能(即EJBRoles检查)。然后还要检查您的safRoleMapper值,以确保它们以正确的前缀映射到您创建的EJBroles。
答案 1 :(得分:0)
使用EJBROLE时,application-bnd
被忽略/忽略。映射保存在SAF中,而不是绑定元素中。另请注意,在启动CICS区域之前,您必须“刷新”您的SAF更改。我认为必须具有对EJBROLE(或TOP SECRET中的等效文件)的“读取”访问权限。
我还想知道您是否对profilePattern的resource
部分进行了正确匹配,您说该应用程序名为CPSM.APP
。通常,Eclipse中的项目(如果这是您的dev-env)随后会反映到application
中的installedApps.xml
元素中,并且具有更限定的名称。 CICS提供的一个示例称为c om.ibm.cics.server.examples.wlp.hello.war
,因此EJBROLE定义为TECH.com.ibm.cics.server.examples.wlp.hello.war.ADMIN
。
有more information here,以防我略读而错过任何有用的东西。
答案 2 :(得分:0)
我已经解决了这个问题。我在下面提供了一个链接,该链接说明了遇到相同问题的任何人都需要更改的内容。对于那些使用CA作为CICS安全性的最高机密的人。必须设置设施控制选项RES,以允许将前缀资源(例如EJBROLES)的规则加载到给定用户的安全记录中。如果将此选项设置为NORES,则对给定EJBROLE的所有安全检查都将失败。
链接到解决方案:https://comm.support.ca.com/kb/permitted-resource-receiving-tss7250e-136/kb000005323