리눅스

우분투에서 Keycloak을 설치하고 설정하여 사용할 수 있는 방법

변군이글루 2024. 11. 11. 13:11
반응형

우분투에서 Keycloak을 설치하고 설정하여 사용할 수 있는 방법

요구 사항

apt install -y curl

1. MySQL 설치

MySQL을 설치하고 설정합니다.

wget https://dev.mysql.com/get/mysql-apt-config_0.8.33-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.33-1_all.deb
sudo apt update
sudo apt install -y mysql-server
mysqld -V
sudo systemctl enable --now mysql

MySQL의 기본 설정을 진행합니다. Keycloak이 사용할 데이터베이스를 생성합니다.

sudo mysql -u root -p

데이터베이스와 사용자, 권한을 설정합니다.

CREATE DATABASE keycloak_db;
CREATE USER 'keycloak_user'@'localhost' IDENTIFIED BY 'keycloak_password';
GRANT ALL PRIVILEGES ON keycloak_db.* TO 'keycloak_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

2. Java 설치

Keycloak은 Java 11 이상을 요구합니다.

sudo apt update
sudo apt install -y openjdk-17-jdk
java --version

3. Keycloak 설치

최신 버전의 Keycloak을 다운로드하고 압축을 풉니다.

cd /usr/local/src
KEYCLOAK_VERSION=$(curl -s https://api.github.com/repos/keycloak/keycloak/releases/latest | grep '"tag_name"' | awk -F '"' '{print $4}')
echo ${KEYCLOAK_VERSION}
curl -fsSL https://github.com/keycloak/keycloak/releases/download/${KEYCLOAK_VERSION}/keycloak-${KEYCLOAK_VERSION}.tar.gz \
    -o keycloak-${KEYCLOAK_VERSION}.tar.gz
sudo tar -xzf keycloak-${KEYCLOAK_VERSION}.tar.gz
sudo mkdir -p /opt
sudo mv keycloak-${KEYCLOAK_VERSION} /opt/keycloak

4. MySQL JDBC 드라이버 설치

MySQL 데이터베이스에 연결하려면 MySQL JDBC 드라이버를 Keycloak에 추가해야 합니다.

wget -q https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-j_9.1.0-1ubuntu22.04_all.deb
sudo dpkg -i mysql-connector-j_9.1.0-1ubuntu22.04_all.deb
sudo cp /usr/share/java/mysql-connector-j-9.1.0.jar /opt/keycloak/providers/
ls /opt/keycloak/providers/mysql-connector-java-9.1.0.jar

5. Keycloak 서버 시작 및 초기 관리자 계정 설정

Keycloak을 실행하기 전에 MySQL 연결 정보를 설정해야 합니다. Keycloak은 기본적으로 H2 데이터베이스를 사용하지만 MySQL을 사용하도록 설정해야 합니다.

 

Keycloak 설정 파일 수정

/opt/keycloak/conf/keycloak.conf 파일을 수정합니다.

vim /opt/keycloak/conf/keycloak.conf
db=mysql
db-username=keycloak_user
db-password=keycloak_password
db-url=jdbc:mysql://localhost:3306/keycloak_db?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC

Keycloak 서버 시작

start-dev 명령은 개발 모드에서 Keycloak을 실행합니다.

cd /opt/keycloak
export KC_HOSTNAME=192.168.10.111
export KC_BOOTSTRAP_ADMIN_USERNAME=admin
export KC_BOOTSTRAP_ADMIN_PASSWORD=adminpassword
bin/kc.sh start-dev

또는

bin/kc.sh start-dev --hostname=192.168.10.111

정상적으로 실행되면 웹 브라우저에서 http://localhost:8080으로 접속할 수 있습니다.

http://0.0.0.0:8080

(또는) 초기 관리자 계정 설정

  • Keycloak을 처음 시작할 때 관리자 계정을 설정해야 합니다. 초기 설정을 위해 --admin 옵션을 사용하여 관리자 계정을 생성할 수 있습니다.
bin/kc.sh start-dev --admin-cli-username admin --admin-cli-password adminpassword

keycloak

Keycloak 서비스로 등록 및 자동 시작

Keycloak을 시스템 서비스로 등록하여 자동으로 시작하도록 설정할 수 있습니다.

 

Systemd 서비스 파일 생성

sudo vim /etc/systemd/system/keycloak.service
[Unit]
Description=Keycloak
After=syslog.target network.target

[Service]
ExecStart=/opt/keycloak/bin/kc.sh start
ExecStop=/opt/keycloak/bin/kc.sh stop
User=keycloak
Restart=on-failure

[Install]
WantedBy=multi-user.target

서비스 등록 및 시작

  • systemd에 Keycloak 서비스를 등록하고 시작합니다.
sudo systemctl daemon-reload
sudo systemctl enable --now keycloak
sudo systemctl restart keycloak
sudo systemctl status keycloak

6. Realm, 클라이언트, 사용자 추가로 SSO 환경 구성

Keycloak을 통해 SSO 환경을 구성합니다.

Keycloak에 로그인

웹 브라우저에서 http://localhost:8080에 접속하여 관리자 계정으로 로그인합니다.

Realm 생성

왼쪽 메뉴에서 "Realms"를 클릭하고 "Create Realm"을 선택하여 새로운 Realm을 생성합니다.

예를 들어 my-realm을 생성할 수 있습니다.

클라이언트 생성

생성된 Realm을 선택하고 "Clients" 메뉴로 이동합니다.

"Create" 버튼을 클릭하고 클라이언트 정보를 입력합니다. 예를 들어, my-client라는 이름을 지정하고, "Access Type"을 confidential로 설정합니다.

사용자 추가

"Users" 메뉴에서 "Add User"를 클릭하여 사용자를 추가합니다.

사용자 정보(사용자 이름, 이메일 등)를 입력하고 저장합니다.

사용자 계정을 활성화한 후, "Credentials" 탭에서 비밀번호를 설정합니다.

 

이제 Keycloak은 시스템 시작 시 자동으로 실행됩니다.

 

참고URL

- keycloak Guides : OpenJDK

 

728x90
반응형