기본적으로 JBoss EAP 7.4에서 운영 중에 있으나, 특정 서비스의 요구사항으로 JBoss EAP 8.0을 설치한 서버가 있다. standalone.xml
의 설정 과정에서 datasource 서브시스템의 security 절을 동일하게 사용하고, security 서브시스템으로 username과 password를 관리하려 했으나 8.0에서는 security 서브시스템을 지원하지 않고, elytron 서브시스템을 사용해야한다.
<subsystem xmlns="urn:jboss:domain:datasources:7.0">
<datasources>
<datasource jndi-name="java:/fooDs" pool-name="fooDs" enabled="true" use-java-context="true">
<connection-url>...</connection-url>
<driver>oracle</driver>
<!-- 생략 -->
<security>
<security-domain>fooDs</security-domain>
</security>
</datasource>
</datasources>
</subsystem>
<subsystem xmlns="urn:jboss:domain:security:2.0">
<security-domains>
<security-domain name="fooDs" cache-type="default">
<authentication>
<login-module code="org.picketbox.datasource.security.SecureIdentityLoginModule" flag="required">
<module-option name="username" value="foo"/>
<module-option name="password" value="bar"/>
</login-module>
</authentication>
</security-domain>
</security-domains>
</subsystem>
7.4에서 쓰던 설정이고, 그대로 8.0에 옮겼을 때는 앞에서 말했듯이 오류가 난다.
/subsystem=elytron/credential-store=fooDs-credstore:add( \
path=fooDs-credstore.cs, \
relative-to=jboss.server.config.dir, \
create=true, \
credential-reference={clear-text="5dOaAVafCSd;12345678;100} \
)
/subsystem=elytron/credential-store=fooDs-credstore:add-alias(\
alias=fooDs-username, \
secret-value="foo" \
)
/subsystem=elytron/credential-store=fooDs-credstore:add-alias(\
alias=fooDs-password, \
secret-value="bar" \
)
우선 security를 elytron으로 변경하기 위해 jboss-cli에서 elytron credential store를 생성한 뒤에, store에 username과 password를 각각 저장해준다.
<security>
<credential-reference>
<store>fooDs-credstore</store>
<alias>fooDs-username</alias>
<clear-text-credential-reference>
<store>fooDs-credstore</store>
<alias>fooDs-password</alias>
</clear-text-credential-reference>
</credential-reference>
</security>
설정한 datasource에서 security 구문만 바꿔줬더니 오류가 난다.
<security>
<credential-reference store="fooDs-credstore" alias="fooDs-username"/>
<credential-reference store="fooDs-credstore" alias="fooDs-username"/>
</security>
store랑 alias를 credential-reference의 속성으로 넣어봐도 오류가 난다.
<subsystem xmlns="urn:jboss:domain:datasources:7.1">
datasources 서브시스템을 7.0에서 7.1로 올리면 store를 사용할 수 있다고 해서 변경하였으나 오류가 난다.
<security>
<user-name>foo</user-name>
<credential-reference store="fooDs-credstore" alias="fooDs-username"/>
</security>
다시 datasources 서브시스템을 7.0으로 바꾸고 username을 user-name 태그로 변경하니 성공했다.
/subsystem=datasources/data-source=fooDs:test-connection-in-pool
{
"outcome" => "success",
"result" => [ture]
}
username은 평문으로 쓰고, password만 elytron credential store에 등록해서 설정하면 되는듯하다.
'DevOps > WEB.WAS' 카테고리의 다른 글
[Apache] referer에 따른 Directory 접근 차단 (0) | 2025.04.14 |
---|---|
[JBoss] JBWEB002004 오류 발생 (0) | 2025.01.09 |