У меня есть веб-приложение, работающее на Liberty в CICS, в котором я пытаюсь использовать сопоставление ролей SAF наряду с аутентификацией CICS.У меня есть следующие EJBROLE, сопоставленные трем пользователям в CICS для теста: Приложение называется CPSM.APP
TECH.CPSM.APP.VIEWER
TECH.CPSM.APP.UPDATER
TECH.CPSM.APP.ADMIN
, но когда эти пользователи входят в приложение, он возвращает ошибку 403 для всех 3 из них.Не уверен, что я делаю неправильно.Я опубликую свой соответствующий 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].
ОБНОВЛЕНИЕ: я добавляю ссылку на это приложение из моего файла instalapps.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>