SAML이란?
- 네트워크를 통해 여러 컴퓨터에서 보안 자격 증명을 공유할 수 있도록 하는 공개 표준
- SAML은 SSO를 구현하는 한 가지 방법이며, 실제 SSO는 SAML의 가장 일반적인 사용사례
SAML의 인증과 허가
- 인증(Authentication): 사용자가 자신이 주장하는 사람임을 확인
- 허가(Authorization): 사용자가 특정 시스템이나 콘텐츠에 접속할 수 있는 권한이 있는지 확인
SAML의 구성요소
-
SAML 공급자(provider)
- 사용자가 원하는 서비스에 접속하도록 도와주는 개체
- SAML 서비스를 제공하거나 사용하는 시스템을 칭함
- ID 공급자(IdP)
- 가장 중요한 서비스 공급자
- 실제로 사용자가 자신이 주장하는 사람인지 확인(인증 제공)
- 서비스 공급자(SP)
- Idp를 전달하고 지정된 사용자에게 요청된 리소스에 액세스 하는 권한 부여
- SP는 사용자에게 권한을 부여하기 위해 IdP의 인증이 필요함
- 두 시스템이 동일한 언어를 공유하므로 사용자는 한번만 로그인
-
SAML 어설션(assertion)
- 인증정보가 전송되는 XML 문서
- ID 공급자가 권한이 있다고 결정하면 어설션을 서버에 보내 실제로 해당 서비스를 제공
SAML 플로우

유저(브라우저)는 어플리케이션의 일부 리소스에 접근하려고 한다.
- 서비스 제공자는 시스템에서 인증되지 않을 경우 인증 프로세스를 시작
- 서비스 공급자가 적절한 ID 공급자를 결정하고 리다렉션
- 브라우저가 SSO service(identity provider)에 인증 요청 전송
- SSO 서비스는 서비스 공급자가 SAMLResponse 매개 변수에 필요로 하는 인증 정보를 포함하는 XHTML 문서를 반환
- SAMLResponse 매개 변수가 서비스 제공자에게 전달
- 서비스 공급자는 이 응답을 처리하고 사용자를 위해 보안 컨텍스트 작성 후 반환(사용자가 로그인하고 요청한 리소스의 위치 반환)
- 전달 받은 정보를 이용해 리소스를 다시 요청
- 리소스 반환
SAML 플로우 추가 자료


SAML의 이점
-
사용자 경험 개선
- SAML은 애플리케이션과 서비스에 더욱 손쉽게 로그인
-
자격 증명 분실 감소
- 여러곳에서 로그인을 반복하다보면 비밀번호의 자격 증명의 도난 위험이 증가
- SAML을 사용하면 하나의 사용자 이름과 비밀번호만 필요
-
보안 강화
- 안전한 아이덴티 공급업체를 통해 인증을 제공하기 때문에 자격 증명이 직접 전송되므로 파싱이나 아이덴티티 탈취 가능성 최소화
-
비용 절감
-
사용자 관리 간소화
- SAML은 각 사용자를 단일 디렉터리에서 관리하기 때문에 사용자 관리가 용이