-
[네이버클라우드] Ncloud Single Sign-On(SSO) / keycloak 연동 - 1. keycloak 설치NAVER Cloud 2024. 6. 12. 19:04
Ncloud Single Sign-On 서비스는 네이버클라우드에서 사용중인 계정을 외부 IDP 에 연동하거나 외부 IDP 계정을 네이버클라우드에 연동할 수 있는 서비스로 SSO 계정별로 네이버클라우드의 리소스 접근 권한을 설정할 수 있다.
여기서는 외부 IDP (keycloak) 에 등록된 계정으로 네이버클라우드에 접근할 수 있도록 설정하는 테스트를 진행해 보았다.
먼저 Keycloak 설치를 진행한 후 Ncloud Single Sign-On 서비스를 설정하였다.
1. Keycloak 설치
vm 에 직접 설치하는 방법도 어렵지는 않지만 https 설정을 Disabled 하기 위해서는 http://localhost 로 접근해야 해서 vm 에 docker 를 띄워서 구동하였다.
# keycloak 컨테이너 구동 커맨드 docker run \ --name keycloak \ -p 8080:8080 \ -e KEYCLOAK_ADMIN=admin \ -e KEYCLOAK_ADMIN_PASSWORD=admin \ quay.io/keycloak/keycloak:25.0.0 \ start-dev & Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg. Trying to pull quay.io/keycloak/keycloak:25.0.0... Getting image source signatures Copying blob 1a6bf4378530 done Copying blob 969cd2eb857f done Copying blob 57ff0d98393a done Copying blob d1bbf278c66a done Copying config 874c259155 done Writing manifest to image destination Storing signatures Updating the configuration and installing your custom providers, if any. Please wait. 2024-06-12 09:51:40,324 INFO [io.qua.dep.QuarkusAugmentor] (main) Quarkus augmentation completed in 10114ms 2024-06-12 09:51:45,220 INFO [org.infinispan.CONTAINER] (Thread-5) ISPN000556: Starting user marshaller 'org.infinispan.jboss.marshalling.core.JBossUserMarshaller' 2024-06-12 09:51:46,232 INFO [org.keycloak.connections.infinispan.DefaultInfinispanConnectionProviderFactory] (main) Node name: node_549277, Site name: null 2024-06-12 09:51:46,239 INFO [org.keycloak.broker.provider.AbstractIdentityProviderMapper] (main) Registering class org.keycloak.broker.provider.mappersync.ConfigSyncEventListener 2024-06-12 09:51:47,729 INFO [org.keycloak.quarkus.runtime.storage.legacy.liquibase.QuarkusJpaUpdaterProvider] (main) Initializing database schema. Using changelog META-INF/jpa-changelog-master.xml UPDATE SUMMARY Run: 133 Previously run: 0 Filtered out: 0 ------------------------------- Total change sets: 133 2024-06-12 09:51:51,098 INFO [org.keycloak.services] (main) KC-SERVICES0050: Initializing master realm 2024-06-12 09:51:54,118 INFO [org.keycloak.services] (main) KC-SERVICES0009: Added user 'admin' to realm 'master' 2024-06-12 09:51:54,239 INFO [io.quarkus] (main) Keycloak 25.0.0 on JVM (powered by Quarkus 3.8.5) started in 13.767s. Listening on: http://0.0.0.0:8080. Management interface listening on http://0.0.0.0:9000. 2024-06-12 09:51:54,239 INFO [io.quarkus] (main) Profile dev activated. 2024-06-12 09:51:54,239 INFO [io.quarkus] (main) Installed features: [agroal, cdi, hibernate-orm, jdbc-h2, keycloak, logging-gelf, narayana-jta, reactive-routes, resteasy-reactive, resteasy-reactive-jackson, smallrye-context-propagation, vertx] 2024-06-12 09:51:54,246 WARN [org.keycloak.quarkus.runtime.KeycloakMain] (main) Running the server in development mode. DO NOT use this configuration in production. # 로그가 이렇게 종료되면 기동 완료된 것
이렇게 구동 후 바로 브라우저에서 http://ip:8080 으로 접근해보면 HTTPS required 오류가 발생하면서 접근할 수 없다. keycloak 컨테이너에 접속해서 sslRequired 설정을 변경해야 한다.
# 컨테이너 기동 여부 확인 docker ps -a Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0060c0bb47f3 quay.io/keycloak/keycloak:25.0.0 start-dev 7 minutes ago Up 7 minutes 0.0.0.0:8080->8080/tcp keycloak # keycloak 컨테이너에 접속 docker exec -it 0060c0bb47f3 bash Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg. bash-5.1$ cd /opt/keycloak/bin bash-5.1$ ./kcadm.sh config credentials --server http://localhost:8080 --realm master --user admin Logging into http://localhost:8080 as user admin of realm master Enter password: #docker run 할 때 설정한 패스워드 입력 (예제에서는 admin) bash-5.1$ ./kcadm.sh update realms/master -s sslRequired=NONE
다시 브라우저에서 Reload 해보면 id/pwd 입력창이 보인다.
반응형'NAVER Cloud' 카테고리의 다른 글
[네이버클라우드] Ncloud Single Sign-On(SSO) / keycloak 연동 - 2. External IdP login 설정 (1) 2024.06.13 [네이버클라우드] CDN - ALB 연동 Path pattern 분리 구성 (1) 2024.05.17 Data Flow 로 데이터 머지(data merge) 하기 (0) 2024.04.15 CloudDB for MySQL 백업 파일 오브젝트 스토리지로 내보내기 자동 설정 (1) 2024.03.21 네이버클라우드 CloudDB for MySQL Slave LB 별 설정 차이 (1) 2024.02.02