기존 새로운 quarkus 기반 keycloak의 경우 custom 하는데 많은 문제를 겪어 이전의 wildfly 기반 keycloak을 사용하기로 마음먹었습니다. quarkus의 경우 conf 파일을 통해 손쉽게 외부 DB를 연결할 수 있었지만 그 외에는 새롭게 개척해서 공부해야 하는 부분때문에 힘든것은 어쩔 수 없네요. 이번 포스팅에서는 wildfly 버전 외부 DB 연동 방법에 대해서 알아보겠습니다.
Managemene 사용자 생성
저도 외부 DB 연동하면서 알았는데 Management 계정을 따로 만들 수 있더라고요. 기존의 경우에는 일일히 소스코드를 고치며 외부 DB를 연동해야 했지만 현재는 손쉽게 management 사용자 계정을 통해 손쉽게 연동할 수 있습니다.
/bin 파일로 이동후 다음 명령어를 입력해줍니다.
sh add-user.sh
그리고 ManageMent User를 선택해주고 id 및 password를 입력합니다.
http://localhost:5010/console
keycloak 주소 뒤에 /console path가 추가되면 management 페이지로 갈 수 있습니다.
외부 db 연동 전 연동하고자 하는 db의 driver를 위치시켜야 합니다.
위와 같이 /mariadb/main에 드라이버와 module.xml을 생성합니다.
<module xmlns="urn:jboss:module:1.3" name="org.mariadb">
<resources>
<!-- 실제 driver jar 파일의 이름 -->
<resource-root path="mariadb-java-client-2.7.3.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
module.xml에는 다음과 같이 입력해줍니다.
외부 DB 연동 (Management Page)
위와 같이 management 페이지에서 들어가서 Configuration 에 DataSource&JDBC Driver에 들어갑니다.
1. 외부 DB Driver 추가
2. DataSource 추가
위와 같이 생성한 mariadb 주소를 입력하여 datasource를 생성후 이전에 있던 datasource들을 전부 삭제합니다.
이후에 standalone/standalne.xml 에 있는 모든 JIDI 정보를 생성한 JIDI 이름으로 교체합니다.