Подсистема безопасности Wildfly: при переходе с устаревшей версии на Elytron домен безопасности не найден

Я пытаюсь перенести проект с использования Legacy Security на использование Elytron Security.

До сих пор (Legacy) все, что требовалось для работы аутентификации, - это создать домен безопасности в Subsystems -> Security с правильным именем («sizesApplicationDomain»).

Мой web.xml:

<web-app ..>
    ...
    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>referencesApplicationDomain</realm-name>
    </login-config>
    <security-role>
        <role-name>authenticated</role-name>
    </security-role>
    <security-role>
        <role-name>anonymous</role-name>
    </security-role>
    <security-constraint>
        <web-resource-collection>
            ....
        </web-resource-collection>
    </security-constraint>
        <auth-constraint>
            <role-name>authenticated</role-name>
        </auth-constraint>
    </security-constraint>
...
</web-app>

Мой jboss-web.xml:

<jboss-web ...>
    <deny-uncovered-http-methods>false</deny-uncovered-http-methods>
    <context-root>/references</context-root>
    <security-domain>referencesApplicationDomain</security-domain>
</jboss-web>

Конечно, наша идея состоит в том, чтобы наше приложение работало только с Elytron.

Однако проблема в том, что я не вижу, где создать домен безопасности в Elytron.

Я следил за документацией Wildfly Elytron для создания домена безопасности, а также фабрики http с помощью jboss-cli.

Когда я проверяю jboss-cli, я вижу, что домен безопасности был создан.

Однако когда я пытаюсь запустить сервер Wildfly, я получаю следующую ошибку:

"WFLYCTL0412: Required services that are not installed:" => [
        "jboss.security.security-domain.referencesApplicationDomain"
    ],
    "WFLYCTL0180: Services with missing/unavailable dependencies" => [
        "jboss.deployment.unit.\"references-war-1.0.11-SNAPSHOT.war\".component.BranchService.CREATE is missing [jboss.security.security-domain.java:/jaas/referencesApplicationDomain]"
    ]

Похоже, что jboss пытается найти домен безопасности в старой подсистеме безопасности вместо Elytron. Но я не понимаю почему?

Небольшое замечание: я хочу использовать ApplicaationRealm, чтобы использовать пользователей и группы внутри файлов конфигурации jboss.


person platzhersh    schedule 17.01.2019    source источник


Ответы (1)


Оказывается, это не нужно для Elytron (на самом деле, только для Legacy). Итак, решение просто удаляет их из файлов xml:

web.xml

<web-app ..>
    ...
    <login-config>
        <auth-method>BASIC</auth-method>
        <!--<realm-name>referencesApplicationDomain</realm-name>-->
    </login-config>
</web-app>

jboss-web.xml:

<jboss-web ...>
    <deny-uncovered-http-methods>false</deny-uncovered-http-methods>
    <context-root>/references</context-root>
    <!--<security-domain>referencesApplicationDomain</security-domain>-->
</jboss-web>

Это работает, потому что по умолчанию нижняя система Wildlfly использует ApplicationRealm в качестве домена безопасности по умолчанию. Вы можете убедиться в этом, просмотрев свой файл standalone.xml.

person platzhersh    schedule 18.01.2019