KeyCloak 서버는 기본적으로 Java 기반의 H2 데이터베이스로 기동된다.
=> H2가 아닌 PostgreSQL 로 기동하는 방법에 대해 정리한다.
* 참고. 외부 DB 연결 후, 기동 시 KeyCloak 에서 제공해주는 테이블들이 해당 스키마에 설치된다.
1. JDBC 설정
해당 moduls 디렉토리 아래에 jdbc driver 파일을 위치시킨다.
$ cd keycloak-11.0.3\modules\system\layers\keycloak\org\
> 1.0 jdbc driver 다운로드한다.
> 1.1 org > postgresql > main 폴더 생성한다.
> 1.2 main 폴더 안에 module.xml 빈 파일 생성한다.
> 1.3 main 폴더 안에 postgresql-42.2.18..jar 등 JDBC Driver 를 위치 시킨다.
- module.xml 작성
<module xmlns="urn:jboss:module:1.3" name="org.postgresql">
<resources>
<resource-root path="postgresql-42.2.18.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
2. 데이터 소스 설정
KeyCloak/standalone/configuration/standalone.xml 수정
- java:jboss/datasources/KeycloakDS 이 H2로 작성되어있는데, 아래의 코드로 수정한다.
<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true">
<connection-url>jdbc:postgresql://localhost:5432/{PostgreSQL Database}</connection-url>
<driver>postgresql</driver>
<pool>
<max-pool-size>20</max-pool-size>
</pool>
<security>
<user-name>{PostgreSQL User}</user-name>
<password>{PostgreSQL Password}</password>
</security>
</datasource>
- driver 부분에 h2 부분 밑에 추가한다.
<driver name="postgresql" module="org.postgresql">
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>
3. 데이터베이스 설정
KeyCloak/standalone/configuration/standalone.xml 수정
- Database 스키마 설정 추가한다.
<property name="schema" value=“{원하는 스키마 이름}”/>
* 만약, 스키마를 public 이 아닌, 다른 스키마로 변경하고 싶을 때 설정을 추가해주면 된다.
디폴트 : public
<spi name="connectionsJpa">
<provider name="default" enabled="true">
<properties>
<property name="dataSource" value="java:jboss/datasources/KeycloakDS"/>
<property name="initializeEmpty" value="true"/>
<property name="migrationStrategy" value="update"/>
<property name="migrationExport" value="${jboss.home.dir}/keycloak-database-update.sql"/>
<property name="schema" value="public"/>
</properties>
</provider>
4. 기동
standalone.bat -Djboss.socket.binding.port-offset=100
또는
standalone.bat
=> 기동 이후, DB 확인 시 KeyCloak 에서 제공하는 테이블들이 설치된 것을 확인할 수 있다.
5. 로컬 PC 의 로컬 PostgreSQL 의 경우 (외부접속 허용)
KeyCloak/standalone/configuration/standalone.xml 수정
- 만약 ( 로컬 PC에서 기동 중인 KeyCloak 서버 )를 다른 PC 에서 접속하고 싶을 때,
-- 변경 전 코드
<interface name="management">
<inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>
-- 변경 후 코드
<interface name="management">
<any-address/>
</interface>
<interface name="public">
<any-address/>
</interface>
<interface name="unsecure">
<inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/>
</interface>
--
'Computer Science > Java' 카테고리의 다른 글
# Intellij Inlay Hints (0) | 2023.04.06 |
---|---|
# Intellij Custom LiveTemplates (0) | 2023.04.06 |
KeyCloak 설치 & 정리 (0) | 2020.12.06 |
# Google_OAuth2.0_SpringBoot 구현 1 - Authorization code (0) | 2020.11.07 |
# 전자정부 프레임워크 세부 적용 규칙 - Intellij + SpringBoot 적용 (0) | 2020.11.01 |