rtCloud는 싱글 사인온(SSO)을 위한 세 가지 방법을 지원합니다:

옵션최적 사용 사례
내장 KeycloakrtCloud와 함께 번들된 완전 자립형 SSO 서버를 원하는 조직
외부 OIDC 공급자이미 ID 공급자를 운영 중인 조직 (Auth0, Authentik, Okta, Supabase 등)
Azure Active DirectoryMicrosoft 365 또는 Azure AD를 사용하는 조직

SSO가 구성되지 않으면 사용자는 관리 패널을 통해 관리되는 로컬 rtCloud 계정으로 로그인합니다.


내장 Keycloak

배포에는 rtCloud와 함께 실행되는 선택적 Keycloak 컨테이너가 포함됩니다. Keycloak은 rtSurvey 렐름으로 사전 구성되어 즉시 사용할 수 있습니다.

요구 사항

  • HTTPS가 있는 도메인 이름 (Keycloak은 프로덕션에서 HTTPS가 필요합니다)
  • 서버에 최소 4 GB RAM (Keycloak은 약 512 MB 메모리를 추가로 사용합니다)

설정

1. .env에서 환경 변수 구성:

  # 내장 Keycloak 컨테이너 활성화
EMBED_KEYCLOAK=true

# Keycloak URL — 실제 도메인 사용
KEYCLOAK_URL=https://rtcloud.example.com/auth
KC_HOSTNAME=https://rtcloud.example.com/auth
KC_HOSTNAME_STRICT=false

# 렐름 및 클라이언트 설정 (가져온 렐름 JSON과 일치)
KEYCLOAK_REALM=rtsurvey
KEYCLOAK_CLIENT_ID=rtsurvey-app
KEYCLOAK_CLIENT_SECRET=your-client-secret-here

# Keycloak 관리자 자격 증명
KEYCLOAK_ADMIN_USER=admin
KEYCLOAK_ADMIN_PASSWORD=change_me_keycloak_admin_password

# Keycloak 데이터베이스 (자동으로 생성됨)
KEYCLOAK_DB=keycloak
KEYCLOAK_DB_USER=keycloak
KEYCLOAK_DB_PASSWORD=change_me_keycloak_db_password

# Keycloak이 수신 대기하는 포트 (호스트 측, Nginx로 프록시)
KEYCLOAK_PORT=8091
  

2. 내장 Keycloak 프로파일로 시작:

  docker compose -f docker-compose.production.yml --profile embed-keycloak up -d
  

3. Keycloak이 정상인지 확인:

  docker compose -f docker-compose.production.yml ps
  

2~3분 후 rtcloud-keycloak 컨테이너에 Up (healthy)가 표시되어야 합니다.

4. Keycloak 관리 콘솔 접속:

  https://rtcloud.example.com/auth/admin
  

KEYCLOAK_ADMIN_USERKEYCLOAK_ADMIN_PASSWORD로 로그인합니다.

사전 구성된 내용

내장 Keycloak은 다음을 포함하는 사전 가져온 rtsurvey 렐름으로 시작합니다:

  • 웹 애플리케이션에 대한 클라이언트 구성
  • 기본 사용자 역할 (admin, project_manager, enumerator, analyst)
  • rtSurvey에 최적화된 세션 및 토큰 설정

Keycloak 관리 콘솔에서 직접 사용자를 추가하거나 Keycloak을 업스트림 ID 공급자(LDAP, SAML)에 연결할 수 있습니다.

Nginx 라우팅

클라우드 배포 스크립트를 사용할 때 Nginx는 두 서비스를 모두 프록시하도록 구성됩니다:

경로백엔드
/127.0.0.1:8080의 rtCloud 앱
/auth/127.0.0.1:8090의 Keycloak

외부 OIDC 공급자

rtCloud를 OpenID Connect 호환 ID 공급자에 연결합니다. 이 방법은 Keycloak 컨테이너가 필요 없습니다.

지원 공급자

다음을 포함한 모든 OIDC 호환 공급자가 작동합니다:

  • Authentik
  • Auth0
  • Okta
  • Keycloak (외부 인스턴스)
  • Supabase
  • Google (Google Workspace 조직)
  • GitHub (OIDC 확장이 있는 OAuth 앱)

설정

1. ID 공급자에서 rtCloud를 OIDC 클라이언트로 등록합니다.

다음이 필요합니다:

  • 클라이언트 ID클라이언트 시크릿
  • 리디렉션 URI 등록: https://rtcloud.example.com/auth/callback
  • 모바일 앱 지원을 위해 추가 등록: vn.rta.rtsurvey.auth://callback

2. .env에서 환경 변수 구성:

  # OIDC 검색 URL (공급자별 — IdP 문서 확인)
OIDC_ISSUER_URL=https://your-identity-provider.com

# ID 공급자의 클라이언트 자격 증명
OIDC_CLIENT_ID=rtcloud-app
OIDC_CLIENT_SECRET=your-client-secret-here

# 요청할 스코프 (openid, profile, email이 일반적으로 충분)
OIDC_SCOPE=openid profile email

# ID 공급자에 등록된 리디렉션 URI
OIDC_REDIRECT_URI=https://rtcloud.example.com/auth/callback

# 선택 사항: 별도 모바일 앱 클라이언트
OIDC_MOBILE_CLIENT_ID=rtcloud-mobile
OIDC_MOBILE_REDIRECT_URI=vn.rta.rtsurvey.auth://callback

# 새 OIDC 사용자를 위해 rtCloud 계정을 자동으로 생성하려면 true로 설정
OPEN_REGISTRATION=false
  

3. 변경 사항을 적용하기 위해 앱 컨테이너를 재시작합니다:

  docker compose -f docker-compose.production.yml up -d --force-recreate rtcloud
  

사용자 자동 프로비저닝

OPEN_REGISTRATION=true이면 rtCloud는 사용자가 OIDC를 통해 처음 로그인할 때 자동으로 로컬 계정을 만듭니다. 계정은 ID 토큰의 사용자 이름 및 이메일로 채워집니다.

OPEN_REGISTRATION=false (기본값)이면 rtCloud 관리자가 먼저 사용자 계정을 만들어야 하며, OIDC ID는 첫 번째 로그인 시 연결됩니다.

사용자 지정 엔드포인트

공급자가 OIDC 검색(.well-known/openid-configuration)을 지원하지 않는 경우 엔드포인트를 수동으로 설정할 수 있습니다:

  OIDC_AUTHORIZATION_ENDPOINT=https://your-provider.com/oauth2/authorize
OIDC_TOKEN_ENDPOINT=https://your-provider.com/oauth2/token
OIDC_USERINFO_ENDPOINT=https://your-provider.com/oauth2/userinfo
  

Azure Active Directory

조직의 Microsoft Azure AD 테넌트와 rtCloud를 통합합니다.

설정

1. Azure Portal에서 새 앱을 등록합니다:

  • Azure Active Directory앱 등록새 등록 이동
  • 이름: rtCloud
  • 리디렉션 URI: https://rtcloud.example.com/auth/callback (웹 유형)
  • 생성 후 애플리케이션 (클라이언트) ID디렉토리 (테넌트) ID를 기록합니다
  • 인증서 및 비밀에서 새 클라이언트 비밀을 만듭니다

2. .env에서 환경 변수 구성:

  AZURE_CLIENT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
AZURE_TENANT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  

3. 앱 컨테이너를 재시작합니다:

  docker compose -f docker-compose.production.yml up -d --force-recreate rtcloud
  

이제 Azure AD 테넌트의 사용자가 Microsoft 자격 증명을 사용하여 rtCloud에 로그인할 수 있습니다.


SSO 비활성화

로컬 인증으로 되돌리려면 .env에서 모든 SSO 관련 변수를 제거하거나 주석 처리한 후 앱 컨테이너를 재시작합니다:

  docker compose -f docker-compose.production.yml up -d --force-recreate rtcloud
  

내장 Keycloak을 사용하고 있었다면 --profile embed-keycloak 플래그를 생략하고 docker compose down을 실행한 후 프로파일 없이 up -d를 실행하여 중지합니다.

이 페이지가 도움이 되었나요?