SAML 토큰 및 클레임
SAML(Security Assertions Markup Language) 토큰은 클레임의 XML 표현입니다. 기본적으로 페더레이션 보안 시나리오에서 WCF(Windows Communication Foundation)가 사용하는 SAML 토큰은 발급된 토큰입니다.
SAML 토큰은 하나의 엔터티에서 다른 엔터티에 대해 만든 클레임 집합인 문을 수행합니다. 예를 들어, 페더레이션 보안 시나리오의 경우 시스템의 사용자에 대한 보안 토큰 서비스에서 문을 작성합니다. 보안 토큰 서비스에서는 토큰에 포함된 문의 정확성을 나타내기 위해 SAML 토큰을 서명합니다. 또한 SAML 토큰은 암호화 키 자료와 연결되어 있으며, 이 때 SAML 토큰의 사용자는 해당 키 자료를 알고 있음을 증명합니다. 이 증명은 신뢰하는 상대에게 SAML 토큰이 실제로 해당 사용자에게 발행되었음을 나타냅니다. 예를 들어, 일반적인 시나리오는 다음과 같습니다.
클라이언트는 보안 토큰 서비스에서 SAML 토큰을 요청하고 Windows 자격 증명을 사용하여 해당 보안 토큰 서비스를 인증합니다.
보안 토큰 서비스는 SAML 토큰을 클라이언트에 발행합니다. SAML 토큰은 보안 토큰 서비스와 연결된 인증서를 통해 서명되며, 대상 서비스에 대해 암호화된 증명 키를 포함합니다.
또한 클라이언트는 증명 키의 복사본을 수신합니다. 그런 다음, 클라이언트는 SAML 토큰을 신뢰 당사자인 애플리케이션 서비스에 제공하고 해당 증명 키를 사용하여 메시지에 서명합니다.
SAML 토큰을 통한 서명은 신뢰하는 상대에게 보안 토큰 서비스에서 토큰을 발행했음을 나타냅니다. 증명 키를 사용하여 만든 메시지 서명은 신뢰하는 상대에게 토큰이 클라이언트에게 발행되었음을 나타냅니다.
클레임에서 SamlAttribute로
WCF에서 SAML 토큰의 문은 SamlAttribute 개체로 모델링되며, 해당 개체는 Claim 개체에 PossessProperty의 Right 속성이 있고 Resource 속성의 형식이 String인 경우 Claim 개체에서 직접 채워집니다. 예시:
Claim myClaim = new Claim(
ClaimTypes.GivenName, "Martin", Rights.PossessProperty);
SamlAttribute sa = new SamlAttribute(myClaim);
Dim myClaim As New Claim(ClaimTypes.GivenName, "Martin", _
Rights.PossessProperty)
Dim sa As New SamlAttribute(myClaim)
참고 항목
SAML 토큰이 메시지에 serialize될 때 보안 토큰 서비스에서 해당 토큰을 발행하거나 클라이언트에서 인증의 일부로 해당 토큰을 서비스에 제공하는 경우, 최대 메시지 크기 할당량은 SAML 토큰 및 다른 메시지 부분을 수용할 수 있도록 충분히 커야 합니다. 일반적으로 기본 메시지 크기 할당량이면 충분합니다. 그러나 SAML 토큰에 수백 개의 클레임이 포함되어 있어 SAML 토큰이 큰 경우에는 serialize된 토큰을 수용할 수 있도록 할당량을 늘려야 할 수 있습니다. 자세한 내용은 데이터에 대한 보안 고려 사항을 참조하세요.
SamlAttribute에서 클레임으로
메시지에서 SAML 토큰을 받으면 SAML 토큰의 여러 문이 IAuthorizationPolicy에 배치되는 AuthorizationContext 개체로 변경됩니다. 각 SAML 문의 클레임은 ClaimSets의 AuthorizationContext 속성에서 반환하며, 사용자 인증 및 권한 부여 여부를 결정하기 위해 검사할 수 있습니다.