Мы планируем перейти с Picketbox на Elytron и столкнемся со следующей проблемой:
С помощью Picketbox настраиваемый модуль входа в систему может использовать функциональность (или даже может находиться внутри) модуля развертывания (например, EAR в wildfly / standalone / deployments) для реализации аутентификации на стороне сервера:
<subsystem xmlns="urn:jboss:domain:security:2.0">
<security-domains>
...
<security-domain name="MyDomain" cache-type="default">
<authentication>
<login-module name="MyLoginModule" code="de.example.wildfly.MyLoginModule" flag="required" module="deployment.de.example.wildfly.login"/>
</authentication>
</security-domain>
Моей первой попыткой было использовать настраиваемый мир в Elytron. Но, насколько я понимаю, настраиваемая область должна быть «статическим» модулем (это означает, что он находится в wildfly / modules / ...) и, следовательно, не может получить доступ к «динамически» развернутым модулям (см. https://developer.jboss.org/message/984198#984198).
<subsystem xmlns="urn:wildfly:elytron:7.0" final-providers="combined-providers" disallowed-providers="OracleUcrypto">
...
<security-domains>
<security-domain name="MyDomain" default-realm="MyRealm" permission-mapper="default-permission-mapper">
<realm name="MyRealm" role-decoder="from-roles-attribute" />
</security-domain>
</security-domains>
<security-realms>
...
<custom-realm name="MyRealm" module="de.example.wildfly.login" class-name="de.example.wildfly.MyCustomRealm" />
(Я пропустил еще несколько настроек домена безопасности)
Когда я пытаюсь загрузить контекст Spring (который находится в EAR для доступа к некоторым настраиваемым классам из EAR) в MyCustomRealm, я получаю следующую ошибку:
org.springframework.beans.factory.access.BootstrapException: Unable to initialize group definition. Group resource name [classpath:applicationContext-appServerBase.xml], factory key [applicationContextEjb]; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [applicationContext-appServerBase.xml]; nested exception is java.io.FileNotFoundException: class path resource [applicationContext-appServerBase.xml] cannot be opened because it does not exist
Что неудивительно, потому что моя область не зависит от уха или какой-либо фляги в нем, где находится контекст приложения.
Как можно настроить аутентификацию (особенно для вызовов EJB) на стороне сервера с помощью классов из модуля развертывания (EAR) в Elytron?