Поделиться через


Справочник по утверждениям токена SAML

Платформа удостоверений Майкрософт выдает несколько типов маркеров безопасности в обработке каждого потока проверки подлинности. В этом документе описаны формат, характеристики безопасности и содержимое токенов 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>
Имя (Первое имя) given_name Предоставляет первое или заданное имя пользователя, как задано в объекте пользователя Microsoft Entra. <Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname">
<AttributeValue>Frank<AttributeValue>
Группы groups Предоставляет идентификаторы объектов, представляющие членство в группах субъекта. Эти значения являются уникальными (см. идентификатор объекта) и можно безопасно использовать для управления доступом, например принудительное применение авторизации для доступа к ресурсу. Группы, включенные в утверждение групп, настраиваются на основе каждого приложения с помощью свойства groupMembershipClaims манифеста приложения. Значение NULL исключает все группы, значение "SecurityGroup" будет включать роли каталогов и членство в группе безопасности Active Directory, а значение "Все" будет включать как группы безопасности, так и списки рассылки Microsoft 365.

Заметки:
Если количество групп, в которых пользователь находится, выходит за предел (150 для SAML, 200 для JWT), то в конечную точку Graph будет добавлено превышение количества утверждений, указывающих на конечную точку Graph, содержащую список групп для пользователя.
<Attribute Name="http://schemas.microsoft.com/ws/2008/06/identity/claims/groups">
<AttributeValueaaaaaaaa-0000-1111-2222-bbbbbbbbbbbb</AttributeValue>
Индикатор переполнения групп groups:src1 Для запросов маркеров, которые не ограничены длиной, но по-прежнему слишком большими для маркера, будет включена ссылка на полный список групп для пользователя. Для SAML это добавляется в качестве нового утверждения вместо groups утверждения.

Заметки:
API Graph Azure AD заменяется API Microsoft Graph. Дополнительные сведения о эквивалентной конечной точке см. в статье getMemberObjects.
<Attribute Name=" http://schemas.microsoft.com/claims/groups.link">
<AttributeValue>https://graph.windows.net/{tenantID}/users/{userID}/getMemberObjects<AttributeValue>
Поставщик удостоверений idp Фиксирует поставщика удостоверений, который проверил подлинность субъекта токена. Это значение идентично значению утверждения издателя, если учетная запись пользователя не находится в другом клиенте, отличном от издателя. <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, издатель sts.windows.net. Идентификатор GUID в значении утверждения издателя — это идентификатор клиента каталога Microsoft Entra. Идентификатор клиента — это неизменяемый и надежный идентификатор каталога. <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>[email protected]<AttributeValue>
Идентификатор объекта oid Содержит уникальный идентификатор объекта в идентификаторе Microsoft Entra. Это значение является неизменяемым и не может быть переназначено или повторно использовано. Используйте идентификатор объекта для идентификации объекта в запросах к идентификатору Microsoft Entra. <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 Определяет субъект, о котором токен утверждает информацию, например пользователь приложения. Это значение неизменяемо и не может быть переназначен или повторно использовано, поэтому его можно использовать для безопасного выполнения проверок авторизации. Так как тема всегда присутствует в маркерах проблем с идентификатором Идентификатора Майкрософт, мы рекомендуем использовать это значение в системе авторизации общего назначения.
SubjectConfirmation не является утверждением. В нем описывается, как проверяется тема маркера. Bearer указывает, что субъект подтверждается их владение маркером.
<Subject>
<NameID>S40rgb3XjhFTv6EQTETkEzcgVmToHKRkZUIsJlmLdVc</NameID>
<SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer" />
</Subject>
Идентификатор арендатора tid Неизменяемый неизменяемый идентификатор, который определяет клиент каталога, выдаваемый маркером. Это значение можно использовать для доступа к ресурсам каталога для конкретного клиента в мультитенантном приложении. Например, это значение можно использовать для идентификации клиента в вызове API Graph. <Attribute Name="http://schemas.microsoft.com/identity/claims/tenantid">
<AttributeValue>aaaabbbb-0000-cccc-1111-dddd2222eeee<AttributeValue>
Время жизни токена nbf, exp Определяет интервал времени, в течение которого маркер действителен. Служба, проверяющая маркер, должна убедиться, что текущая дата находится в течение времени существования маркера, а в противном случае она должна отклонить маркер. Служба может разрешить до пяти минут за пределы диапазона времени существования маркера, чтобы учитывать любые различия в времени часов ("отклонение времени") между идентификатором Microsoft Entra и службой. <Conditions
NotBefore="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>[email protected]</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>

Дальнейшие шаги