Keycloak 싱글 사인온(SSO)

Last reviewed 2024-04-29 UTC

이 가이드에서는 SAML 제휴를 통해 Keycloak과 Cloud ID 또는 Google Workspace 계정 간에 싱글 사인온(SSO)을 설정하는 방법을 보여줍니다. 이 문서에서는 Keycrok를 설치하여 사용 중이라고 가정합니다.

목표

  • Cloud ID 또는 Google Workspace에서 ID 공급업체(IdP)로 사용할 수 있도록 Keycloak 서버를 구성합니다.
  • SSO에 Keycloak를 사용하도록 Cloud ID 또는 Google Workspace 계정을 구성합니다.

시작하기 전에

  1. Cloud ID 계정이 없으면 계정에 가입합니다.
  2. Cloud ID 계정에 최고 관리자 권한이 있는지 확인합니다.
  3. Keycloak 서버가 둘 이상의 렐름을 관리하는 데 사용되는 경우 제휴에 사용할 렐름을 결정합니다.
  4. 선택한 렐름에 대한 관리 액세스 권한이 있어야 합니다.

SAML 프로필 만들기

Keycloak에서 싱글 사인온(SSO)을 구성하려면 먼저 Cloud ID 또는 Google Workspace 계정에 SAML 프로필을 만듭니다. SAML 프로필에는 URL 및 서명 인증서를 비롯하여 Keycloak 서버와 관련된 설정이 포함됩니다.

나중에 SAML 프로필을 특정 그룹 또는 조직 단위에 할당합니다.

Cloud ID 또는 Google Workspace 계정에 새 SAML 프로필을 만들려면 다음 단계를 따르세요.

  1. 관리 콘솔에서 보안 > 인증 > 서드 파티 IdP를 통한 SSO로 이동합니다.

    서드 파티 IdP를 통해 SSO로 이동

  2. 서드 파티 SSO 프로필 > SAML 프로필 추가를 클릭합니다.

  3. SAML SSO 프로필 페이지에서 다음 설정을 입력합니다.

    • 이름: Keycloak
    • IDP 엔티티 ID:

      KeyCloak 17 이상

      https://KEYCLOAK/realms/REALM
      

      KeyCloak 16 이하

      https://KEYCLOAK/auth/realms/REALM
      
    • 로그인 페이지 URL:

      KeyCloak 17 이상

      https://KEYCLOAK/realms/REALM/protocol/saml
      

      KeyCloak 16 이하

      https://KEYCLOAK/auth/realms/REALM/protocol/saml
      
    • 로그아웃 페이지 URL:

      KeyCloak 17 이상

      https://KEYCLOAK/realms/REALM/protocol/openid-connect/logout
      

      KeyCloak 16 이하

      https://KEYCLOAK/auth/realms/REALM/protocol/openid-connect/logout?redirect_uri=https://KEYCLOAK/auth/realms/REALM/account/
      
    • 비밀번호 변경 URL:

      KeyCloak 17 이상

      https://KEYCLOAK/realms/REALM/account
      

      KeyCloak 16 이하

      https://KEYCLOAK/auth/realms/REALM/account
      

    모든 URL에서 다음을 바꿉니다.

    • KEYCLOAK: Keycloak 서버의 정규화된 도메인 이름
    • REALM: 선택한 렐름의 이름

    아직 인증서를 업로드하지 마세요.

  4. 저장을 클릭합니다.

    표시되는 SAML SSO 프로필 페이지에는 두 가지 URL이 포함되어 있습니다.

    • 엔티티 ID
    • ACS URL

    다음 섹션에서 Keycloak를 구성할 때 이 URL이 필요합니다.

Keycloak 구성

클라이언트를 만들어 Keycloak 서버를 구성합니다.

클라이언트 만들기

Keycloak에서 새 SAML 클라이언트를 만듭니다.

  1. Keycloak에 로그인하여 관리 콘솔을 엽니다.
  2. 제휴에 사용할 렐름을 선택합니다.
  3. 메뉴에서 Clients(클라이언트)를 선택합니다.
  4. 클라이언트 만들기를 클릭합니다.
  5. 클라이언트에 대해 다음 설정을 구성합니다.

    KeyCloak 19 이상

    • 클라이언트 유형: SAML
    • 클라이언트 ID: SSO 프로필의 엔티티 URL
    • 이름: Google Cloud

    KeyCloak 18 이하

    • 클라이언트 ID: SSO 프로필의 엔티티 URL
    • 클라이언트 프로토콜: saml
    • 클라이언트 SAML 엔드포인트: 비워 둠
  6. 저장을 클릭합니다.

  7. 다음 설정을 구성하여 클라이언트의 세부정보를 지정합니다.

    KeyCloak 19 이상

    설정 탭에서 다음을 수행합니다.

    • 유효한 리디렉션 URI: SSO 프로필의 ACS URL
    • 이름 ID 형식: 이메일
    • 이름 ID 형식 강제 적용: 사용
    • 서명 문서: 사용 중지
    • 서명 어설션: 사용

    탭에서 다음을 수행합니다.

    • 클라이언트 서명 필요: 사용 중지

    KeyCloak 18 이하

    • 이름: Google Cloud 같은 이름
    • 서명 어설션: 사용
    • 클라이언트 서명 필요: 사용 중지
    • 이름 ID 형식 강제 적용: 사용
    • 이름 ID 형식: 이메일
    • 유효한 리디렉션 URI: SSO 프로필의 ACS URL

    다른 모든 설정은 기본값을 유지합니다.

  8. 저장을 클릭합니다.

서명 인증서 내보내기

Keycloak은 사용자를 인증한 후 SAML 어설션을 Cloud ID 또는 Google Workspace에 전달합니다. Cloud ID 및 Google Workspace에서 이 어설션의 무결성 및 신뢰성을 확인하기 위해 Keycloak은 특수 토큰 서명 키로 어설션에 서명하고 Cloud ID 또는 Google Workspace에서 서명을 확인할 수 있는 인증서를 제공합니다.

이제 Keycloak에서 서명 인증서를 내보냅니다.

  1. 메뉴에서 렐름 설정를 선택합니다.
  2. 탭을 선택합니다.
  3. 알고리즘: RS256 행을 찾습니다. 행이 두 개 이상인 경우 Use: SIG가 있는 행을 사용하세요. 그런 다음 Certificate(인증서)를 선택합니다.

    base64로 인코딩된 인증서가 포함된 대화상자가 나타납니다.

  4. base64로 인코딩된 인증서 값을 클립보드에 복사합니다.

서명 인증서를 사용하려면 먼저 헤더 및 바닥글을 추가하여 PEM 형식으로 변환해야 합니다.

  1. 메모장 또는 vim과 같은 텍스트 편집기를 엽니다.
  2. 다음 헤더와 줄바꿈을 붙여넣습니다.

    -----BEGIN CERTIFICATE-----
    
  3. 클립보드에서 base64로 인코딩된 인증서를 붙여넣습니다.

  4. 줄바꿈을 추가하고 다음 바닥글을 붙여넣습니다.

    -----END CERTIFICATE-----
    

    변경 후 파일은 다음과 유사합니다.

    -----BEGIN CERTIFICATE-----
    MIICmzCCAYMCBgF7v8/V1TANBgkq...
    -----END CERTIFICATE-----
    
  5. 파일을 컴퓨터의 임시 위치에 저장합니다.

SAML 프로필 작성

서명 인증서를 사용하여 SAML 프로필 구성을 완료합니다.

  1. 관리 콘솔로 돌아가서 보안 > 인증 > 서드 파티 IdP를 통한 SSO로 이동합니다.

    서드 파티 IdP를 통해 SSO로 이동

  2. 앞에서 만든 Keycloak SAML 프로필을 엽니다.

  3. IDP 세부정보 섹션을 클릭하여 설정을 수정합니다.

  4. 인증서 업로드를 클릭하고 이전에 다운로드한 토큰 서명 인증서를 선택합니다.

  5. 저장을 클릭합니다.

SAML 프로필은 완료되었지만 이를 할당해야 합니다.

SAML 프로필 할당

새 SAML 프로필을 적용할 사용자를 선택합니다.

  1. 관리 콘솔의 서드 파티 IDP를 통한 SSO 페이지에서 SSO 프로필 할당 관리 > 관리를 클릭합니다.

    SSO 프로필 할당 관리로 이동

  2. 왼쪽 창에서 SSO 프로필을 적용할 그룹 또는 조직 단위를 선택합니다. 모든 사용자에게 프로필을 적용하려면 루트 조직 단위를 선택합니다.

  3. 오른쪽 창에서 다른 SSO 프로필을 선택합니다.

  4. 메뉴에서 앞에서 만든 Keycloak - SAML SSO 프로필을 선택합니다.

  5. 저장을 클릭합니다.

단계를 반복하여 다른 그룹 또는 조직 단위에 SAML 프로필을 할당합니다.

싱글 사인온(SSO) 테스트

싱글 사인온(SSO) 구성을 완료했습니다. 이제 SSO가 의도한 대로 작동하는지 확인할 수 있습니다.

  1. 다음 기준을 충족하는 Keycloak 사용자를 선택합니다.

    • 사용자에게 이메일 주소가 있습니다.
    • 이메일 주소는 Cloud ID 또는 Google Workspace 계정에 있는 기존 사용자의 기본 이메일 주소에 해당합니다.
    • Cloud ID 사용자에게 최고 관리자 권한이 없습니다.

      최고 관리자 권한이 있는 사용자 계정은 항상 Google 사용자 인증 정보를 사용하여 로그인해야 하므로 싱글 사인온(SSO) 테스트에 적합하지 않습니다.

  2. 새 브라우저 창을 열고 Google Cloud Console로 이동합니다.

  3. Google 로그인 페이지에서 사용자 계정의 이메일 주소를 입력하고 다음을 클릭합니다.

    Google 로그인 페이지

    Keycloak로 리디렉션됩니다.

  4. Keycloak 사용자 인증 정보를 입력하고 로그인을 클릭합니다.

    인증에 성공하면 Keycloak이 사용자를 다시 Google Cloud Console로 리디렉션합니다. 이번이 이 사용자의 첫 번째 로그인이므로 Google 서비스 약관 및 개인정보처리방침에 동의하라는 메시지가 나타납니다.

  5. 약관에 동의하면 동의를 클릭합니다.

  6. Google Cloud Console로 리디렉션되어, 환경설정을 확인하고 Google Cloud 서비스 약관에 동의하라는 메시지가 나타납니다. 약관에 동의하면 를 클릭한 다음 동의 및 계속하기를 클릭합니다.

  7. 아바타 아이콘을 클릭하고 로그아웃을 클릭합니다.

    Keycloak로 리디렉션됩니다.

로그인하는 데 문제가 있어도 최고 관리자 권한이 있는 사용자 계정은 SSO를 우회할 수 있으므로 관리 콘솔을 사용하여 설정을 확인하거나 변경할 수 있습니다.

(선택사항) 도메인별 서비스 URL에 대한 리디렉션 구성

내부 포털 또는 문서에서 Google Cloud 콘솔에 연결할 때 도메인별 서비스 URL을 사용하여 사용자 경험을 개선할 수 있습니다.

https://console.cloud.google.com/ 같은 일반 서비스 URL과 달리 도메인별 서비스 URL에는 기본 도메인 이름이 포함됩니다. 인증되지 않은 사용자가 도메인별 서비스 URL의 링크를 클릭하면 Google 로그인 페이지가 먼저 표시되지 않고 즉시 Keycloak으로 리디렉션됩니다.

도메인별 서비스 URL의 예는 다음과 같습니다.

Google 서비스 URL 로고
Google Cloud 콘솔 https://www.google.com/a/DOMAIN/ServiceLogin?continue=https://console.cloud.google.com Google Cloud 로고
Google Docs https://docs.google.com/a/DOMAIN Google 문서 로고
Google Sheets https://www.google.com/a/DOMAIN/ServiceLogin?continue=https://sheets.google.com Google Sheets 로고
Google 사이트 https://www.google.com/a/DOMAIN/ServiceLogin?continue=https://slides.google.com Google Sites 로고
Google Drive https://drive.google.com/a/DOMAIN Google Drive 로고
Gmail https://mail.google.com/a/DOMAIN Gmail 로고
Google 그룹스 https://www.google.com/a/DOMAIN/ServiceLogin?continue=https://groups.google.com Google 그룹스 로고
Google Keep https://www.google.com/a/DOMAIN/ServiceLogin?continue=https://keep.google.com Google Keep 로고
Looker Studio https://www.google.com/a/DOMAIN/ServiceLogin?continue=https://lookerstudio.google.com Looker Studio 로고
YouTube https://www.google.com/a/DOMAIN/ServiceLogin?continue=https://www.youtube.com/ YouTube 로고

도메인별 서비스 URL이 Keycloak로 리디렉션되도록 구성하려면 다음 단계를 따르세요.

  1. 관리 콘솔의 서드 파티 IDP를 통한 SSO 페이지에서 도메인별 서비스 URL > 수정을 클릭합니다.

    도메인별 서비스 URL로 이동

  2. 다음 SSO 프로필의 서드 파티 IdP로 사용자 자동 리디렉션사용 설정됨으로 설정합니다.

  3. SSO 프로필Keycloak로 설정합니다.

  4. 저장을 클릭합니다.

(선택사항) 본인 확인 요청 구성

사용자가 알 수 없는 기기에서 로그인하거나 다른 이유로 인해 로그인 시도가 의심스러운 경우 Google 로그인에서 추가 확인을 요청할 수 있습니다. 이러한 본인 인증 요청은 보안을 개선하는 데 도움이 되므로 본인 인증 요청을 사용 설정한 상태로 두는 것이 좋습니다.

본인 인증 요청으로 인해 불편을 끼치는 경우 다음 단계에 따라 본인 인증 요청을 사용 중지할 수 있습니다.

  1. 관리 콘솔에서 보안 > 인증 > 본인 인증 요청으로 이동합니다.
  2. 왼쪽 창에서 로그인 질문을 사용 중지하려는 조직 단위를 선택합니다. 모든 사용자에 대해 본인 확인 요청을 사용 중지하려면 루트 조직 단위를 선택합니다.
  3. 다른 SSO 프로필을 사용하여 로그인하는 사용자에 대한 설정에서 사용자에게 Google의 추가 인증을 요청하지 않음을 선택합니다.
  4. 저장을 클릭합니다.

다음 단계