ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [네이버클라우드] 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 입력창이 보인다.

    반응형

    댓글

Designed by Tistory.