🔑 1. SAML 개요

  • 표준: OASIS(Open standard)에서 제정한 XML 기반 인증/인가 프레임워크
  • 목적: 여러 도메인/서비스 간 Single Sign-On(SSO) 제공
  • 형태: 사용자 인증 결과를 XML Assertion(SAML 어서션)으로 교환

 

⚙️ 2. 기본 구성 요소

  1. Identity Provider (IdP)
    • 사용자 인증을 수행하는 주체 (예: ADFS, Okta, Keycloak)
    • 로그인 성공 후 SAML Assertion을 생성하여 SP에 전달
  2. Service Provider (SP)
    • 사용자가 접근하려는 애플리케이션 (ERP, 메일, 포털 등)
    • IdP에서 전달된 Assertion을 검증하고 세션 발급
  3. User Agent (브라우저)
    • IdP와 SP 사이에서 Assertion(XML)을 전달하는 역할

 

🧾 3. SAML 메시지 구조

 

1. Assertion

  • 사용자 정보와 인증 상태를 담은 XML 문서
  • 주요 요소:
    • <Subject> : 사용자 식별자 (예: 이메일, username)
    • <AttributeStatement> : 사용자 속성 (부서, 권한 등)
    • <AuthnStatement> : 인증 방법, 로그인 시간 등
  • 디지털 서명(Signature) 으로 위·변조 방지

2. Bindings

  • 메시지를 주고받는 방식 정의
    • HTTP Redirect Binding (URL 인코딩)
    • HTTP POST Binding (HTML form POST, 가장 흔함)
    • Artifact Binding (토큰만 주고, 실제 Assertion은 백채널 통신)

3. Profiles

  • 특정 시나리오에서 Assertion을 어떻게 쓸지 정의
    • Web Browser SSO Profile (가장 일반적)
    • Single Logout Profile (SLO)
    • Attribute Query Profile

 

🔄 4. SAML Web Browser SSO Flow (흐름)

 

예를 들어 사용자가 ERP에 접속할 때:

  1. 사용자 → SP 접근
    • ERP(서비스 제공자)에 접속 → 인증 필요
  2. SP → IdP 요청
    • SP가 브라우저를 IdP로 Redirect
    • AuthnRequest XML 메시지 포함
  3. 사용자 로그인 (IdP 인증)
    • IdP 로그인 페이지에서 사용자 인증 수행
    • 인증 성공 시 SAML Assertion 발급
  4. IdP → SP 전달
    • IdP가 Assertion(XML)을 브라우저를 통해 SP에 POST
    • (HTTP POST Binding을 통한 SAMLResponse)
  5. SP 검증 및 세션 발급
    • SP가 Assertion의 디지털 서명 검증
    • 사용자 속성(Attribute) 기반으로 권한 부여
    • SP 세션 생성 → 로그인 완료

 

🔒 5. 보안 메커니즘

  • XML Signature, XML Encryption: SAML 메시지 위·변조 방지
  • X.509 인증서 기반 서명: IdP ↔ SP 신뢰 구축
  • Replay Attack 방지: NotBefore, NotOnOrAfter 시간 속성
  • HTTPS 필수: 전송 구간 보호

 

🏢 6. 실제 사용 예시

  • 엔터프라이즈 SSO: ADFS, Shibboleth, Keycloak → ERP/CRM 연동
  • 클라우드 SaaS 연동: Google Workspace, Salesforce, Office 365 로그인
  • 대학교/연구기관: 학술 연합 로그인(Shibboleth + eduGAIN)

 

📌 7. 장단점

 

장점

  • 중앙 집중 인증 (비밀번호 관리 효율↑)
  • 기업/기관 표준으로 안정적
  • 다양한 SP와 연동 검증된 생태계

단점

  • XML 기반 → 무겁고 파싱 복잡
  • 모바일 친화성 낮음 (REST API 부족)
  • 토큰 포맷이 JWT가 아니라 JSON 기반 현대 앱과는 이질적

👉 정리:

  • SAML은 XML 기반의 엔터프라이즈 SSO 표준
  • IdP ↔ SP 간 Assertion 교환으로 인증 위임
  • OAuth2/OIDC 등장 전에는 표준이었지만, 지금은 레거시/기업 내부에서 많이 사용되고, OIDC가 웹/모바일 친화적으로 대체 중입니다.

+ Recent posts