Подсистема безопасности Wildfly: переход с Legacy на Elytron, домен безопасности не найден
Я пытаюсь перенести проект с 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 ответ
Итак, еще раз, похоже, что записывание моей проблемы каким-то образом привело меня к ее решению.
Оказывается, это не нужно с 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.