보안 어설션 마크업 언어
Security Assertion Markup LanguageSAML(Security Assertion Markup Language, SAM-el, /svsæməl/)[1]은 특히 ID 제공자와 서비스 제공자 간에 인증 및 승인 데이터를 교환하기 위한 공개 표준이다.SAML은 보안 주장(서비스 제공자가 액세스 제어 결정을 내릴 때 사용하는 설명)을 위한 XML 기반 마크업 언어다.SAML은 또한 다음과 같다.
- XML 기반 프로토콜 메시지 집합
- 프로토콜 메시지 바인딩 집합
- 프로필 집합(위의 모든 항목 사용)
SAML이 다루는 중요한 사용 사례는 웹 브라우저 SSO(Single Sign-On)이다.Single Sign-On은 보안 도메인 내에서(예를 들어 쿠키 사용) 비교적 쉽게 수행할 수 있지만, SSO를 보안 도메인 전체로 확장하는 것이 더 어렵고, 이로 인해 비호환적 독점 기술이 확산되었다.SAML Web Browser SSO 프로파일은 상호운용성을 촉진하기 위해 지정되고 표준화되었다.[2]
개요
SAML 규격은 주체(일반적으로 인간 사용자), ID 제공자(IdP), 서비스 제공자(SP)의 세 가지 역할을 정의한다.SAML이 취급하는 1차 사용 사례에서, 주계약자는 서비스 제공자에게 서비스를 요청한다.서비스 제공자는 ID 제공자로부터 인증 주장을 요청하고 얻는다.이 주장에 근거해, 접속 제어 결정, 즉 접속된 원금에 대해 서비스 수행 여부를 결정할 수 있다.
SAML 주장의 핵심은 무엇인가 주창되고 있는 주제(특정 보안 영역의 맥락 내 주체)이다.그 주제는 보통(그러나 반드시 그렇지는 않다) 사람이다.SAML 2.0 기술 개요에서와 같이,[3] 본 문서에서 주제와 주어를 서로 바꾸어 사용한다.
IDP는 주체 기반 주장을 IdP에서 SP로 전달하기 전에 주체 인증을 위해 주체에게 사용자 이름 및 암호와 같은 일부 정보를 요청할 수 있다.SAML은 IdP에서 SP로 전달되는 어설션의 내용을 명시한다.SAML에서 한 신원 제공자는 많은 서비스 제공자에게 SAML 주장을 제공할 수 있다.마찬가지로, 한 SP는 많은 독립적인 IdP의 주장에 의존하고 신뢰할 수 있다.
SAML은 ID 제공자의 인증 방법을 지정하지 않는다.IdP는 사용자 이름과 비밀번호 또는 다요소 인증을 포함한 다른 형태의 인증을 사용할 수 있다.RADIUS, LDAP 또는 Active Directory와 같은 디렉토리 서비스는 사용자가 사용자 이름 및 암호로 로그인할 수 있는 ID 제공자의 일반적인 인증 토큰 원본이다.[4]인기 있는 인터넷 소셜 네트워킹 서비스들은 또한 이론적으로 SAML 교환을 지원하는 데 사용될 수 있는 신원 확인 서비스를 제공한다.
역사
2001년 1월 처음 만난 OASIS(구조화정보표준) 보안서비스 기술위원회(SSTC)는 "인증 및 인가정보 교환을 위한 XML 프레임워크를 정의하기 위해"를 인가받았다.[5]이를 위해, 그 해의 첫 두 달 동안 SSTC에 다음과 같은 지적재산이 기여되었다.
- Netegrity의 S2ML(Security Services Markup Language)
- Securant의 AuthXML
- VeriSign의 XML 신뢰 어설션 서비스 사양(X-TAS)
- 잼크래커의 정보기술 마크업 언어(ITML)
이러한 초기 기여를 바탕으로 2002년 11월 OASIS는 OASIS 표준으로 SAML(Security Assertion Markup Language) 1.0 규격을 발표했다.[6]
한편 기업, 비영리, 정부기관 등으로 구성된 대규모 컨소시엄인 자유연대는 자유아이덴티티연맹 프레임워크(ID-FF)라는 SAML 표준의 연장을 제안했다.[7]이전의 SAML과 마찬가지로, Liberty ID-FF는 표준화된 교차 도메인 웹 기반 단일 사인온 프레임워크를 제안했다.또한, Liberty는 각 참여 도메인이 사용자를 식별하는 데 사용되는 프로세스, 사용되는 인증 시스템의 유형 및 결과 인증 자격 증명과 관련된 모든 정책을 정확하게 문서화하기 위해 신뢰되는 신뢰의 원을 설명했다.신뢰계의 다른 구성원은 이러한 정책을 검토하여 그러한 정보를 신뢰할지 여부를 결정할 수 있다.[8]
Liberty가 ID-FF를 개발하는 동안, SSTC는 SAML 표준에 대한 사소한 업그레이드 작업을 시작했다.결과 SAML 1.1 규격은 2003년 9월에 SSTC에 의해 비준되었다.그 후, 같은 해 11월에 Liberty는 ID-FF 1.2를 OASIS에 기부하여, 다음 주요 버전의 SAML의 씨앗을 뿌렸고, 2005년 3월에는 SAML 2.0이 OASIS 표준으로 발표되었다.SAML 2.0은 SAML 자체의 초기 버전뿐만 아니라 Sibboleth 프로젝트가 기여하는 Liberty ID-FF와 독점 확장의 융합을 나타낸다.대부분의 SAML 구현은 v2.0을 지원하는 반면 많은 SAML 구현은 여전히 이전 버전과의 호환성을 위해 v1.1을 지원한다.2008년 1월까지 SAML 2.0의 배치는 전 세계 정부, 고등 교육 및 상업 기업에서 일반화되었다.[8]
버전
SAML은 1.0 이후 1건의 사소한 개정과 1건의 주요 개정을 거쳤다.
- SAML 1.0은 2002년 11월에 OASIS 표준으로 채택되었다.
- SAML 1.1은 2003년 9월에 OASIS 표준으로 비준되었다.
- SAML 2.0은 2005년 3월에 OASIS 표준이 되었다.
자유동맹은 2003년 9월 OASIS SSTC에 IDF 프레임워크(ID-FF)를 기부했다.
- ID-FF 1.1은 2003년 4월에 출시되었다.
- ID-FF 1.2는 2003년 11월에 확정되었다.
SAML 버전 1.0과 1.1은 작은 차이가 존재하지만 SAML 2.0과 SAML 1.1의 차이는 상당하다.[9]두 표준이 동일한 사용 사례를 다루지만 SAML 2.0은 이전 표준과 양립할 수 없다.
ID-FF 1.2는 SAML 2.0의 기초로서 OASIS에 공헌하였지만, SAML 2.0과 ID-FF 1.2 사이에는 중요한 차이가 있다.특히 두 명세는 공통의 뿌리에도 불구하고 양립할 수 없다.[8]
디자인
SAML은 다양한 기존 표준을 기반으로 구축된다.
- 확장성 마크업 언어(XML): 대부분의 SAML 교환은 XML의 표준화된 사투리로 표현되는데, 이는 SAML(Security Assertion Markup Language)이라는 이름의 루트다.
- XML 스키마(XSD): SAML 주장과 프로토콜은 XML 스키마를 사용하여 (부분적으로) 지정된다.
- XML 서명:SAML 1.1과 SAML 2.0 모두 인증 및 메시지 무결성을 위해 디지털 서명(XML 서명 표준 기반)을 사용한다.
- XML 암호화:XML 암호화를 사용하여 SAML 2.0은 암호화된 이름 식별자, 암호화된 속성, 암호화된 주장(SAML 1.1에는 암호화 기능이 없다)에 대한 요소를 제공한다.XML Encryption에는 심각한 보안 문제가 있는 것으로 보고됨.[10][11]
- 하이퍼텍스트 전송 프로토콜: SAML은 통신 프로토콜로서 HTTP에 크게 의존한다.
- SOAP(Simple Object Access Protocol): SAML은 SOAP, 특히 SOAP 1.1의 사용을 명시한다.[12]
SAML은 XML 기반의 주장과 프로토콜, 바인딩 및 프로파일을 정의한다.SAML Core라는 용어는 SAML 주장의 일반적인 구문 및 의미론뿐만 아니라 그러한 주장을 한 시스템 개체에서 다른 개체로 요청하고 전송하는 데 사용되는 프로토콜을 가리킨다.SAML 프로토콜은 전송되는 것을 의미하며, 어떻게 (후자는 바인딩의 선택에 의해 결정된다)가 아니다.그래서 SAML Core는 SAML 요청 및 대응 요소와 함께 "bare" SAML 주장을 정의한다.
SAML 바인딩은 SAML 요청과 응답이 표준 메시징 또는 통신 프로토콜에 매핑되는 방법을 결정한다.중요한 (동기식) 바인딩은 SAML SOAP 바인딩이다.
SAML 프로파일은 주장, 프로토콜 및 바인딩의 특정 조합을 사용하여 정의된 사용 사례를 구체적으로 나타내는 것이다.
주장
SAML 어설션에는 다음과 같은 보안 정보 패킷이 포함되어 있다.
<샘l:Assertion...> ..</샘l:주장>
느슨하게 말하면, 의존하는 당사자는 주장을 다음과 같이 해석한다.
조건 C가 유효하다면, 주장 A는 주제 S에 대하여 발행자 R에 의해 시간 t에 공표되었다.
SAML의 주장은 대개 신원 제공자에서 서비스 제공자로 이전된다.주장에는 서비스 제공자가 접근 제어 결정을 내리기 위해 사용하는 진술이 포함되어 있다.SAML에 의해 제공되는 세 가지 유형의 진술:
- 인증 명세서
- 속성문
- 결재결재
인증서는 서비스 제공자에게 주체가 특정 인증 방법을 사용하여 특정 시간에 신원 제공자와 실제로 인증했다고 주장한다.인증된 주체(인증 컨텍스트라고 함)에 대한 기타 정보는 인증서에 공개될 수 있다.
속성 문장은 주체가 특정 속성과 연관되어 있다고 주장한다.속성은 이름-값 쌍일 뿐이다.의존하는 당사자들은 접근 제어 결정을 내리기 위해 속성을 사용한다.
인가 결정문은 주체가 증거 E가 주어진 자원 R에 대하여 조치 A를 수행할 수 있도록 허용된다고 주장한다.SAML에서 인가 결정문의 표현성은 의도적으로 제한된다.대신 XACML을 사용하는 것이 더욱 고급화된 사용 사례를 권장한다.
프로토콜
SAML 프로토콜은 특정 SAML 요소(주장 포함)가 SAML 요청 및 대응 요소 내에서 어떻게 포장되는지를 설명하고, 이러한 요소를 생산하거나 소비할 때 SAML 실체가 준수해야 하는 처리 규칙을 제공한다.대부분의 경우, SAML 프로토콜은 단순한 요청-응답 프로토콜이다.
SAML 프로토콜 요청의 가장 중요한 유형을 쿼리라고 한다.서비스 제공자는 보안 백 채널을 통해 ID 제공자에게 직접 질의한다.따라서 질의 메시지는 일반적으로 SOAP에 바인딩되어 있다.
세 가지 유형의 문장에 해당하는 SAML 쿼리 유형은 다음과 같다.
- 인증 쿼리
- 속성 조회
- 권한 부여 결정 쿼리
속성 쿼리의 결과는 어설션이 포함된 SAML 응답이며, 그 자체에는 속성 문이 포함되어 있다.속성 쿼리/응답 예제는 SAML 2.0 항목을 참조하십시오.
질의 이외에, SAML 1.1은 다른 프로토콜을 지정하지 않는다.
SAML 2.0은 프로토콜의 개념을 상당히 확장시킨다.다음 프로토콜은 SAML 2.0 Core에 자세히 설명되어 있다.
- 어설션 쿼리 및 요청 프로토콜
- 인증 요청 프로토콜
- 아티팩트 해상도 프로토콜
- 이름 식별자 관리 프로토콜
- 단일 로그아웃 프로토콜
- 이름 식별자 매핑 프로토콜
이러한 프로토콜의 대부분은 SAML 2.0에서 새로운 것이다.
바인딩
SAML 바인딩은 SAML 프로토콜 메시지를 표준 메시징 형식 및/또는 통신 프로토콜에 매핑하는 것이다.예를 들어, SAML SOAP 바인딩은 SAML 메시지가 SOAP 봉투에 어떻게 캡슐화되는지 지정하며, SOAP 봉투는 그 자체가 HTTP 메시지에 바인딩된다.
SAML 1.1은 SAML SOAP 바인딩이라는 하나의 바인딩만을 지정한다.SOAP 외에도 SAML 1.1 Web Browser SSO에 내포되어 있는 것은 HTTP POST 바인딩, HTTP Redirect Binding, HTTP 아티팩트 바인딩의 전구체다.그러나 이러한 것들은 명시적으로 정의되지 않으며 SAML 1.1 Web Browser SSO와 함께만 사용된다.바인딩의 개념은 SAML 2.0까지는 완전히 개발되지 않는다.
SAML 2.0은 바인딩 개념을 기본 프로파일과 완전히 분리한다.실제로 SAML 2.0에는 다음과 같은 독립형 바인딩을 정의하는 새로운 바인딩 규격이 있다.
- SAML SOAP 바인딩(SOAP 1.1 기준)
- 리버스 SOAP(PAOS) 바인딩
- HTTP 리디렉션(GET) 바인딩
- HTTP POST 바인딩
- HTTP 아티팩트 바인딩
- SAML URI 바인딩
이 재구성은 엄청난 유연성을 제공한다: 웹 브라우저 SSO만 예로 들면, 서비스 제공자는 네 개의 바인딩(HTTP Redirect, HTTP POST 및 두 가지 종류의 HTTP 아티팩트) 중에서 선택할 수 있는 반면, ID 제공자는 세 가지 바인딩 옵션(HTTP POST + 두 가지 형태의 HTTP 아티팩트)을 가지고 있어, 총 12가지 가능한 배포가 가능하다.SAML 2.0 웹 브라우저 SSO 프로필의 nts.
프로필
SAML 프로파일은 SAML 주장, 프로토콜 및 바인딩이 어떻게 결합하여 정의된 사용 사례를 지원하는지를 상세히 설명한다.가장 중요한 SAML 프로파일은 웹 브라우저 SSO 프로파일이다.
SAML 1.1은 두 가지 형태의 웹 브라우저 SSO, 즉 브라우저/예술 프로파일 및 브라우저/POST 프로파일을 지정한다.후자는 가치로 주장을 전달하는 반면 브라우저/Artifact는 주장을 참조로 전달한다.따라서 브라우저/Artifact는 SOAP를 통한 백채널 SAML 교환을 요구한다.SAML 1.1에서 모든 흐름은 단순성을 위한 ID 제공자의 요청으로 시작한다.기본 IdP 시작 흐름에 대한 독점적 확장이 제안되었다(예를 들어, Sibboleth에 의해).
웹 브라우저 SSO 프로파일이 SAML 2.0용으로 완전히 리팩터링되었다.개념적으로 SAML 1.1 Browser/Artifact와 Browser/POST는 SAML 2.0 Web Browser SSO의 특별한 경우다.후자는 SAML 2.0의 새로운 "플러그 앤 플레이" 바인딩 설계로 인해 SAML 1.1에 비해 상당히 유연하다.이전 버전과 달리 SAML 2.0 브라우저 흐름은 서비스 제공업체의 요청으로 시작한다.이것은 더 큰 유연성을 제공하지만, SP가 시작한 흐름은 자연스럽게 오늘날 많은 연구의 초점인 소위 ID 제공자 검색 문제를 야기한다.SAML 2.0은 웹 브라우저 SSO 외에도 다음과 같은 다양한 새로운 프로필을 도입한다.
- SSO 프로필
- 웹 브라우저 SSO 프로필
- ECP(향상된 클라이언트 또는 프록시) 프로파일
- ID 제공자 검색 프로파일
- 단일 로그아웃 프로파일
- 이름 식별자 관리 프로파일
- 아티팩트 해상도 프로파일
- 어설션 쿼리/요청 프로파일
- 이름 식별자 매핑 프로파일
- SAML 속성 프로파일
SAML 웹 브라우저 SSO 프로필 외에도 SAML의 중요한 타사 프로필에는 다음이 포함된다.
보안
SAML 규격은 다음과 같은 다양한 보안 메커니즘을 권장하며, 경우에 따라 필수적이다.
요구사항은 (상호) 인증, 무결성 및 기밀성 측면에서 표현되는 경우가 많으므로, 보안 메커니즘의 선택은 구현자와 배치자에게 남겨진다.
사용하다
기본 SAML 사용 사례는 웹 브라우저 SSO(Single Sign-On)라고 한다.사용자는 사용자 에이전트(대개 웹 브라우저)를 사용하여 SAML 서비스 공급자에 의해 보호되는 웹 리소스를 요청한다.요청된 사용자의 신원을 알고자 하는 서비스 제공자는 사용자 에이전트를 통해 SAML ID 제공자에게 인증 요청을 발급한다.결과 프로토콜 흐름은 다음 도표에 설명되어 있다.

- 1. SP에서 대상 리소스 요청(SAML 2.0에만 해당)
- 주체(HTTP 사용자 에이전트를 통해)가 서비스 공급자의 대상 리소스를 요청:
https://sp.example.com/myresource
서비스 제공업체는 대상 리소스를 대신하여 보안 검사를 수행한다.서비스 공급자에 유효한 보안 컨텍스트가 이미 있는 경우 2-7단계를 건너뛰십시오. - 2. IdP에서 SSO 서비스로 리디렉션(SAML 2.0에만 해당)
- 서비스 제공자는 (지정되지 않은 방법으로) 사용자의 기본 ID 제공자를 결정하고, ID 제공자의 SSO 서비스로 사용자 에이전트를 리디렉션한다.
https://idp.example.org/SAML2/SSO/Redirect?SAMLRequest=request
의 값SAMLRequest
매개변수( 자리 표시자에 의해 표시됨)request
위)는 감압된 장치의 Base64 인코딩이다.<samlp:AuthnRequest>
원소의 - 3. IdP에서 SSO 서비스 요청(SAML 2.0에만 해당)
- 사용자 에이전트는 2단계의 URL에서 SSO 서비스에 GET 요청을 발행한다.SSO 서비스가 다음을 처리함
AuthnRequest
(the roads through the)SAMLRequest
URL 쿼리 매개 변수) 및 보안 검사를 수행하십시오.사용자가 유효한 보안 컨텍스트를 가지고 있지 않은 경우, ID 제공자는 사용자를 식별한다(자세한 내용은 생략). - 4. XHTML 양식으로 대응
- SSO 서비스는 요청을 검증하고 XHTML 양식을 포함하는 문서로 응답한다.의 값
<form method="post" action="https://sp.example.com/SAML2/SSO/POST" ...> <<input형="hidden형"명="SAMLResponse" 값="response" /> ...<input형="submit형" 값="제출" /> </형식>
SAMLResponse
요소( 자리 표시자에 의해 표시됨)response
위)는 a의 base64 인코딩이다.<samlp:Response>
원소의 - 5. SP에서 어설션 소비자 서비스 요청
- 사용자 에이전트는 서비스 제공자의 어설션 소비자 서비스에 POST 요청을 발행한다.의 값
SAMLResponse
파라미터는 4단계의 XHTML 양식에서 취한다. - 6. 대상 리소스로 리디렉션
- 어설션 소비자 서비스는 응답을 처리하고, 서비스 제공업체에 보안 컨텍스트를 생성하고, 사용자 에이전트를 대상 리소스로 리디렉션한다.
- 7. SP에서 대상 리소스 다시 요청
- 사용자 에이전트가 서비스 공급자에서 대상 리소스를 요청(again):
https://sp.example.com/myresource
- 8. 요청된 리소스로 응답
- 보안 컨텍스트가 존재하기 때문에, 서비스 제공자는 자원을 사용자 에이전트에 반환한다.
SAML 1.1에서는 3단계에서 ID 제공자의 사이트 간 전송 서비스에 대한 요청으로 흐름이 시작된다.
위의 흐름 예에서 제시된 모든 교환은 전면 채널 교환이며, 즉 HTTP 사용자 에이전트(브라우저)가 각 단계에서 SAML 엔티티와 통신한다.특히, 서비스 제공 업체와 ID 제공 업체 간의 백채널 교환이나 직접 통신이 이루어지지 않고 있다.전면 채널 교환은 간단한 HTTP 바인딩(GET 또는 POST)을 사용하여 모든 메시지가 값으로 전달되는 단순한 프로토콜 흐름으로 이어진다.실제로, 이전 섹션에서 설명하는 흐름을 Lightweight Web Browser SSO Profile이라고 부르기도 한다.
대신에, 보안이나 프라이버시 강화를 위해, 메시지는 참조로 전달될 수 있다.예를 들어 신원 제공자는 사용자 에이전트를 통해 직접 주장을 전송하는 대신 SAML 주장(유물이라고 함)에 대한 참조를 제공할 수 있다.이후, 서비스 제공자는 백채널을 통해 실제 주장을 요청한다.이러한 백채널 교환은 SOAP 메시지 교환(SAML over SOAP over HTTP)으로 지정된다.일반적으로 보안 백 채널을 통한 SAML 교환은 SOAP 메시지 교환으로 이루어진다.
백 채널에서 SAML은 SOAP 1.1의 사용을 명시한다.그러나 SOAP를 바인딩 메커니즘으로 사용하는 것은 선택 사항이다.주어진 SAML 배치는 어떤 바인딩이든 선택할 것이다.
참고 항목
참조
- ^ "What is SAML? - A Word Definition From the Webopedia Computer Dictionary". Webopedia.com. 25 June 2002. Retrieved 2013-09-21.
- ^ J. 휴즈 외OASIS 보안 어설션 마크업 언어(SAML) 2.0. OASIS 표준, 2005년 3월.문서 식별자: saml-self-2.0-os http://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf(에라타를 포함한 이 규격의 최신 작업 초안은 https://www.oasis-open.org/committees/download.php/56782/sstc-saml-profiles-errata-2.0-wd-07.pdf)을 참조하십시오.
- ^ N. 라구지스 외SAML(Security Assertion Markup Language) 2.0 기술 개요.OASIS 위원회 초안 02, 2008년 3월.문서 식별자: sstc-saml-tech-2.0-cd-02 https://wiki.oasis-open.org/security/Saml2TechOverview
- ^ "SAML: The Secret to Centralized Identity Management". InformationWeek.com. 2004-11-23. Retrieved 2014-05-23.
- ^ Maler, Eve (9 Jan 2001). "Minutes of 9 January 2001 Security Services TC telecon". security-services at oasis-open (Mailing list). Retrieved 7 April 2011.
- ^ "History of SAML". SAMLXML.org. 2007-12-05. Retrieved 2014-05-22.
- ^ Conor P. Cahill. "Liberty Technology Overview" (PDF). Liberty Alliance. Retrieved 2017-08-25.
- ^ a b c "Google, NTT and the US GSA Deploy SAML 2.0 for Digital Identity Management". Oracle Journal. 2008-01-29. Retrieved 2014-05-22.
- ^ P. Mishra; et al. (May 2003), Differences between OASIS Security Assertion Markup Language (SAML) V1.1 and V1.0 (PDF), OASIS, sstc-saml-diff-1.1-draft-01, retrieved 7 April 2011
- ^ "How To Break XML Encryption" (PDF). Association for Computing Machinery. 19 October 2011. Retrieved 31 October 2014.
- ^ "RUB Researchers break W3C standard". Ruhr University Bochum. 19 October 2011. Archived from the original on 2011-11-24. Retrieved 29 June 2012.
- ^ SOAP 1.1
외부 링크
- OASIS 보안 서비스 기술 위원회
- 표지: SAML(보안 어설션 마크업 언어)
- SAML을 공부하고 배우는 방법
- SAML 인증 해제
- 첫 번째 공개 SAML 2.0 ID 제공자
- Daniel Blum (2003). Federated ID gains momentum. IDG Network World Inc. p. 42.