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

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

1. 목표

  • OIDC를 이용해 ArgoCD - Keycloak SSO 연동을 하고자 한다

  • 인증 인가 과정에서 ArgoCD와 Keycloak 사이의 통신은 Https 통신을 사용한다


2. ArgoCD Root CA 인증서 등록

x509 Error 발생 이유 by DEX

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

  • 하지만 ArgoCD 컨테이너에 Root CA 인증서를 등록해도, x509 인증 문제가 발생한다. 이는 ArgoCD의 인증&인가를 DEX가 담당하기 때문이다

DEX에 Root CA 인증서 등록

  • DEX는 SSO 및 인증 서버를 구축하기 위한 OSS이다. DEX는 OIDC & OAuth2.0 프로토콜을 지원한다. DEX를 ArgoCD와 함께 사용할 경우, ArgoCD에 대한 인증&인가를 관리한다
certificateSecret:
    # -- Create argocd-dex-server-tls secret
    enabled: true
    # -- Labels to be added to argocd-dex-server-tls secret
    labels: {}
    # -- Annotations to be added to argocd-dex-server-tls secret
    annotations: {}
    ca: |
      ' Root CA 인증서 내용 '
    key: |
      ' 개인 키 내용 '
    crt: |
      ' TLS 인증서 내용 '
  • Helm Chart values.yaml의 dex.certificateSecret을 설정해야 한다. DEX 서버에 적용될 TLS 인증서 & Root CA 인증서를 담은 Secret을 생성하는 설정이다

3. Keycloak 설정

Client 설정

Client 생성 및 기본 설정

  • Client 기본 설정은 위와 같다
  • Valid Redirect URIs는 “argocd URL”/auth/callback 으로 설정해야 한다

Scope 설정

  • Scope에 들어가서 Full Scope Allowed 를 해제한다

Role 설정

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

User 설정

  • Argocd Client에서 생성한 Role을 할당해주자

4. ArgoCD 설정

## Argo Configs
configs:
  # General Argo CD configuration
  ## Ref: https://github.com/argoproj/argo-cd/blob/master/docs/operator-manual/argocd-cm.yaml
  cm:
    # -- Create the argocd-cm configmap for [declarative setup]
    create: true

    # -- Annotations to be added to argocd-cm configmap
    annotations: {}

    # -- Argo CD's externally facing base URL (optional). Required when configuring SSO
    url: https://argocd.hong.net
    oidc.config: |
      name: Keycloak
      issuer: https://keycloak.hong.net/realms/Devtool
      clientID: argocd
      clientSecret: ****************
      requestedScopes: ["openid", "profile", "email"]
  • Helm Chart의 values.yaml에 들어가서 argocd-cm 부분을 설정해주자
    • Argocd의 인증&인가는 DEX 서버가 관리하기에 DEX 서버에 설정해줘야 한다. DEX 서버의 설정 값은 argocd-cm이라는 ConfigMap이 관리한다
  • issuer URL , ClientID, Client Secret, Scope를 입력해주자
helm upgrade argocd -n argocd .
  • 변경 사항을 적용하자

5. 연동 확인

  • Keycloak을 이용한 로그인 버튼을 누르자

  • Keycloak에서 생성한 User 계정으로 로그인되었다

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

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

1개의 댓글

comment-user-thumbnail
2024년 9월 10일

안녕하세요 글 잘 봤습니다. 혹시 keycloak 과 argocd 간 https 통신에 관한 tls 이슈는 어떻게 해결하셨나요? 저는 keycloak은 도커로 설치, argocd는 ingress로 사설도메인 이용하여 사용중인데 tls x509 에러가 자꾸 발생하네요ㅠㅠ

답글 달기