Роль сопоставителя SAF не разрешает доступ.(Свобода в CICS) - PullRequest
0 голосов
/ 03 октября 2018

У меня есть веб-приложение, работающее на 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>

Ответы [ 3 ]

0 голосов
/ 04 октября 2018

При использовании EJBROLE application-bnd игнорируется / игнорируется.Отображения хранятся в SAF, а не в связывающем элементе.Также обратите внимание, что вы должны «обновить» ваши изменения SAF перед запуском региона CICS.Я думаю, что наличие доступа для чтения к EJBROLE (или эквиваленту в TOP SECRET) является обязательным.

Мне также интересно, если у вас есть правильная часть resource профиля profilePattern, вы сказали, что приложениеназывается 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.

Здесь больше информации на случай, если я прочитал и пропустил что-нибудь полезное.

0 голосов
/ 24 октября 2018

Я решил эту проблему.Я включил ссылку ниже, которая объясняет, что нужно изменить для тех, у кого такая же проблема.Для тех, кто использует CA совершенно секретно для безопасности CICS.Существует опция управления средствами RES, которая должна быть настроена таким образом, чтобы разрешать загрузку в запись безопасности для данного пользователя правил для ресурсов с префиксами, таких как EJBROLES.Если для этой опции задано значение NORES, все проверки безопасности для данного EJBROLE завершатся неудачей.

Ссылка на решение: https://comm.support.ca.com/kb/permitted-resource-receiving-tss7250e-136/kb000005323

0 голосов
/ 03 октября 2018

Ваш элемент safAuthorization закомментирован - это то, что позволяет safAuthorization (т.е. проверка EJBRoles).Затем также проверьте значения safRoleMapper, чтобы убедиться, что они соответствуют правильным префиксам EJBroles, которые вы создали.

...