[Keycloak] WildFly 버전 외부 DB(Mariadb) 연동 방법
기존 새로운 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 이름으로 교체합니다.
default의 경우도 해당 datasource로 바꿔줘야 오류가 안나는 것 같습니다.
./standalone.sh -Djboss.http.port=5010
다시 서버를 실행하여 들어가면 mariadb가 연동된 모습을 알 수 있습니다.
참조