Развертывание источника данных с модулем входа в систему JAAS как.sar в jboss
У кого-нибудь есть опыт объединения определения источника данных (-ds.xml) + login-config.xml в качестве архива службы в jboss? Я боролся с этим некоторое время безрезультатно. Я просто ищу несколько подсказок о том, как я должен раскладывать Сар. Я хочу, чтобы.sar в конечном итоге жил в год. Любые указатели очень ценятся!
1 ответ
Это относительно простая задача.
Ваш EAR-файл должен иметь следующую структуру:
my-app.ear
|+ META-INF
|+ applications.xml and jboss-app.xml
|+ myapp.war
|+ myapp.jar
|+ lib
|+ my-ds.xml
|+ my-login-module-service.xml
где my-ds.xml, как обычно, содержит определение источника данных. my-login-module-service.xml определяет MBean на основе класса DynamicLoginConfig. Затем на эти модули ссылаются в jboss-app.xml (пользовательский дескриптор развертывания JBoss), как показано ниже:
<jboss-app>
<module>
<service>my-login-module-service.xml</service>
</module>
<module>
<service>my-ds.xml</service>
</module>
</jboss-app>
Самый простой способ создать определение модуля входа в систему - это использовать поддержку встроенных XML-документов в качестве значений атрибутов. Такая конфигурация (my-login-module-service.xml) будет выглядеть так:
<server>
<mbean code="org.jboss.security.auth.login.DynamicLoginConfig"
name="jboss:service=DynamicLoginConfig">
<attribute name="PolicyConfig" serialDataType="jbxb">
<jaas:policy xsi:schemaLocation="urn:jboss:security-config:4.1 resource:security-config_4_1.xsd" xmlns:jaas="urn:jboss:security-config:4.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<jaas:application-policy name="userinrole">
<jaas:authentication>
<jaas:login-module code="org.jboss.security.auth.spi.XMLLoginModule" flag="required">
<jaas:module-option name="my-policy-123">
<ur:users xsi:schemaLocation="urn:jboss:user-roles:1.0 resource:user-roles_1_0.xsd" xmlns:ur="urn:jboss:user-roles:1.0">
<ur:user name="admin" password="admin123">
<ur:role name="MyUserRole"></ur:role>
<ur:role name="AdminUser"></ur:role
</ur:user>
</ur:users>
</jaas:module-option>
<jaas:module-option name="unauthenticatedIdentity">guest</jaas:module-option>
</jaas:login-module>
</jaas:authentication>
</jaas:application-policy>
</jaas:policy>
</attribute>
<depends optional-attribute-name="LoginConfigService">jboss.security:service=XMLLoginConfig</depends>
<depends optional-attribute-name="SecurityManagerService">jboss.security:service=JaasSecurityManager</depends>
</mbean>
</server>
Вы можете проверить успешное развертывание, используя bean-компонент JNDIVIew (в этом примере java:/jaas/my-policy-123).
Для развертывания, включая пользовательские классы, лучше выбрать развертывание архива SAR вместе с пользовательским кодом. В таком случае вы можете разделить определение MBean и конфигурацию модуля входа в систему (META-INF / jboss-service.xml):
<server>
<mbean code="org.jboss.security.auth.login.DynamicLoginConfig" name="jboss:service=DynamicLoginConfig">
<attribute name="AuthConfig">META-INF/login-config.xml</attribute>
<depends optional-attribute-name="LoginConfigService">jboss.security:service=XMLLoginConfig</depends>
<depends optional-attribute-name="SecurityManagerService">jboss.security:service=JaasSecurityManager</depends>
</mbean>
</server>
META-INF / login-config.xml будет содержать конфигурацию вашей политики.
Я использую этот подход на JBoss AS 4.x.