728x90
반응형

(개념) XML 형식의 보안 관련 메시지를 교환하기 위한 규칙을 정의하는 표준

- 주로 3개 이상의 독립된 엔티티 간 메시지 교환에 사용됨

 

(특징)  시스템 간에 동일한 규칙을 따르게 하여 복잡한 통합 작업을 단순화

 

SAML 인증 작동 원리, https://cpl.thalesgroup.com/ko/access-management/saml-authentication

 

(메시지) XML 형식으로 구성

예) <Response>  <Assertion> 

 

(유연성)

  • SAML은 유연성을 강조하여 설계됨. 원칙적으로는 SAML로 많은 작업을 할 수 있음, 하지만 그 유연성이 복잡성으로 이어짐
  • SAML 사양에는 수많은 예외사항이 있고, 많은 if와 예를 들어가 있어서 엣지 케이스를 추가함
  • SAML은 오래됐기 때문에 일부 사람들은 유연성을 활용함
  • 실제 운영 환경, 특히 레거시 시스템에서는 SAML이 비정상적인 동작을 하는 경우가 있음

(사용 목적)

  • SAML은 주로 Single Sign-On(SSO)에 사용됨
  • SAML은 몇 가지 이상한 SSO 유형을 정의하지만, 일반적으로 Web Browser SSO Profile을 사용함
  • 최종 사용자는 중앙 집중식 시스템에 먼저 인증한 다음 원하는 소프트웨어 애플리케이션에 액세스함
  • 사용자는 애플리케이션에 직접 인증하지 않음
  • 예를 들어 Okta를 사용하여 이메일에 액세스한 적이 있다면 Web Browser SSO Profile을 사용한 것임

SAML 기반 SSO 서비스를 사용하여 Google에 로그인하는 프로세스, https://support.google.com/a/answer/6262987?hl=ko

 

(SSO 관련 엔터티)

  • SSO에는 3가지 주체가 관련됨:
    1. 사용자: 애플리케이션을 사용하려는 사람
    2. 서비스 제공자(SP): 애플리케이션 자체
    3. ID 제공자(IDP): 사용자가 인증에 사용할 중앙 서비스
  • 각 고객의 IDP는 데이터베이스로 간주할 수 있음. 사람들에 대한 데이터를 추적함
    • 회사는 종종 ID 제공자를 사용하여 직원을 부서에 할당하고 다양한 권한을 부여함
  • SAML을 통해 사용자를 로그인할 때마다 IDP에서 정보를 가져와야 함. SSO에서는 주로 IDP에 사용자 ID 확인을 요청
  • IDP와 사전 구성된 신뢰 관계가 필요함
    • SAML SSO를 사용하는 모든 고객은 애플리케이션에서 자체 설정이 필요
    • 하지만, IDP와 직접 메시지를 주고받지는 않음. SAML SSO에서는 서비스 제공자와 ID 제공자가 사용자의 브라우저를 통해 통신함

(엔터티 간 상호작용 방식)

  • 일반적인 SAML SSO 프로세스:
    1. 사용자가 웹 브라우저에서 애플리케이션의 일부에 액세스하려고 함
    2. 사용자에게 유효한 보안 컨텍스트가 있는지 확인
    3. 사용자에게 유효한 보안 컨텍스트가 없으므로 로그인 페이지 표시
    4. 사용자가 일부 정보(예: 이메일 주소)를 입력하면 적절한 로그인 방법을 결정하는 데 사용됨
    5. 사용자를 IDP의 웹 주소로 리디렉션하고 사용자의 브라우저를 통해 SAML 메시지를 IDP에 전달
    6. IDP는 사용자에게 자격 증명을 묻는 메시지를 표시. 사용자가 성공적으로 인증됨
    7. IDP는 사용자의 인증에 대한 정보를 전달하는 SAML 메시지와 함께 사용자를 애플리케이션으로 다시 리디렉션함
    8. SAML 메시지를 처리하고 사용자에 대한 보안 컨텍스트를 설정해야 한다고 판단함
    9. 사용자에게 애플리케이션의 원하는 부분에 대한 액세스 권한을 부여함
  • ID 공급자에서 SAML SSO 프로세스를 시작할 수도 있음
  • 이 경우 인증 요청을 보내지 않고 인증 응답을 받게 됨
  • SAML SSO 지원을 구현할 때 IDP에서 시작한 SSO에 대비해야 함

(교환 메시지)

  • SAML SSO에서 주로 2가지 메시지가 관심사임
    • 서비스 제공자에서 IDP로 가는 메시지를 SAML 요청(request)이라고 함
    • IDP에서 서비스 제공자로 돌아오는 메시지를 SAML 응답(response)이라고 함
  • SAML 요청은 실제로 그리 복잡하지 않음. XML을 HTTP 리디렉션을 통해 보내는 것으로 충분함
  • <AuthnRequest> 태그에 ID를 포함하여 IDP가 원래 요청과 연결된 <Response>를 공유할 수 있도록 함
  • <Issuer> 태그로 감싼 데이터도 IDP에 보내서 누구인지 알려줌
  • SAML 응답은 더 까다로움. 일반적으로 POST를 통해 전송됨
  • <Response>는 개념적으로 몇 개의 <Assertion> 태그를 감쌈
  • <Assertion>은 사용자에 대한 클레임(누구인지, IDP로 어떻게 인증했는지 등)을 감쌈
  • Assertion을 처리하여 사용자를 로그인할지 여부를 결정함

 

SAML에 대한 간단한 소개 | GeekNews (hada.io)

 

SAML에 대한 간단한 소개 | GeekNews

SAML(Single Assertion Markup Language)은 XML 형식의 보안 관련 메시지를 교환하기 위한 규칙을 정의하는 표준주로 3개 이상의 독립된 엔티티 간 메시지 교환에 사용됨일반적인 시나리오는 서로 다른 회사

news.hada.io

 

 

 

728x90
Posted by Mr. Slumber
,