0부터 시작하는 Keycloak 공부 - OIDC를 이용한 Keycloak & Harbor SSO 연동

Jaehong Lee·2023년 8월 17일
2
post-thumbnail

1. 목표


2. Harbor Image 작업

Harbor와 Keycloak은 Https 통신을 해야 한다. Keycloak의 Ingress LB에 TLS 인증서를 등록했으므로, Harbor에 Root CA 인증서를 등록해야 한다


Harbor Core

FROM gitea.hong.net:3000/devtool/harbor-core:v2.7.1
USER root
COPY localCA.pem /usr/
RUN /bin/bash -c 'cat /usr/localCA.pem >> /etc/pki/tls/certs/ca-bundle.crt'
  • Harbor Core Container의 OS는 Photon OS 이다. Root CA 인증서가 등록된 파일 경로는 위와 같다
    • Harbor Core는 Harbor의 핵심 엔진으로, 컨테이너 이미지의 저장 및 관리를 처리하고, 사용자 계정과 역할을 관리하는 컴포넌트다
docker build --no-cache -t gitea.hong.net:3000/devtool/ca-harbor-core:v2.7.1 .
  • Image를 Build하고, Helm Chart에 적용하자

Harbor Portal

FROM gitea.hong.net:3000/devtool/harbor-portal:v2.7.1
USER root
COPY localCA.pem /usr/
RUN /bin/bash -c 'cat /usr/localCA.pem >> /etc/pki/tls/certs/ca-bundle.crt'
  • Harbor Portal Container의 OS는 Photon OS 이다. Root CA 인증서가 등록된 파일 경로는 위와 같다
    • Harbor Portal은 사용자 인터페이스를 제공하는 컴포넌트다
docker build --no-cache -t gitea.hong.net:3000/devtool/ca-harbor-portal:v2.7.1 .
  • Image를 Build하고, Helm Chart에 적용하자
helm install harbor -n harbor .
  • Helm Chart를 이용하여 Harbor를 배포하자

3. Keycloak 설정

Client 설정

Client 생성 & 기본 설정

  • Access Type은 confidential로 설정. Secret을 사용하는 방식이 보안성이 높다
    • Confidential : 클라이언트 애플리케이션이 사용자 인증&인가를 위해 Secret을 Keycloak에 제출하는 방식. Secret은 클라이언트와 함께 등록되며 서버 간의 보안된 통신을 통해 Token을 발급받고, 사용자 인증을 수행한다
    • Public : 사용자 인증&인가에 Secret 제출이 필요 없는 방식
    • Bearer-Only : 로그인 프로토콜이 불필요한 WEB 서비스용 방식

  • Url은 위와 같이 설정한다
  • Valid Redirect URIs는 “Harbor 주소”/c/oidc/callback 으로 설정해야 한다

Secret & Scope 설정

  • Access Type을 Confidential로 설정했으므로, Secret을 기억해두자

  • Scope 설정에 들어가서 Full Scope Allowed를 해제하자

Role 설정

  • admin Role을 생성하고, Composite Roles 설정을 키자

  • Composite Role은 위와 같이 설정하자

User 설정

  • User 설정에 들어가서 생성한 Harbor의 Role을 할당해주자

4. Harbor 설정

  • Harbor에 admin 계정으로 로그인한 뒤, 설정에 들어가자
  • OIDC 설정은 위와 같다
  • OIDC Endpoint는 Issuer URL을 의미한다
  • Client ID와 Secret은 Keycloak에서 설정한 Harbor Client를 참조하여 입력하면 된다

5. 연동 확인

  • OIDC PROVIDER를 이용한 로그인 버튼을 누르자

  • Keycloak 로그인 창이 출력된다

  • Keycloak에서 생성한 User 계정으로 잘 로그인된다

OIDC를 이용한 Harbor - Keycloak SSO 연동이 완료되었다

profile
멋진 엔지니어가 될 때까지

2개의 댓글

comment-user-thumbnail
2023년 8월 17일

정리가 잘 된 글이네요. 도움이 됐습니다.

답글 달기
comment-user-thumbnail
2024년 6월 4일

tls: failed to verify certificate: x509: certificate signed by unknown authority
위가 같이 인증서 자체 서명에 대한 오류가 나오는 부분은 어떻게 해결 하셨나요...?

답글 달기