Профиль WebSphere Liberty - как добавить ограничения безопасности при развертывании Spring Boot Uber JAR - PullRequest
0 голосов
/ 27 февраля 2019

Я был очень рад видеть, что WebSphere Liberty Profile поддерживает развертывание JAR-файлов поддержки Spring Boot непосредственно в версии 18.0.0.2.

В моем файле server.xml есть:

<application id="x" name="x"
             type="spring"
             location="${server.config.dir}/apps/spring-boot-uber.jar">
        <application-bnd>
            <security-role name="Authenticated">
                <special-subject type="ALL_AUTHENTICATED_USERS"/>
            </security-role>
            <security-role name="SUPER_USERS">
                <group name="My_Admins"/>
            </security-role>
        </application-bnd>
    </application>

Обратите внимание на привязки роли безопасности.

В файле web.xml (WAR) или ibm-ws-bnd.xml (EAR) я думаю, что мне нужно было бы сделать:

<?xml version="1.0" encoding="UTF-8"?>
<webservices-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ws-bnd_1_0.xsd"
                 version="1.0">
    <http-publishing>
        <webservice-security>

            <security-constraint>
                <web-resource-collection>
                    <web-resource-name>all</web-resource-name>
                    <url-pattern>/*</url-pattern>
                    <http-method>GET</http-method>
                    <http-method>PUT</http-method>
                    <http-method>HEAD</http-method>
                    <http-method>TRACE</http-method>
                    <http-method>POST</http-method>
                    <http-method>DELETE</http-method>
                    <http-method>OPTIONS</http-method>
                </web-resource-collection>
                <auth-constraint>
                    <role-name>Authenticated</role-name>
                </auth-constraint>
            </security-constraint>

            <security-role>
                <description>All authenticated users</description>
                <role-name>Authenticated</role-name>
            </security-role>
            <security-role>
                <description>Super users</description>
                <role-name>SUPER_USERS</role-name>
            </security-role>

        </webservice-security>
    </http-publishing>
</webservices-bnd>

для того, чтобыинформация об аутентификации, которая будет установлена ​​в http-запросах (основной пользователь).

Как я могу заставить это работать с приложениями Spring Boot, где у меня нет ни EAR, ни WAR (поэтому у меня нет файла web.xml).

Я попытался добавить ibm-ws-bnd.xml в папку META-INF на жестком диске весенней загрузки, но ничего не происходит.

ОБНОВЛЕНИЕ:

Я даже не уверен, что WLP поддерживает application-bnd при развертывании Spring Boot Uber JAR, но тогда я вообще не знаю, как связать с ним роли.

1 Ответ

0 голосов
/ 28 февраля 2019

Возможно, вы захотите использовать Spring Security https://spring.io/guides/gs/securing-web/ для предоставления сведений о пользователе и ролях безопасности в приложении Spring Boot.На данный момент liberty не поддерживает JAR-приложение Spring Boot с ролями авторизации, определенными в application-bnd.

Или вы можете преобразовать JAR-файл в WAR-файл и поместить файл web.xml в src / main / webapp/ WEB-INF и укажите тип приложения как «war» в server.xml

...