Microsoft ID 플랫폼은 각 인증 흐름의 처리에서 여러 유형의 보안 토큰을 내보낸다. 이 문서에서는 SAML 2.0 토큰의 형식, 보안 특성 및 내용을 설명합니다.
SAML 토큰의 클레임
| 이름 | 동등한 JWT 클레임 | 설명 | 예시 |
|---|---|---|---|
| 청중 | aud |
토큰의 의도된 받는 사람입니다. 토큰을 받는 애플리케이션은 대상 그룹 값이 올바른지 확인하고 다른 대상 그룹을 위한 토큰을 거부해야 합니다. | <AudienceRestriction><Audience>https://contoso.com</Audience></AudienceRestriction> |
| 인증 즉시 | 인증이 발생한 날짜와 시간을 기록합니다. | <AuthnStatement AuthnInstant="2011-12-29T05:35:22.000Z"> |
|
| 인증 방법 | amr |
토큰의 주체가 인증된 방법을 식별합니다. | <AuthnContextClassRef>http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod/password</AuthnContextClassRef> |
| 이름 (First Name) | given_name |
Microsoft Entra 사용자 개체에 설정된 대로 사용자의 첫 번째 또는 "지정된" 이름을 제공합니다. | <Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"><AttributeValue>Frank<AttributeValue> |
| 그룹 | groups |
주체의 그룹 멤버 자격을 나타내는 개체 ID를 제공합니다. 이러한 값은 고유하며(개체 ID 참조) 리소스에 액세스하기 위한 권한 부여를 적용하는 등 액세스를 관리하는 데 안전하게 사용할 수 있습니다. 그룹 클레임에 포함된 그룹은 애플리케이션 매니페스트의 "groupMembershipClaims" 속성을 통해 애플리케이션별로 구성됩니다. null 값은 모든 그룹을 제외하고, "SecurityGroup" 값에는 디렉터리 역할 및 Active Directory 보안 그룹 멤버 자격이 포함되며, "All" 값에는 보안 그룹과 Microsoft 365 메일 그룹이 모두 포함됩니다. 참고: 사용자가 속한 그룹 수가 한도(SAML의 경우 150, JWT의 경우 200)를 초과하면 사용자에 대한 그룹 목록이 포함된 Graph 엔드포인트를 가리키는 클레임 원본에 초과분 클레임이 추가됩니다. |
<Attribute Name="http://schemas.microsoft.com/ws/2008/06/identity/claims/groups"><AttributeValueaaaaaaaa-0000-1111-2222-bbbbbbbbbbbb</AttributeValue> |
| 그룹 초과분 표시기 | groups:src1 |
길이가 제한되지 않지만 토큰에 대해 너무 큰 토큰 요청의 경우 사용자의 전체 그룹 목록에 대한 링크가 포함됩니다. SAML의 경우 클레임 대신 groups 새 클레임으로 추가됩니다. 참고: Azure AD Graph API는 Microsoft Graph API로 대체됩니다. 해당하는 엔드포인트에 대한 자세한 내용은 getMemberObjects 사용자를 참조하세요. |
<Attribute Name=" http://schemas.microsoft.com/claims/groups.link"><AttributeValue>https://graph.windows.net/{tenantID}/users/{userID}/getMemberObjects<AttributeValue> |
| ID 공급자 | idp |
토큰의 주체를 인증한 ID 공급자를 기록합니다. 이 값은 사용자 계정이 발급자가 아닌 다른 테넌트에 있지 않는 한 발급자 클레임의 값과 동일합니다. | <Attribute Name=" http://schemas.microsoft.com/identity/claims/identityprovider"><AttributeValue>https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/<AttributeValue> |
| IssuedAt | iat |
토큰이 발급된 시간을 저장합니다. 토큰 새로 고침을 측정하는 데 자주 사용됩니다. | <Assertion ID="_d5ec7a9b-8d8f-4b44-8c94-9812612142be" IssueInstant="2014-01-06T20:20:23.085Z" Version="2.0" xmlns="urn:oasis:names:tc:SAML:2.0:assertion"> |
| 발급자 | iss |
토큰을 생성하고 반환하는 STS(보안 토큰 서비스)를 식별합니다. Microsoft Entra ID가 반환하는 토큰에서 발급자는 sts.windows.net. 발급자 클레임 값의 GUID는 Microsoft Entra 디렉터리의 테넌트 ID입니다. 테넌트 ID는 디렉터리의 변경할 수 없는 신뢰할 수 있는 식별자입니다. | <Issuer>https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer> |
| 성 이름 | family_name |
Microsoft Entra 사용자 개체에 정의된 대로 사용자의 성, 성 또는 패밀리 이름을 제공합니다. | <Attribute Name=" http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname"><AttributeValue>Miller<AttributeValue> |
| 이름 | unique_name |
토큰의 주체를 식별하는, 사람이 인식할 수 있는 값을 제공합니다. 이 값은 테넌트 내에서 고유하도록 보장되지 않으며 표시 목적으로만 사용하도록 설계되었습니다. | <Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"><AttributeValue>frankm@contoso.com<AttributeValue> |
| 오브젝트 ID | oid |
Microsoft Entra ID에 있는 개체의 고유 식별자를 포함합니다. 이 값은 변경할 수 없으며 재할당 또는 재사용할 수 없습니다. 개체 ID를 사용하여 Microsoft Entra ID에 대한 쿼리에서 개체를 식별합니다. | <Attribute Name="http://schemas.microsoft.com/identity/claims/objectidentifier"><AttributeValue>bbbbbbbb-1111-2222-3333-cccccccccccc<AttributeValue> |
| 역할 | roles |
주체가 그룹 멤버 자격을 통해 직간접적으로 부여되었으며 역할 기반 액세스 제어를 적용하는 데 사용할 수 있는 모든 애플리케이션 역할을 나타냅니다. 애플리케이션 역할은 애플리케이션 매니페스트의 속성을 통해 appRoles 애플리케이션별로 정의됩니다.
value 각 애플리케이션 역할의 속성은 역할 클레임에 표시되는 값입니다. |
<Attribute Name="http://schemas.microsoft.com/ws/2008/06/identity/claims/role"> |
| 주제 | sub |
애플리케이션 사용자와 같은 토큰이 정보를 어설션하는 보안 주체를 식별합니다. 주체는 Microsoft Entra ID에서 발급하는 SAML 토큰에 항상 존재합니다.
NameID 형식에 따라 이 값을 사용하여 범용 권한 부여 시스템에서 주체를 식별할 수 있습니다(권한 부여를 위해 전자 메일 주소를 사용하는 경우 위험 참조).SubjectConfirmation 는 클레임이 아닙니다. 토큰의 주체를 확인하는 방법을 설명합니다.
Bearer 는 주체가 토큰을 소유하여 확인됨을 나타냅니다. |
<Subject><NameID>S40rgb3XjhFTv6EQTETkEzcgVmToHKRkZUIsJlmLdVc</NameID><SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer" /></Subject> |
| 임차인 ID | tid |
토큰을 발급한 디렉터리 테넌트를 식별하는 변경할 수 없는 재사용 불가능한 식별자입니다. 이 값을 사용하여 다중 테넌트 애플리케이션의 테넌트별 디렉터리 리소스에 액세스할 수 있습니다. 예를 들어 이 값을 사용하여 Graph API 호출에서 테넌트를 식별할 수 있습니다. | <Attribute Name="http://schemas.microsoft.com/identity/claims/tenantid"><AttributeValue>aaaabbbb-0000-cccc-1111-dddd2222eeee<AttributeValue> |
| 토큰 수명 |
nbf, exp |
토큰이 유효한 시간 간격을 정의합니다. 토큰의 유효성을 검사하는 서비스는 현재 날짜가 토큰 수명 내에 있는지 확인해야 합니다. 그렇지 않으면 토큰을 거부해야 합니다. 이 서비스는 Microsoft Entra ID와 서비스 간의 클록 시간("시간 기울이기")의 차이를 고려하여 토큰 수명 범위를 초과하는 최대 5분 동안 허용될 수 있습니다. | <ConditionsNotBefore="2013-03-18T21:32:51.261Z"NotOnOrAfter="2013-03-18T22:32:51.261Z"> |
샘플 SAML 토큰
일반적인 SAML 토큰의 샘플입니다.
<?xml version="1.0" encoding="UTF-8"?>
<t:RequestSecurityTokenResponse xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">
<t:Lifetime>
<wsu:Created xmlns:wsu="https://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2014-12-24T05:15:47.060Z</wsu:Created>
<wsu:Expires xmlns:wsu="https://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2014-12-24T06:15:47.060Z</wsu:Expires>
</t:Lifetime>
<wsp:AppliesTo xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<EndpointReference xmlns="https://www.w3.org/2005/08/addressing">
<Address>https://contoso.onmicrosoft.com/MyWebApp</Address>
</EndpointReference>
</wsp:AppliesTo>
<t:RequestedSecurityToken>
<Assertion xmlns="urn:oasis:names:tc:SAML:2.0:assertion" ID="_aaaaaaaa-0b0b-1c1c-2d2d-333333333333" IssueInstant="2014-12-24T05:20:47.060Z" Version="2.0">
<Issuer>https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>
<ds:Signature xmlns:ds="https://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="https://www.w3.org/2001/10/xml-exc-c14n#" />
<ds:SignatureMethod Algorithm="https://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
<ds:Reference URI="#_aaaaaaaa-0b0b-1c1c-2d2d-333333333333">
<ds:Transforms>
<ds:Transform Algorithm="https://www.w3.org/2000/09/xmldsig#enveloped-signature" />
<ds:Transform Algorithm="https://www.w3.org/2001/10/xml-exc-c14n#" />
</ds:Transforms>
<ds:DigestMethod Algorithm="https://www.w3.org/2001/04/xmlenc#sha256" />
<ds:DigestValue>E3fH4iJ5kL6mN7oP8qR9sT0uV1wX2y/nDY=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>aB1cD2eF3gH4i...J5kL6-mN7oP8qR==</ds:SignatureValue>
<KeyInfo xmlns="https://www.w3.org/2000/09/xmldsig#">
<X509Data>
<X509Certificate>C2dE3fH4iJ5kL6mN7oP8qR9sT0uV1w</X509Certificate>
</X509Data>
</KeyInfo>
</ds:Signature>
<Subject>
<NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">m_H3naDei2LNxUmEcWd0BZlNi_jVET1pMLR6iQSuYmo</NameID>
<SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer" />
</Subject>
<Conditions NotBefore="2014-12-24T05:15:47.060Z" NotOnOrAfter="2014-12-24T06:15:47.060Z">
<AudienceRestriction>
<Audience>https://contoso.onmicrosoft.com/MyWebApp</Audience>
</AudienceRestriction>
</Conditions>
<AttributeStatement>
<Attribute Name="http://schemas.microsoft.com/identity/claims/objectidentifier">
<AttributeValue>aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb</AttributeValue>
</Attribute>
<Attribute Name="http://schemas.microsoft.com/identity/claims/tenantid">
<AttributeValue>aaaabbbb-0000-cccc-1111-dddd2222eeee</AttributeValue>
</Attribute>
<Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name">
<AttributeValue>sample.admin@contoso.onmicrosoft.com</AttributeValue>
</Attribute>
<Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname">
<AttributeValue>Admin</AttributeValue>
</Attribute>
<Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname">
<AttributeValue>Sample</AttributeValue>
</Attribute>
<Attribute Name="http://schemas.microsoft.com/ws/2008/06/identity/claims/groups">
<AttributeValue>5581e43f-6096-41d4-8ffa-04e560bab39d</AttributeValue>
<AttributeValue>07dd8a89-bf6d-4e81-8844-230b77145381</AttributeValue>
<AttributeValue>0e129f4g-6b0a-4944-982d-f776000632af</AttributeValue>
<AttributeValue>3ee07328-52ef-4739-a89b-109708c22fb5</AttributeValue>
<AttributeValue>329k14b3-1851-4b94-947f-9a4dacb595f4</AttributeValue>
<AttributeValue>6e32c650-9b0a-4491-b429-6c60d2ca9a42</AttributeValue>
<AttributeValue>f3a169a7-9a58-4e8f-9d47-b70029v07424</AttributeValue>
<AttributeValue>8e2c86b2-b1ad-476d-9574-544d155aa6ff</AttributeValue>
<AttributeValue>1bf80264-ff24-4866-b22c-6212e5b9a847</AttributeValue>
<AttributeValue>4075f9c3-072d-4c32-b542-03e6bc678f3e</AttributeValue>
<AttributeValue>76f80527-f2cd-46f4-8c52-8jvd8bc749b1</AttributeValue>
<AttributeValue>0ba31460-44d0-42b5-b90c-47b3fcc48e35</AttributeValue>
<AttributeValue>edd41703-8652-4948-94a7-2d917bba7667</AttributeValue>
</Attribute>
<Attribute Name="http://schemas.microsoft.com/identity/claims/identityprovider">
<AttributeValue>https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/</AttributeValue>
</Attribute>
</AttributeStatement>
<AuthnStatement AuthnInstant="2014-12-23T18:51:11.000Z">
<AuthnContext>
<AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</AuthnContextClassRef>
</AuthnContext>
</AuthnStatement>
</Assertion>
</t:RequestedSecurityToken>
<t:RequestedAttachedReference>
<SecurityTokenReference xmlns="https://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:d3p1="https://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd" d3p1:TokenType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0">
<KeyIdentifier ValueType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLID">_aaaaaaaa-0b0b-1c1c-2d2d-333333333333</KeyIdentifier>
</SecurityTokenReference>
</t:RequestedAttachedReference>
<t:RequestedUnattachedReference>
<SecurityTokenReference xmlns="https://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:d3p1="https://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd" d3p1:TokenType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0">
<KeyIdentifier ValueType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLID">_aaaaaaaa-0b0b-1c1c-2d2d-333333333333</KeyIdentifier>
</SecurityTokenReference>
</t:RequestedUnattachedReference>
<t:TokenType>http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0</t:TokenType>
<t:RequestType>http://schemas.xmlsoap.org/ws/2005/02/trust/Issue</t:RequestType>
<t:KeyType>http://schemas.xmlsoap.org/ws/2005/05/identity/NoProofKey</t:KeyType>
</t:RequestSecurityTokenResponse>
다음 단계
- Microsoft Graph API를 사용하여 토큰 수명 정책을 관리하는 방법에 대한 자세한 내용은 Microsoft Entra 정책 리소스 개요를 참조하세요.
- 애플리케이션의 토큰에 사용자 지정 및 선택적 클레임 을 추가합니다.
- SAML에서 SSO(Single Sign-On)를 사용합니다.
- Azure Single Sign-Out SAML 프로토콜 사용