lottie
Seungjun's blog
blog
SAML이란?(Security Assertion Markup Language)

SAML이란?

SAML(Security Assertion Markup Language)은 SAML Request는 SAML 기반 SSO에서 사용자의 인증 요청을 나타내는 XML 문서로 외부 애플리케이션 및 서비스에 사용자가 자신이 누구인지 알려주는 표준화된 방법입니다.

SAML은 사용자를 한 번 인증한 다음 해당 인증을 여러 애플리케이션에 전달하는 방법을 제공하여 SSO(Single Sign-On) 기술을 가능하게 합니다.SAML의 최신 버전은 SAML 2.0입니다.

est에는 사용자가 인증을 요청하는 서비스 제공자(SP)에 대한 정보와 해당 사용자를 인증하는 신원 제공자(IdP)에 대한 정보가 포함됩니다.

SAML Request의 주요 구성 요소

1. Issuer (발급자):

SAML Request를 생성한 서비스 제공자의 고유 식별자입니다.

2. Assertion Consumer Service (ACS) URL: 사용자가 인증된 후 리디렉션될 서비스 제공자의 엔드포인트 URL입니다.

3. NameID Policy: 사용자의 식별 정보를 제공하는 정책을 정의하는데 사용됩니다.

4. Authentication Context Class Reference (ACR): 사용자의 인증 수준을 정의합니다. 예를 들어, 다중 요소 인증(Multi-Factor Authentication, MFA)가 요구될 수 있습니다.

SAML 작동원리

일반적인 SSO 인증 프로세스에는 다음 세 당사자가 포함됩니다.

  1. 보안 주체/주체(Principal/subject):

    이는 거의 언제나 클라우드 호스팅 애플리케이션에 액세스하려고 하는 인간 사용자입니다.

  2. ID 공급자:

    ID 공급자(IdP)는 일반적으로 로그인 프로세스를 통해 사용자 ID를 저장하고 확인하는 클라우드 소프트웨어 서비스입니다.기본적으로 IdP의 역할은 "나는 이 사람을 알고 있으며 이 사람이 할 수 있는 일은 다음과 같습니다"라고 알려주는 것입니다.SSO 시스템은 실제로 IdP와 별개일 수 있지만, 이러한 경우 SSO는 본질적으로 IdP의 대표자 역할을 하므로 모든 의도와 목적에 있어서 SAML 워크플로에서 동일합니다.

  3. 서비스 공급자:

    사용자가 사용하고자 하는 클라우드 호스팅 애플리케이션 또는 서비스입니다.일반적인 예로는 Gmail, Microsoft Office 365 등의 클라우드 이메일 플랫폼, Google 드라이브, AWS S3 등의 클라우드 스토리지 서비스, Slack, Skype 등의 통신 앱이 있습니다.일반적으로 사용자는 이러한 서비스에 직접 로그인하지만, SSO를 사용하는 경우 사용자는 대신 SSO에 로그인하고 SAML을 사용하여 직접 로그인 대신 액세스 권한을 부여합니다.

그 일반적인 흐름은 다음과 같습니다.


보안 주체(principal)가 서비스 공급자에게 요청을 합니다. 그런 다음 서비스 공급자가 ID 공급자에게 인증을 요청합니다. ID 공급자는 SAML 어설션을 서비스 공급자에게 보내고 서비스 공급자는 보안 주체에게 응답을 보낼 수 있습니다.


보안 주체(사용자)가 아직 로그인하지 않은 경우 ID 공급자는 SAML 어설션을 보내기 전에 로그인하라는 메시지를 표시할 수 있습니다.

SAML Request는 주로 웹 브라우저 리디렉션을 통해 전달되며, 이를 통해 사용자는 인증 서비스 제공자에 로그인하고 인증 후 다시 서비스 제공자로 리디렉션됩니다. SAML은 보안 및 표준 기반의 SSO 구현을 지원하여 기업 및 웹 애플리케이션 간에 사용자 인증 및 권한 부여를 효과적으로 관리할 수 있도록 도와줍니다.


컴퓨팅과 네트워킹에서 주요 과제 중 하나는 서로 다른 목적을 위해 서로 다른 벤더가 구축한 시스템과 장치를 함께 작동시키는 것입니다. 이를 "상호 운용성"이라고 합니다. 서로 다른 기술 사양에도 불구하고 서로 다른 기계가 서로 상호 작용할 수 있는 능력입니다. SAML은 상호 운용 가능한 표준으로, 클라우드 서비스 공급자에게 사용자 ID를 전달하는 데 널리 사용되는 방법입니다.

SAML 어설션이란

SAML 어설션은 사용자가 로그인되었음을 서비스 공급자에게 알리는 메시지입니다. SAML 어설션에는 어설션의 소스, 발급된 시간, 어설션을 유효하게 만드는 조건 등 서비스 공급자가 사용자 ID를 확인하는 데 필요한 모든 정보가 포함되어 있습니다.


SaaS 애플리케이션 또는 클라우드 서비스에서 SAML 어설션을 기반으로 사용자 액세스를 허용하거나 거부할 수 있습니다.


SAML 2.0이란

SAML 2.0은 SAML의 최신 버전이며 2005년부터 사용되었습니다. SAML 2.0은 이전에 사용되었던 여러 버전의 SAML을 결합했습니다. 많은 시스템에서 이전 버전과의 호환성을 위해 SAML 1.1과 같은 이전 버전을 지원하지만, SAML 2.0이 최신 표준입니다.