Подсистема безопасности Wildfly: переход с Legacy на Elytron, домен безопасности не найден - PullRequest
0 голосов
/ 17 января 2019

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

До сих пор (Legacy) все, что требовалось для работы аутентификации, - это создание Домена безопасности в Подсистемах -> Безопасность с правильным именем (" referenceApplicationDomain ").

Мой 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.

1 Ответ

0 голосов
/ 18 января 2019

Оказывается, это не нужно с 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>

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

...