Skip to main content
Version: Latest(v3.0) 🔥

Multi Auth Guide (SAML & LDAP)

개요

이 문서는 APIM BFF에서 SAML(Security Assertion Markup Language)과 LDAP(Active Directory) 인증을 설정하고 운영하는 방법에 대한 완전한 가이드입니다.

  • *백엔드(Kubernetes)**와 프론트엔드(BFF 콘솔) 설정을 모두 포함합니다.

목차


toc_min_heading_level: 1 toc_max_heading_level: 3


기본 개념

도메인별 인증 분기란?

APIM BFF는 접속하는 도메인에 따라 다른 인증 방식을 사용할 수 있습니다:

  • 기본 인증: 일반적인 베이직 인증
  • SAML 인증: 특정 도메인에서 SAML IDP를 통한 인증
  • LDAP 인증: 특정 도메인에서 LDAP/Active Directory를 통한 인증

전체 설정 흐름

  1. 백엔드 설정 (Kubernetes): Tenant Manager에 인증 프로파일 및 환경변수 설정
  2. 프론트엔드 설정 (BFF 콘솔): 도메인별 인증 방식 분기 설정

사용 시나리오

예시 1: SAML 인증 도메인 (IDP 로그아웃 활성화)
  • 백엔드: k8s_saml 프로파일 사용
  • 프론트엔드: console1.xxx.com → SAML 도메인 설정, IDP 로그아웃 활성화 ON
  • 특징: 로그아웃 버튼이 표시되지 않음, 에러 메시지 제거
예시 2: SAML 인증 도메인 (IDP 로그아웃 비활성화)
  • 백엔드: k8s_saml 프로파일 사용
  • 프론트엔드: console1.xxx.com → SAML 도메인 설정, IDP 로그아웃 활성화 OFF
  • 특징: 일반 인증과 동일하게 동작 (로그아웃 버튼 표시, 에러 메시지 표시)
예시 3: LDAP 인증 도메인
  • 백엔드: k8s_ldap 프로파일 사용
  • 프론트엔드: console2.xxx.com → LDAP 도메인 설정
예시 4: 기본 인증 도메인
  • 백엔드: 기본 프로파일 사용
  • 프론트엔드: 설정되지 않은 도메인
  • 인증 방식: 기본 베이직 인증

백엔드 설정 (Kubernetes)

2.1 각 프로파일 설명

k8s_ldap

  • 설명: LDAP(Lightweight Directory Access Protocol) 인증만 사용하는 프로파일
  • 사용 사례: 기업 내부 Active Directory나 LDAP 서버를 사용한 사용자 인증
  • 특징:
    • LDAP 서버와 직접 통신하여 사용자 인증
    • 그룹 기반 권한 관리 지원
    • SAML 기능 비활성화

k8s_saml

  • 설명: SAML(Security Assertion Markup Language) 인증만 사용하는 프로파일
  • 사용 사례: Keycloak, Okta, Azure AD 등 외부 IdP(Identity Provider)를 통한 SSO 인증
  • 특징:
    • IdP 메타데이터 자동 파싱 지원
    • URL, 클래스패스, 파일 시스템 등 다양한 메타데이터 소스 지원
    • LDAP 기능 비활성화

k8s_multi

  • 설명: LDAP와 SAML 인증을 동시에 지원하는 프로파일
  • 사용 사례: 다양한 인증 방식을 선택적으로 사용해야 하는 환경
  • 특징:
    • LDAP와 SAML 두 가지 인증 방식 모두 활성화
    • 사용자가 인증 방식을 선택하여 로그인 가능
    • 각 인증 방식별로 독립적인 세션 관리

2.2 k8s_ldap 전용 환경변수

필수 환경변수

LDAP 서버 설정

환경변수설명예시기본값필수
LDAP_SERVER_URLLDAP 서버 주소ldap://skbb.co.kr:389/DC=skbb,DC=co,DC=krldap://goblin-ldap.goblin-ldap.svc.cluster.local:389/dc=skapim,dc=com
LDAP_MANAGER_DNLDAP 관리자 DN (Distinguished Name)CN=Apim,OU=Users,DC=skbb,DC=co,DC=krcn=admin,dc=skapim,dc=com
LDAP_MANAGER_PASSWORDLDAP 관리자 비밀번호akemfdj1@-

LDAP 인증 설정

환경변수설명예시기본값필수
LDAP_USER_DN_PATTERNS사용자 DN 패턴 (0은 사용자명으로 치환됨)cn=0,OU=partners,OU=HQ,OU=SKB,DC=skbb,DC=co,DC=krcn=0,ou=people⚠️
LDAP_GROUP_SEARCH_BASE그룹 검색 기본 DNOU=Groups,OU=HQ,OU=SKB,DC=skbb,DC=co,DC=krou=groups⚠️
LDAP_GROUP_ROLE_ATTRIBUTE그룹 역할 속성명cncn⚠️
LDAP_PASSWORD_ATTRIBUTE비밀번호 속성명userPassworduserPassword⚠️

배포용 k8s deploy 중요부분만

apiVersion: apps/v1
kind: Deployment
metadata:
name: apim-tenant-manager-deployment
labels:
app: apim-tenant-manager
spec:
replicas: 1
selector:
matchLabels:
app: apim-tenant-manager
template:
metadata:
labels:
app: apim-tenant-manager
spec:
containers:
- name: apim-tenant-manager
image: registry.example.com/apim-tenant-manager:latest
ports:
- containerPort: 8080
env:
# 프로파일 설정- name: SPRING_PROFILES_ACTIVE
value: "k8s_ldap"


# LDAP 서버 설정- name: LDAP_SERVER_URL
value: "ldap://skbb.co.kr:389/DC=skbb,DC=co,DC=kr"
- name: LDAP_MANAGER_DN
value: "CN=Apim,OU=Users,DC=skbb,DC=co,DC=kr"
- name: LDAP_MANAGER_PASSWORD
valueFrom:
secretKeyRef:
name: ldap-secret
key: manager-password

# LDAP 인증 설정- name: LDAP_USER_DN_PATTERNS
value: "cn={0},OU=partners,OU=HQ,OU=SKB,DC=skbb,DC=co,DC=kr"
- name: LDAP_GROUP_SEARCH_BASE
value: "OU=Groups,OU=HQ,OU=SKB,DC=skbb,DC=co,DC=kr"
- name: LDAP_GROUP_ROLE_ATTRIBUTE
value: "cn"


중요 사항:
  • SPRING_PROFILES_ACTIVE는 반드시 k8s_ldap로 설정
  • LDAP 서버 URL은 Kubernetes 내부 Service 이름으로도 사용 가능 (예: ldap://ldap-service.namespace.svc.cluster.local:389)

2.3 k8s_saml 전용 환경변수

필수 환경변수

SAML SP (Service Provider) 설정

환경변수설명예시기본값필수
SAML_SP_ENTITY_IDSP Entity ID (고유 식별자)apim-tenant-managerapim-tenant-manager⚠️
SAML_SP_METADATA_URLSP 메타데이터 URL/saml/metadata/saml/metadata⚠️
SAML_SP_SSO_URLSP SSO URL/saml/sso/saml/sso⚠️
SAML_SP_SLO_URLSP SLO (Single Logout) URL/saml/slo/saml/slo⚠️
SAML_SP_ACS_URLSP ACS (Assertion Consumer Service) URL/saml/acs/saml/acs⚠️
SAML_SP_KEYSTORE_LOCATION키스토어 파일 위치classpath:saml/keystore.jksclasspath:saml/keystore.jks⚠️
SAML_SP_KEYSTORE_PASSWORD키스토어 비밀번호changeit-
SAML_SP_PRIVATE_KEY_PASSWORD개인키 비밀번호changeit-
SAML_SP_CERTIFICATE_ALIAS인증서 별칭samlsaml⚠️

SAML IdP (Identity Provider) 설정

환경변수설명예시기본값필수
SAML_IDP_METADATA_URLIdP 메타데이터 소스 (XML 파일 또는 URL)주의: 메타데이터에서 자동으로 entity-id, sso-url, slo-url 등을 파싱함URL: https://keycloak.api.skapim.com/realms/saml/protocol/saml/descriptor파일: classpath:saml/idp-metadata.xmlConfigMap: file:/etc/config/idp-metadata.xmlhttps://keycloak.api.skapim.com/realms/saml/protocol/saml/descriptor
SAML_IDP_ENTITY_IDIdP Entity ID (메타데이터 파싱 실패 시 Fallback)https://keycloak.api.skapim.com/realms/saml-⚠️
SAML_IDP_SSO_URLIdP SSO URL (메타데이터 파싱 실패 시 Fallback)https://keycloak.api.skapim.com/realms/saml/protocol/saml-⚠️
SAML_IDP_SLO_URLIdP SLO URL (메타데이터 파싱 실패 시 Fallback)https://keycloak.api.skapim.com/realms/saml/protocol/saml-⚠️
SAML_IDP_CERTIFICATE_LOCATIONIdP 인증서 파일 위치classpath:saml/idp-certificate.crtclasspath:saml/idp-certificate.crt⚠️

SAML 보안 설정

환경변수설명예시기본값필수
SAML_SECURITY_REQUIRE_SIGNED_ASSERTIONSAssertion 서명 필요 여부truetrue⚠️
SAML_SECURITY_REQUIRE_SIGNED_RESPONSESResponse 서명 필요 여부truetrue⚠️
SAML_SECURITY_REQUIRE_ENCRYPTED_ASSERTIONSAssertion 암호화 필요 여부falsefalse⚠️
SAML_SECURITY_ASSERTION_VALIDITY_TIMEAssertion 유효 시간 (초)300300 (5분)⚠️
SAML_SECURITY_RESPONSE_VALIDITY_TIMEResponse 유효 시간 (초)300300 (5분)⚠️
표 기호 설명:
  • ✅: 필수 설정
  • ⚠️: 선택 설정 (기본값 사용 가능)

배포용 k8s deploy 중요부분만

apiVersion: apps/v1
kind: Deployment
metadata:
name: apim-tenant-manager-deployment
labels:
app: apim-tenant-manager
spec:
replicas: 1
selector:
matchLabels:
app: apim-tenant-manager
template:
metadata:
labels:
app: apim-tenant-manager
spec:
containers:
- name: apim-tenant-manager
image: registry.example.com/apim-tenant-manager:latest
ports:
- containerPort: 8080
env:
# 프로파일 설정- name: SPRING_PROFILES_ACTIVE
value: "k8s_saml"


# SAML SP 설정- name: SAML_SP_ENTITY_ID
value: "apim-tenant-manager"
- name: SAML_SP_KEYSTORE_PASSWORD
valueFrom:
secretKeyRef:
name: saml-secret
key: keystore-password
- name: SAML_SP_PRIVATE_KEY_PASSWORD
valueFrom:
secretKeyRef:
name: saml-secret
key: private-key-password

# SAML IdP 설정 (ConfigMap 사용 예시)- name: SAML_IDP_METADATA_URL
value: "file:/etc/config/idp-metadata.xml"

# SAML IdP Fallback 설정 (메타데이터 파싱 실패 시)- name: SAML_IDP_ENTITY_ID
value: "https://keycloak.api.skapim.com/realms/saml"
- name: SAML_IDP_SSO_URL
value: "https://keycloak.api.skapim.com/realms/saml/protocol/saml"
- name: SAML_IDP_SLO_URL
value: "https://keycloak.api.skapim.com/realms/saml/protocol/saml"

# SAML 보안 설정- name: SAML_SECURITY_REQUIRE_SIGNED_ASSERTIONS
value: "true"
- name: SAML_SECURITY_REQUIRE_SIGNED_RESPONSES
value: "true"

# ConfigMap 마운트volumeMounts:
- name: idp-metadata
mountPath: /etc/config
readOnly: true

volumes:
- name: idp-metadata
configMap:
name: idp-metadata-configmap

중요 사항:
  • SAML_IDP_METADATA_URL은 URL, 클래스패스, 파일 경로 모두 지원
  • IdP 메타데이터는 ConfigMap으로 관리 가능 (아래 참고)

IdP 메타데이터 ConfigMap 설정법

IdP 메타데이터 XML 파일 준비

IdP로부터 메타데이터 XML 파일을 받거나 다운로드합니다.

예시 메타데이터 XML:
<?xml version="1.0" encoding="UTF-8"?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
entityID="https://keycloak.api.skapim.com/realms/saml">

<md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">

<!-- SSO 서비스 --><md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://keycloak.api.skapim.com/realms/saml/protocol/saml"/>

<!-- SLO 서비스 --><md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://keycloak.api.skapim.com/realms/saml/protocol/saml"/>

<!-- 인증서 --><md:KeyDescriptor use="signing">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>MIIDXTCCAkWgAwIBAgIJAKoK/Ovj8u...</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</md:KeyDescriptor>

</md:IDPSSODescriptor>

</md:EntityDescriptor>

ConfigMap 생성

방법 1: 파일로부터 직접 생성
kubectl create configmap idp-metadata-configmap \
--from-file=idp-metadata.xml=/path/to/idp-metadata.xml \
--namespace=default

방법 2: YAML 파일로 생성

idp-metadata-configmap.yaml:

apiVersion: v1
kind: ConfigMap
metadata:
name: idp-metadata-configmap
namespace: default
data:
idp-metadata.xml: |
<?xml version="1.0" encoding="UTF-8"?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
entityID="https://keycloak.api.skapim.com/realms/saml">

<md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">

<md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://keycloak.api.skapim.com/realms/saml/protocol/saml"/>

<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://keycloak.api.skapim.com/realms/saml/protocol/saml"/>

<md:KeyDescriptor use="signing">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>MIIDXTCCAkWgAwIBAgIJAKoK/Ovj8u...</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</md:KeyDescriptor>

</md:IDPSSODescriptor>

</md:EntityDescriptor>

적용:

kubectl apply -f idp-metadata-configmap.yaml

ConfigMap 업데이트 방법

방법 1: 파일로부터 업데이트
kubectl create configmap idp-metadata-configmap \
--from-file=idp-metadata.xml=/path/to/idp-metadata.xml \
--dry-run=client -o yaml | kubectl apply -f -

방법 2: YAML 파일로 업데이트
kubectl apply -f idp-metadata-configmap.yaml

방법 3: 직접 편집
kubectl edit configmap idp-metadata-configmap

ConfigMap을 업데이트한 후, Pod를 재시작하면 새로운 메타데이터가 적용됩니다:

kubectl rollout restart deployment/apim-tenant-manager-deployment

메타데이터 URL 방식 사용 (ConfigMap 불필요)

ConfigMap을 사용하지 않고 URL로 직접 참조할 수도 있습니다:

env:
- name: SAML_IDP_METADATA_URL
value: "https://keycloak.api.skapim.com/realms/saml/protocol/saml/descriptor"

이 경우 애플리케이션 시작 시 URL에서 메타데이터를 자동으로 다운로드하여 파싱합니다.


2.4 k8s_multi 설명

k8s_ldap, k8s_saml 동시 설정

k8s_multi 프로파일은 LDAP와 SAML 인증을 동시에 지원합니다. 사용자는 로그인 시 인증 방식을 선택할 수 있습니다.

환경변수 설정

k8s_multi 프로파일은 k8s_ldap와 k8s_saml의 모든 환경변수를 함께 설정해야 합니다.

필수 환경변수:

LDAP 설정

환경변수설명예시필수
LDAP_SERVER_URLLDAP 서버 주소ldap://skbb.co.kr:389/DC=skbb,DC=co,DC=kr
LDAP_MANAGER_DNLDAP 관리자 DNCN=Apim,OU=Users,DC=skbb,DC=co,DC=kr
LDAP_MANAGER_PASSWORDLDAP 관리자 비밀번호akemfdj1@ (Secret 권장)
LDAP_USER_DN_PATTERNS사용자 DN 패턴cn=0,OU=partners,OU=HQ,OU=SKB,DC=skbb,DC=co,DC=kr⚠️
LDAP_GROUP_SEARCH_BASE그룹 검색 기본 DNOU=Groups,OU=HQ,OU=SKB,DC=skbb,DC=co,DC=kr⚠️
LDAP_GROUP_ROLE_ATTRIBUTE그룹 역할 속성명cn⚠️

SAML SP 설정

환경변수설명예시필수
SAML_SP_ENTITY_IDSP Entity IDapim-tenant-manager-v3⚠️
SAML_SP_KEYSTORE_PASSWORD키스토어 비밀번호changeit (Secret 권장)
SAML_SP_PRIVATE_KEY_PASSWORD개인키 비밀번호changeit (Secret 권장)

SAML IdP 설정

환경변수설명예시필수
SAML_IDP_METADATA_URLIdP 메타데이터 소스 (URL/파일/ConfigMap)URL: https://keycloak.api.skapim.com/realms/saml/protocol/saml/descriptor파일: file:/etc/config/idp-metadata.xml
SAML_IDP_ENTITY_IDIdP Entity ID (Fallback)https://keycloak.api.skapim.com/realms/saml⚠️
SAML_IDP_SSO_URLIdP SSO URL (Fallback)https://keycloak.api.skapim.com/realms/saml/protocol/saml⚠️
SAML_IDP_SLO_URLIdP SLO URL (Fallback)https://keycloak.api.skapim.com/realms/saml/protocol/saml⚠️

SAML 보안 설정

환경변수설명예시기본값필수
SAML_SECURITY_REQUIRE_SIGNED_ASSERTIONSAssertion 서명 필요 여부truetrue⚠️
SAML_SECURITY_REQUIRE_SIGNED_RESPONSESResponse 서명 필요 여부truetrue⚠️
표 기호 설명:
  • ✅: 필수 설정
  • ⚠️: 선택 설정 (기본값 사용 가능 또는 선택 사항)

배포용 k8s deploy 전체 예시

apiVersion: apps/v1
kind: Deployment
metadata:
name: apim-tenant-manager-deployment
labels:
app: apim-tenant-manager
spec:
replicas: 1
selector:
matchLabels:
app: apim-tenant-manager
template:
metadata:
labels:
app: apim-tenant-manager
spec:
containers:
- name: apim-tenant-manager
image: registry.example.com/apim-tenant-manager:latest
ports:
- containerPort: 8080
env:
# 프로파일 설정- name: SPRING_PROFILES_ACTIVE
value: "k8s_multi"


# ========== LDAP 설정 ==========- name: LDAP_SERVER_URL
value: "ldap://skbb.co.kr:389/DC=skbb,DC=co,DC=kr"
- name: LDAP_MANAGER_DN
value: "CN=Apim,OU=Users,DC=skbb,DC=co,DC=kr"
- name: LDAP_MANAGER_PASSWORD
valueFrom:
secretKeyRef:
name: ldap-secret
key: manager-password
- name: LDAP_USER_DN_PATTERNS
value: "cn={0},OU=partners,OU=HQ,OU=SKB,DC=skbb,DC=co,DC=kr"
- name: LDAP_GROUP_SEARCH_BASE
value: "OU=Groups,OU=HQ,OU=SKB,DC=skbb,DC=co,DC=kr"
- name: LDAP_GROUP_ROLE_ATTRIBUTE
value: "cn"

# ========== SAML SP 설정 ==========- name: SAML_SP_ENTITY_ID
value: "apim-tenant-manager-v3"
- name: SAML_SP_KEYSTORE_PASSWORD
valueFrom:
secretKeyRef:
name: saml-secret
key: keystore-password
- name: SAML_SP_PRIVATE_KEY_PASSWORD
valueFrom:
secretKeyRef:
name: saml-secret
key: private-key-password

# ========== SAML IdP 설정 ==========- name: SAML_IDP_METADATA_URL
value: "file:/etc/config/idp-metadata.xml"
- name: SAML_IDP_ENTITY_ID
value: "https://keycloak.api.skapim.com/realms/saml"
- name: SAML_IDP_SSO_URL
value: "https://keycloak.api.skapim.com/realms/saml/protocol/saml"
- name: SAML_IDP_SLO_URL
value: "https://keycloak.api.skapim.com/realms/saml/protocol/saml"

# ========== SAML 보안 설정 ==========- name: SAML_SECURITY_REQUIRE_SIGNED_ASSERTIONS
value: "true"
- name: SAML_SECURITY_REQUIRE_SIGNED_RESPONSES
value: "true"

# ========== Volume 마운트 ==========volumeMounts:
- name: idp-metadata
mountPath: /etc/config
readOnly: true

volumes:
- name: idp-metadata
configMap:
name: idp-metadata-configmap

주요 특징

  1. 동시 지원: LDAP와 SAML 두 가지 인증 방식을 동시에 활성화
  2. 독립 세션: 각 인증 방식별로 독립적인 세션 관리
  3. 선택적 로그인: 사용자가 로그인 시 인증 방식을 선택 가능
  4. 세션 제한: LDAP와 SAML 각각 1개씩 총 2개의 최대 세션 허용

주의사항

  • LDAP와 SAML의 모든 필수 환경변수를 설정해야 함
  • Secret은 반드시 Kubernetes Secret으로 관리
  • IdP 메타데이터는 ConfigMap 또는 URL로 제공 가능
  • SESSION_SECURE는 HTTPS 환경에서만 true로 설정

프론트엔드 설정 (BFF 콘솔)

3.1 도메인별 인증 분기 설정

설정 페이지 접근

  1. APIM 콘솔에 관리자 권한으로 로그인
  2. 좌측 메뉴에서 설정 클릭
  3. 도메인별 인증 방식 분기 섹션으로 스크롤

도메인별 인증 분기 활성화

  1. 도메인별 인증 방식 분기 스위치를 ON으로 설정
  2. 이 스위치가 OFF이면 모든 도메인에서 기본 인증 방식 사용

3.2 SAML 인증 설정

SAML 인증을 사용할 도메인 설정

  1. SAML 인증 콘솔 도메인 스위치를 ON으로 설정
  2. SAML 콘솔 도메인 필드에 도메인 입력
    • 예: console1.xxx.com

IDP 로그아웃 활성화 설정

  1. SAML 도메인을 설정한 후, IDP 로그아웃 활성화 체크박스가 표시됩니다
  2. IDP가 사내시스템 등 중요한 시스템일 때 체크박스를 체크합니다
  3. 체크 시:
    • APIM에서 로그아웃 버튼이 자동으로 숨겨집니다
    • 세션 만료 등 에러 발생 시 에러 메시지가 표시되지 않습니다
    • 자동으로 로그아웃 처리되어 로그인 페이지로 이동합니다

3.3 LDAP 인증 설정

LDAP 인증을 사용할 도메인 설정

  1. LDAP(AD) 인증 콘솔 도메인 스위치를 ON으로 설정
  2. LDAP(AD) 콘솔 도메인 필드에 도메인 입력
    • 예: console2.xxx.com

주의사항

  • 프로토콜(http://, https://)과 포트 번호는 입력하지 마세요
  • 경로(/path)는 입력하지 마세요
올바른 입력 예시:
  • ✅ console1.xxx.com
  • ✅ apim.company.com
  • ✅ console.example.co.kr
잘못된 입력 예시:

설정 저장

  1. 모든 설정을 완료한 후 저장 버튼 클릭
  2. 저장 성공 메시지 확인
  3. 설정이 즉시 적용됩니다 (재시작 불필요)

설정 확인

설정이 올바르게 저장되었는지 확인:

  1. 설정 페이지를 새로고침
  2. 입력한 도메인과 스위치 상태 확인
  3. 다른 브라우저나 시크릿 모드에서 해당 도메인으로 접속하여 인증 방식 확인

주요 기능

SAML 도메인에서의 동작 (IDP 로그아웃 활성화 ON)

1. 로그아웃 버튼 숨김

  • IDP 로그아웃 활성화가 ON일 때만 로그아웃 버튼이 자동으로 숨겨집니다
  • SAML 인증은 IDP(Identity Provider)에서 세션을 관리하므로 별도의 로그아웃 버튼이 필요하지 않습니다
  • 사용자는 IDP에서 직접 로그아웃할 수 있습니다

2. 로그아웃 처리

  • SAML 도메인에서 로그아웃이 필요한 경우:
    • IDP에서 직접 로그아웃
    • 또는 브라우저 세션 종료
  • 시스템이 자동으로 SAML 로그아웃 엔드포인트를 호출합니다

3. 에러 메시지 처리

  • IDP 로그아웃 활성화가 ON일 때 세션 만료 등의 에러 발생 시:
    • "세션이 종료되었습니다. 로그인이 필요합니다." 메시지가 표시되지 않습니다
    • 자동으로 로그아웃 처리되어 로그인 페이지로 이동합니다
  • 이는 SAML 인증의 특성상 IDP에서 세션을 관리하기 때문입니다

SAML 도메인에서의 동작 (IDP 로그아웃 활성화 OFF)

  • 로그아웃 버튼이 정상적으로 표시됩니다
  • 에러 발생 시 일반적인 에러 메시지가 표시됩니다
  • 일반 인증 방식과 동일하게 동작합니다

일반 도메인에서의 동작

  • 로그아웃 버튼이 정상적으로 표시됩니다
  • 에러 발생 시 일반적인 에러 메시지가 표시됩니다
  • 기본 인증 방식(베이직)이 사용됩니다

환경 변수 설정

BFF 프론트엔드 필수 환경 변수

SAML 인증을 사용하려면 다음 환경 변수를 설정해야 합니다:

1. 기본 로그인 URL

APIM_LOGIN_URL=https://login.example.com

  • 기본 인증 방식에서 사용되는 로그인 URL
  • 모든 도메인에서 공통으로 사용 (SAML 도메인 제외)

2. SAML 로그인 URL (SAML 도메인 사용 시 필수)

APIM_SAML_LOGIN_URL=https://saml-idp.example.com/sso/login

  • SAML 도메인에서 사용되는 로그인 URL
  • SAML IDP의 로그인 엔드포인트
  • 주의: SAML 도메인을 설정했지만 이 변수가 없으면 기본 로그인 URL이 사용됩니다

3. Tenant Manager URL

APIM_TENANT_MANAGER_URL=https://tenant-manager.example.com

  • Tenant Manager 서비스 URL
  • 로그아웃 처리 시 사용

환경 변수 설정 방법

  1. Kubernetes 환경:
    • ConfigMap 또는 Secret에 환경 변수 추가
    • Deployment YAML 파일 수정

주의사항

1. 도메인 입력 형식

  • ✅ 올바른 형식: console1.xxx.com
  • ❌ 잘못된 형식:

2. 도메인 중복 설정

  • 하나의 도메인에 여러 인증 방식을 설정하지 마세요
  • 예: console1.xxx.com에 SAML과 LDAP을 동시에 설정하면 안 됩니다

3. IDP 로그아웃 활성화 사용 시기

  • 활성화 권장: IDP가 사내시스템, 금융시스템 등 중요한 시스템일 때
  • 비활성화 권장: IDP가 일반적인 외부 서비스일 때

4. 백엔드와 프론트엔드 설정 일치

  • 백엔드에서 k8s_saml 프로파일을 사용하면 프론트엔드에서도 SAML 도메인을 설정해야 합니다
  • 백엔드에서 k8s_ldap 프로파일을 사용하면 프론트엔드에서도 LDAP 도메인을 설정해야 합니다
  • 백엔드에서 k8s_multi 프로파일을 사용하면 프론트엔드에서 SAML과 LDAP 도메인을 각각 다른 도메인에 설정할 수 있습니다

5. 환경 변수 설정

  • SAML 도메인을 사용하려면 반드시 APIM_SAML_LOGIN_URL 환경 변수를 BFF에 설정해야 합니다
  • 환경 변수 변경 후에는 애플리케이션 재시작이 필요합니다

6. 테스트 방법

  • 설정 변경 후 반드시 테스트하세요:
    1. 백엔드 설정 확인 (Tenant Manager 프로파일 및 환경변수)
    2. 프론트엔드 설정 확인 (BFF 콘솔 도메인 설정)
    3. 설정한 도메인으로 접속
    4. 로그인 프로세스 확인
    5. 로그아웃 버튼 표시 여부 확인 (IDP 로그아웃 활성화 ON일 때 숨김)
    6. 로그아웃 동작 확인