SAML 2.0 이란?
OAuth 2.0 과 마찬가지로 인증/인가와 관련된 규칙들을 묶어서 표준화한 방식이다.
다만 이상한 점이 있다. MarkUp Language 라고 정의되어 있다.
먼저, OAuth 2.0 은 주로 인가(Authorization)와 관련된 "권한 부여" 에 초점을 맞춘, 인가 프로토콜이다. 그러나 SAML은 XML 언어에 기반한, 주로 인증(Authentication)과 관련된 표준화된 방식이다.
그러니까, 그 어떤 다양한 데이터 포맷과 다양한 구조에서 활용이 가능한 OAuth 2.0 와 다르게, SAML 2.0 의 경우에는 무조건 XML 언어로만 생성되어야 하기 때문에 Markup Language 라고 불린다.
SAML 2.0 의 특징
주로 엔터프라이즈 애플리케이션으로, 기업 환경에서 SSO(Single Sign-On) 기술을 활용할 때 자주 사용된다.
그렇다. 나의 회사 프로젝트에서 최근 SAML 2.0 SSO Agent 를 구입하였고, 나에게 그것을 적용하는 막중한 임무가 주어졌다 ...
주로 SSO 기술을 구현할 때 사용되므로, 하나의 로그인 서버를 두고 여러 사이트를 접근하고 싶을 때 주로 사용된다.
구성 요소
- IdP (Identity Provider) : 인증 정보를 제공하는 주체로, 사용자를 인증하고 SAML Assertion 을 발행한다. (이때 SAML Assertion 은 OAuth2.0 에서 Access Token 과 비슷한 개념이다.)
- SP (Service Provider) : 인증된 사용자 정보를 받아 서비스를 제공하는 주체로, 사용자가 접근하려는 웹 애플리케이션 혹은 서비스이다.
SAML2.0 vs OAuth2.0
비교 항목 | SAML 2.0 | OAuth 2.0 |
주요 목적 | 인증(Authentication), SSO | 권한 부여 (Authorization) |
포맷 | XML 기반 | JSON 기반 (Access Token 사용) |
사용 사례 | 기업용 SSO, 엔터프라이즈 애플리케이션 | 웹/모바일 애플리케이션 권한 부여 |
토큰 | SAML Assertion | Access Token |
복잡도 | 더 복잡하고 무겁다 | 상대적으로 가볍고 유연하다 |
동작 방식 | IdP와 SP 간의 신원 확인 | 클라이언트와 권한 서버 간 권한 부여 |
확장성 | 주로 엔터프라이즈 환경 | 다양한 웹 및 모바일 애플리케이션 |
SAML 2.0 의 동작방식
- 사용자가 SP 에 접근하려고 요청한다. (ex 일반 사용자가 메일 서비스에 접속했다.)
- SP 는 인증을 요청하기 위해서, IdP 로 리다이렉트한다. 이때 SP 는 SAML Request 를 생성하여 IdP 에 전달한다. 이 요청은 주로 HTTP Redirect 또는 POST Binding 을 통해 전달된다.
- IdP 의 인증이 진행된다. 이때 로그인이 이미 되어 있으면 넘어간다.
- 로그인이 되어 있지 않으면, 사용자는 아이디와 비밀번호를 입력한다.
- 인증에 성공하면 SAML Assertion 을 생성한다. 이때 SAML Assertion 은 XML 문서이다.
- IdP 는 SAML Assertion 을 SAML Response 에 담아서 SP 로 전달한다. 이는 보통 POST Binding 으로 이루어진다.
- SP 는 Assertion 을 검증하기 위해서 응답받은 SAML Response 를 서명과 유효시간(만료시간)을 검증한다.
- 사용자는 인증되었다. 자원에 접근해도 좋다.
SAML Assertion 에 포함된 정보
- Subject: 사용자 정보 (ID, 이메일 등).
- Conditions: Assertion의 유효 기간.
- Attribute Statements: 사용자 속성 (역할, 부서 등).
- Authentication Statements: 인증 방식 및 시간.
SAML Request Binding 의 종류
먼저 SAML Request Binding 이란, SP 가 IdP 에 인증 요청(SAML Request)를 보낼 때 사용되는 전달 방식으로써, 이 전달 방식에는 여러 방식이 존재하며, 이를 Binding 이라고 부른다.
SAML 2.0 의 주요 Request Binding 방식에 대해서 알아보자.
- HTTP Redirect Binding
- HTTP POST Binding
- HTTP Artifact Binding
- SOAP Binding
이 중에서도 사실, HTTP Redirect Biding 이 주로 사용된다. 왜냐하면 단순하고, 어느 환경에서나 사용이 가능하며, SSO 구현에 가장 적합한데다, 데이터 전송량이 적기 때문이다. 그러나 Request 길이가 너무 커지거나, url 노출을 막아 보안을 강화하고 싶은 경우에 HTTP POST Binding 방식도 사용한다.
참고 문서
[인증/인가 기술] SSO - SAML이란?
1. SAML 정의 SAML(Security Assertion Markup Language)은 네트워크를 통해 여러 컴퓨터에서 보안 자격 증명을 공유할 수 있도록 하는 개발형 표준 테이터 포맷으로 2005년 3월 SAML2.0은 OASIS 표준이다. 인증 정
sddev.tistory.com
https://developers.worksmobile.com/kr/docs/sso-sp-saml
NAVER WORKS Developers
developers.worksmobile.com
'Framework > Spring' 카테고리의 다른 글
[SAML 2.0] IdP 와 SP 인증을 직접 구현해보자. (2) - SP 설정 : SpringBoot 편 (4) | 2024.12.20 |
---|---|
[SAML 2.0] IdP 와 SP 인증을 직접 구현해보자. (1) - IdP 설정 (0) | 2024.12.20 |
[OAuth2] 기본적인 로그인 연동은 이미 스프링에서 구현해놓았다? (0) | 2024.12.08 |
[OAuth2] Spring Security 가 OAuth2 를 구현하는 방법 (0) | 2024.12.08 |
[OAuth2] accessToken에 이어서 왜 refreshToken 까지 필요할까? (1) | 2024.11.30 |