🔑 1. SAML 개요
- 표준: OASIS(Open standard)에서 제정한 XML 기반 인증/인가 프레임워크
- 목적: 여러 도메인/서비스 간 Single Sign-On(SSO) 제공
- 형태: 사용자 인증 결과를 XML Assertion(SAML 어서션)으로 교환
⚙️ 2. 기본 구성 요소
- Identity Provider (IdP)
- 사용자 인증을 수행하는 주체 (예: ADFS, Okta, Keycloak)
- 로그인 성공 후 SAML Assertion을 생성하여 SP에 전달
- Service Provider (SP)
- 사용자가 접근하려는 애플리케이션 (ERP, 메일, 포털 등)
- IdP에서 전달된 Assertion을 검증하고 세션 발급
- 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에 접속할 때:
- 사용자 → SP 접근
- ERP(서비스 제공자)에 접속 → 인증 필요
- SP → IdP 요청
- SP가 브라우저를 IdP로 Redirect
- AuthnRequest XML 메시지 포함
- 사용자 로그인 (IdP 인증)
- IdP 로그인 페이지에서 사용자 인증 수행
- 인증 성공 시 SAML Assertion 발급
- IdP → SP 전달
- IdP가 Assertion(XML)을 브라우저를 통해 SP에 POST
- (HTTP POST Binding을 통한 SAMLResponse)
- 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가 웹/모바일 친화적으로 대체 중입니다.
'소프트웨어 > 상식' 카테고리의 다른 글
| JWT(JSON Web Token) (0) | 2025.09.20 |
|---|---|
| 보안 및 인증 분야 "토큰(Token)" (0) | 2025.09.20 |
| SSO(Single Sign-On, 단일 로그인) (0) | 2025.09.20 |
| KCMVP(Korea Cryptographic Module Validation Program) (0) | 2025.09.19 |
| 주요 소프트웨어 / 서비스 포트 번호 (0) | 2025.09.18 |