Odwołanie do oświadczeń tokenu SAML

Platforma tożsamości Microsoft emituje kilka typów tokenów zabezpieczających w przetwarzaniu każdego przepływu uwierzytelniania. W tym dokumencie opisano format, charakterystykę zabezpieczeń i zawartość tokenów SAML 2.0.

Oświadczenia w tokenach języka SAML

Nazwisko Równoważne oświadczenie JWT opis Przykład
Odbiorcy aud Zamierzony odbiorca tokenu. Aplikacja, która odbiera token, musi sprawdzić, czy wartość odbiorców jest poprawna i odrzucić wszystkie tokeny przeznaczone dla innej grupy odbiorców. <AudienceRestriction>
<Audience>
https://contoso.com
</Audience>
</AudienceRestriction>
Błyskawiczne uwierzytelnianie Rejestruje datę i godzinę wystąpienia uwierzytelniania. <AuthnStatement AuthnInstant="2011-12-29T05:35:22.000Z">
Metoda uwierzytelniania amr Określa sposób uwierzytelniania podmiotu tokenu. <AuthnContextClassRef>
http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod/password
</AuthnContextClassRef>
Imię given_name Udostępnia pierwszą lub "daną" nazwę użytkownika, ustawioną na obiekcie użytkownika Microsoft Entra. <Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname">
<AttributeValue>Frank<AttributeValue>
Grupy groups Udostępnia identyfikatory obiektów reprezentujące członkostwo w grupach podmiotu. Te wartości są unikatowe (zobacz Identyfikator obiektu) i mogą być bezpiecznie używane do zarządzania dostępem, takich jak wymuszanie autoryzacji w celu uzyskania dostępu do zasobu. Grupy zawarte w oświadczeniach grup są konfigurowane dla poszczególnych aplikacji za pośrednictwem właściwości "groupMembershipClaims" manifestu aplikacji. Wartość null będzie wykluczać wszystkie grupy, wartość "SecurityGroup" będzie zawierać role katalogu i członkostwo w grupach zabezpieczeń usługi Active Directory, a wartość "Wszystkie" będzie zawierać zarówno grupy zabezpieczeń, jak i listy dystrybucyjne platformy Microsoft 365.

Notatki:
Jeśli liczba grup, w których znajduje się użytkownik, przekracza limit (150 dla protokołu SAML, 200 dla JWT), oświadczenie nadwyżkowe zostanie dodane do źródeł oświadczeń wskazujących punkt końcowy programu Graph zawierający listę grup dla użytkownika.
<Attribute Name="http://schemas.microsoft.com/ws/2008/06/identity/claims/groups">
<AttributeValue>07dd8a60-bf6d-4e17-8844-230b77145381</AttributeValue>
Wskaźnik nadwyżki grup groups:src1 W przypadku żądań tokenów, które nie są ograniczone przez długość, ale nadal zbyt duże dla tokenu, zostanie dołączony link do pełnej listy grup dla użytkownika. W przypadku protokołu SAML jest to dodawane jako nowe oświadczenie zamiast groups oświadczenia.

Notatki:
Interfejs API programu Azure AD Graph jest zastępowany przez interfejs API programu Microsoft Graph. Aby dowiedzieć się więcej o równoważnym punkcie końcowym, zobacz user: getMemberObjects.
<Attribute Name=" http://schemas.microsoft.com/claims/groups.link">
<AttributeValue>https://graph.windows.net/{tenantID}/users/{userID}/getMemberObjects<AttributeValue>
Dostawca tożsamości idp Rejestruje dostawcę tożsamości, który uwierzytelnił podmiot tokenu. Ta wartość jest identyczna z wartością oświadczenia wystawcy, chyba że konto użytkownika znajduje się w innej dzierżawie niż wystawca. <Attribute Name=" http://schemas.microsoft.com/identity/claims/identityprovider">
<AttributeValue>https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/<AttributeValue>
Wystawionyat iat Przechowuje czas wystawienia tokenu. Często służy do mierzenia świeżości tokenu. <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">
Wystawca iss Identyfikuje usługę tokenu zabezpieczającego (STS), która konstruuje i zwraca token. W tokenach zwracanych przez firmę Microsoft Entra ID wystawca jest sts.windows.net. Identyfikator GUID w wartości oświadczenia wystawcy jest identyfikatorem dzierżawy katalogu Microsoft Entra. Identyfikator dzierżawy jest niezmiennym i niezawodnym identyfikatorem katalogu. <Issuer>https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>
Nazwisko family_name Podaje nazwisko, nazwisko lub nazwę rodziny użytkownika zgodnie z definicją w obiekcie użytkownika Microsoft Entra. <Attribute Name=" http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname">
<AttributeValue>Miller<AttributeValue>
Nazwisko unique_name Udostępnia zrozumiałą wartość identyfikującą podmiot tokenu. Ta wartość nie ma gwarancji, że jest unikatowa w ramach dzierżawy i została zaprojektowana tak, aby była używana tylko do celów wyświetlania. <Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name">
<AttributeValue>frankm@contoso.com<AttributeValue>
Identyfikator obiektu oid Zawiera unikatowy identyfikator obiektu w identyfikatorze Entra firmy Microsoft. Ta wartość jest niezmienna i nie można jej ponownie przypisać ani ponownie użyć. Użyj identyfikatora obiektu, aby zidentyfikować obiekt w zapytaniach do identyfikatora Entra firmy Microsoft. <Attribute Name="http://schemas.microsoft.com/identity/claims/objectidentifier">
<AttributeValue>528b2ac2-aa9c-45e1-88d4-959b53bc7dd0<AttributeValue>
Role roles Reprezentuje wszystkie role aplikacji, które podmiot otrzymały bezpośrednio i pośrednio za pośrednictwem członkostwa w grupie i mogą być używane do wymuszania kontroli dostępu opartej na rolach. Role aplikacji są definiowane dla poszczególnych aplikacji za pośrednictwem appRoles właściwości manifestu aplikacji. Właściwość value każdej roli aplikacji to wartość wyświetlana w oświadczeniu ról. <Attribute Name="http://schemas.microsoft.com/ws/2008/06/identity/claims/role">
Temat sub Określa podmiot zabezpieczeń, o którym token potwierdza informacje, takie jak użytkownik aplikacji. Ta wartość jest niezmienna i nie może zostać ponownie przypisana lub ponownie użyta, więc może służyć do bezpiecznego przeprowadzania kontroli autoryzacji. Ponieważ podmiot jest zawsze obecny w tokenach problemów z identyfikatorem Entra firmy Microsoft, zalecamy użycie tej wartości w systemie autoryzacji ogólnego przeznaczenia.
SubjectConfirmation nie jest oświadczeniem. Opisuje on sposób weryfikacji podmiotu tokenu. Bearer wskazuje, że podmiot jest potwierdzony przez ich posiadanie tokenu.
<Subject>
<NameID>S40rgb3XjhFTv6EQTETkEzcgVmToHKRkZUIsJlmLdVc</NameID>
<SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer" />
</Subject>
Identyfikator dzierżawy tid Niezmienny, niezdatny do wielokrotnego użytku identyfikator identyfikujący dzierżawę katalogu, która wystawiła token. Tej wartości można użyć do uzyskiwania dostępu do zasobów katalogu specyficznych dla dzierżawy w aplikacji wielodostępnej. Możesz na przykład użyć tej wartości, aby zidentyfikować dzierżawę w wywołaniu interfejsu API programu Graph. <Attribute Name="http://schemas.microsoft.com/identity/claims/tenantid">
<AttributeValue>aaaabbbb-0000-cccc-1111-dddd2222eeee<AttributeValue>
Czas życia tokenu nbf, exp Definiuje przedział czasu, przez który token jest prawidłowy. Usługa, która sprawdza poprawność tokenu, powinna sprawdzić, czy bieżąca data przypada w okresie istnienia tokenu, w przeciwnym razie powinna odrzucić token. Usługa może pozwolić na maksymalnie pięć minut poza zakresem okresu istnienia tokenu, aby uwzględnić różnice w czasie zegara ("niesymetryczność czasu") między identyfikatorem Entra firmy Microsoft a usługą. <Conditions
NotBefore="2013-03-18T21:32:51.261Z"
NotOnOrAfter="2013-03-18T22:32:51.261Z"
>

Przykładowy token SAML

Jest to przykład typowego tokenu 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="_3ef08993-846b-41de-99df-b7f3ff77671b" 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="#_3ef08993-846b-41de-99df-b7f3ff77671b">
                        <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>cV1J580U1pD24hEyGuAxrbtgROVyghCqI32UkER/nDY=</ds:DigestValue>
                    </ds:Reference>
                </ds:SignedInfo>
                <ds:SignatureValue>j+zPf6mti8Rq4Kyw2NU2nnu0pb{lots of characters}ut93UTyTAIGOs5fvP9ZfK2vNeMVJW7Xg==</ds:SignatureValue>
                <KeyInfo xmlns="https://www.w3.org/2000/09/xmldsig#">
                    <X509Data>
                        <X509Certificate>MIIDPjCCAabcAwIBAgIQsRiM0jheFZhKk49YD0SK1TAJBgUrDg{lots of characters}OBcXWLAIarZ</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">_3ef08993-846b-41de-99df-b7f3ff77671b</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">_3ef08993-846b-41de-99df-b7f3ff77671b</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>

Następne kroki

  • Aby dowiedzieć się więcej na temat zarządzania zasadami okresu istnienia tokenu przy użyciu interfejsu API programu Microsoft Graph, zobacz Omówienie zasobów zasad firmy Microsoft Entra.
  • Dodawanie oświadczeń niestandardowych i opcjonalnych do tokenów dla aplikacji.
  • Używanie logowania jednokrotnego (SSO) z językiem SAML.
  • Korzystanie z protokołu SAML logowania jednokrotnego platformy Azure