Protokol SAML pro jednotné přihlašování
Tento článek se zabývá požadavky na ověřování SAML 2.0 a odpovědi, které Microsoft Entra ID podporuje pro jednotné přihlašování (SSO).
Následující diagram protokolu popisuje sekvenci jednotného přihlašování. Cloudová služba (poskytovatel služeb) používá vazbu HTTP Redirect k předání elementu AuthnRequest
(žádost o ověření) do Microsoft Entra ID (zprostředkovatele identity). Microsoft Entra ID pak použije vazbu HTTP post k publikování Response
elementu do cloudové služby.
Poznámka:
Tento článek popisuje použití SAML pro jednotné přihlašování. Další informace o jiných způsobech zpracování jednotného přihlašování (například pomocí OpenID Připojení nebo integrovaného ověřování systému Windows) najdete v tématu Jednotné přihlašování k aplikacím v Microsoft Entra ID.
AuthnRequest
Pokud chcete požádat o ověření uživatele, cloudové služby odesílají AuthnRequest
element do ID Microsoft Entra. Ukázka SAML 2.0 AuthnRequest
může vypadat jako v následujícím příkladu:
<samlp:AuthnRequest
xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
ID="C2dE3fH4iJ5kL6mN7oP8qR9sT0uV1w"
Version="2.0" IssueInstant="2013-03-18T03:28:54.1839884Z"
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://www.contoso.com</Issuer>
</samlp:AuthnRequest>
Parametr | Typ | Popis |
---|---|---|
ID |
Povinní účastníci | Microsoft Entra ID používá tento atribut k naplnění InResponseTo atributu vrácené odpovědi. ID nesmí začínat číslem, takže běžnou strategií je předvytvádění řetězce, jako je "ID" na řetězcovou reprezentaci identifikátoru GUID. Jedná se například id6c1c178c166d486687be4aaf5e482730 o platné ID. |
Version |
Požaduje se | Tento parametr by měl být nastaven na 2.0 hodnotu . |
IssueInstant |
Požaduje se | Jedná se o řetězec DateTime s hodnotou UTC a formátem odezvy ("o"). MICROSOFT Entra ID očekává hodnotu DateTime tohoto typu, ale nevyhodnocuje ani nepoužívá hodnotu. |
AssertionConsumerServiceURL |
Volitelné | Pokud je zadaný, musí tento parametr odpovídat RedirectUri cloudové službě v MICROSOFT Entra ID. |
ForceAuthn |
Volitelné | Toto je logická hodnota. Pokud ano, znamená to, že uživatel bude nucen znovu ověřit, i když má platnou relaci s ID Microsoft Entra. |
IsPassive |
Volitelné | Jedná se o logickou hodnotu, která určuje, zda má ID Microsoft Entra ověřit uživatele bez zásahu uživatele pomocí souboru cookie relace, pokud existuje. Pokud je to pravda, Microsoft Entra ID se pokusí ověřit uživatele pomocí souboru cookie relace. |
Všechny ostatní AuthnRequest
atributy, například Consent
, Destination
, AssertionConsumerServiceIndex
AttributeConsumerServiceIndex
, a ProviderName
jsou ignorovány.
Microsoft Entra ID také ignoruje Conditions
prvek v AuthnRequest
.
Issuer
Prvek Issuer
v objektu AuthnRequest
musí přesně odpovídat jedné z servicePrincipalNames v cloudové službě v Microsoft Entra ID. Obvykle se nastaví na identifikátor URI ID aplikace, který je zadaný během registrace aplikace.
Výňatek SAML obsahující Issuer
prvek vypadá jako v následující ukázce:
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://www.contoso.com</Issuer>
NameIDPolicy
Tento element požaduje v odpovědi určitý formát ID názvu a je volitelný v AuthnRequest
prvcích odesílaných do Microsoft Entra ID.
Prvek NameIdPolicy
vypadá jako v následující ukázce:
<NameIDPolicy Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"/>
Pokud NameIDPolicy
je k dispozici, můžete zahrnout jeho volitelný Format
atribut. Atribut Format
může mít pouze jednu z následujících hodnot; jakákoli jiná hodnota způsobí chybu.
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
: Id Microsoft Entra vydáváNameID
deklaraci identity jako párový identifikátor.urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
: Id Microsoft Entra vydáváNameID
deklaraci identity ve formátu e-mailové adresy.urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
: Tato hodnota umožňuje microsoft Entra ID vybrat formát deklarace identity. Id Microsoft Entra vydáváNameID
deklaraci identity jako identifikátor spárované ručiček.urn:oasis:names:tc:SAML:2.0:nameid-format:transient
: Id Microsoft Entra vydáváNameID
deklaraci identity jako náhodně vygenerovanou hodnotu, která je jedinečná pro aktuální operaci jednotného přihlašování. To znamená, že hodnota je dočasná a nejde ji použít k identifikaci ověřovacího uživatele.
Pokud SPNameQualifier
je zadáno, Microsoft Entra ID obsahuje stejné SPNameQualifier
v odpovědi.
ID Microsoft Entra ignoruje AllowCreate
atribut.
RequestedAuthnContext
Element RequestedAuthnContext
určuje požadované metody ověřování. Je nepovinný v AuthnRequest
prvech odeslaných do Microsoft Entra ID. Microsoft Entra ID podporuje AuthnContextClassRef
hodnoty, jako urn:oasis:names:tc:SAML:2.0:ac:classes:Password
je .
Vymezení problému
Element Scoping
, který obsahuje seznam zprostředkovatelů identity, je volitelný v AuthnRequest
prvcích odesílaných do Microsoft Entra ID.
Pokud je k dispozici, nezahrňte ProxyCount
atribut IDPListOption
ani RequesterID
prvek, protože nejsou podporované.
Podpis
Prvek Signature
v AuthnRequest
prvcích je volitelný. Microsoft Entra ID je možné nakonfigurovat tak, aby vynucovala požadavky na podepsané žádosti o ověření. Pokud je tato možnost povolená, přijímají se jenom podepsané žádosti o ověření, jinak se ověření žadatele poskytuje pouze reagováním na registrované adresy URL služby Assertion Consumer Service.
Předmět
Nezahrnujte Subject
prvek. Microsoft Entra ID nepodporuje zadání předmětu AuthnRequest
a vrátí chybu, pokud je zadána.
Předmět lze místo toho poskytnout přidáním login_hint
parametru do požadavku HTTP na adresu URL jednotného přihlašování s ID názvu subjektu jako hodnotou parametru.
Response
Po úspěšném dokončení požadovaného přihlášení odešle ID Microsoft Entra odpověď do cloudové služby. Odpověď na úspěšný pokus o přihlášení vypadá jako v následující ukázce:
<samlp:Response ID="_a4958bfd-e107-4e67-b06d-0d85ade2e76a" Version="2.0" IssueInstant="2013-03-18T07:38:15.144Z" Destination="https://contoso.com/identity/inboundsso.aspx" InResponseTo="C2dE3fH4iJ5kL6mN7oP8qR9sT0uV1w" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion"> https://login.microsoftonline.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>
<ds:Signature xmlns:ds="https://www.w3.org/2000/09/xmldsig#">
...
</ds:Signature>
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success" />
</samlp:Status>
<Assertion ID="_bf9c623d-cc20-407a-9a59-c2d0aee84d12" IssueInstant="2013-03-18T07:38:15.144Z" Version="2.0" xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
<Issuer>https://login.microsoftonline.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>
<ds:Signature xmlns:ds="https://www.w3.org/2000/09/xmldsig#">
...
</ds:Signature>
<Subject>
<NameID>Uz2Pqz1X7pxe4XLWxV9KJQ+n59d573SepSAkuYKSde8=</NameID>
<SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<SubjectConfirmationData InResponseTo="id758d0ef385634593a77bdf7e632984b6" NotOnOrAfter="2013-03-18T07:43:15.144Z" Recipient="https://contoso.com/identity/inboundsso.aspx" />
</SubjectConfirmation>
</Subject>
<Conditions NotBefore="2013-03-18T07:38:15.128Z" NotOnOrAfter="2013-03-18T08:48:15.128Z">
<AudienceRestriction>
<Audience>https://www.contoso.com</Audience>
</AudienceRestriction>
</Conditions>
<AttributeStatement>
<Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name">
<AttributeValue>testuser@contoso.com</AttributeValue>
</Attribute>
<Attribute Name="http://schemas.microsoft.com/identity/claims/objectidentifier">
<AttributeValue>3F2504E0-4F89-11D3-9A0C-0305E82C3301</AttributeValue>
</Attribute>
...
</AttributeStatement>
<AuthnStatement AuthnInstant="2013-03-18T07:33:56.000Z" SessionIndex="_bf9c623d-cc20-407a-9a59-c2d0aee84d12">
<AuthnContext>
<AuthnContextClassRef> urn:oasis:names:tc:SAML:2.0:ac:classes:Password</AuthnContextClassRef>
</AuthnContext>
</AuthnStatement>
</Assertion>
</samlp:Response>
Response
Tento Response
prvek obsahuje výsledek žádosti o autorizaci. Microsoft Entra ID nastaví ID
Version
a IssueInstant
hodnoty v elementuResponse
. Nastaví také následující atributy:
Destination
: Po úspěšném přihlášení se nastaví naRedirectUri
poskytovatele služeb (cloudová služba).InResponseTo
: Toto je nastaveno naID
atributAuthnRequest
prvku, který inicioval odpověď.
Issuer
Id Microsoft Entra nastaví Issuer
element na místo, kde https://sts.windows.net/<TenantIDGUID>/
<TenantIDGUID>
je ID tenanta Microsoft Entra.
Například odpověď s elementem Issuer by mohla vypadat jako v následující ukázce:
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion"> https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>
Stav
Prvek Status
vyjadřuje úspěch nebo selhání přihlášení. StatusCode
Obsahuje prvek, který obsahuje kód nebo sadu vnořených kódů, které představují stav požadavku. Obsahuje také StatusMessage
prvek, který obsahuje vlastní chybové zprávy, které se generují během procesu přihlašování.
Následující ukázka je odpověď SAML na neúspěšný pokus o přihlášení.
<samlp:Response ID="_f0961a83-d071-4be5-a18c-9ae7b22987a4" Version="2.0" IssueInstant="2013-03-18T08:49:24.405Z" InResponseTo="iddce91f96e56747b5ace6d2e2aa9d4f8c" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Requester">
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:RequestUnsupported" />
</samlp:StatusCode>
<samlp:StatusMessage>AADSTS75006: An error occurred while processing a SAML2 Authentication request. AADSTS90011: The SAML authentication request property 'NameIdentifierPolicy/SPNameQualifier' is not supported.
Trace ID: 0000aaaa-11bb-cccc-dd22-eeeeee333333
Timestamp: 2013-03-18 08:49:24Z</samlp:StatusMessage>
</samlp:Status>
</samlp:Response>
Kontrolní výraz
Kromě ID
a IssueInstant
Version
, Microsoft Entra ID nastaví následující prvky v Assertion
elementu odpovědi.
Issuer
Toto je nastaveno na místo, kde https://sts.windows.net/<TenantIDGUID>/
<TenantIDGUID>
je ID tenanta Microsoft Entra.
<Issuer>https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>
Podpis
Microsoft Entra ID podepíše kontrolní výraz v reakci na úspěšné přihlášení. Prvek Signature
obsahuje digitální podpis, který může cloudová služba použít k ověření zdroje k ověření integrity kontrolního výrazu.
K vygenerování tohoto digitálního podpisu používá Microsoft Entra ID podpisový klíč v IDPSSODescriptor
prvku dokumentu metadat.
<ds:Signature xmlns:ds="https://www.w3.org/2000/09/xmldsig#">
digital_signature_here
</ds:Signature>
Předmět
Určuje princip, který je předmětem prohlášení v kontrolním výrazu. Obsahuje NameID
prvek, který představuje ověřeného uživatele. Hodnota NameID
je cílový identifikátor, který je směrován pouze na poskytovatele služeb, který je cílovou skupinou tokenu. Je trvalý – může být odvolán, ale nikdy se znovu nepřiřazuje. Je také neprůhlásná, v tom, že nezojevuje nic o uživateli a nelze jej použít jako identifikátor pro dotazy atributů.
Atribut Method
SubjectConfirmation
prvku je vždy nastaven na urn:oasis:names:tc:SAML:2.0:cm:bearer
.
<Subject>
<NameID>Uz2Pqz1X7pxe4XLWxV9KJQ+n59d573SepSAkuYKSde8=</NameID>
<SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<SubjectConfirmationData InResponseTo="id758d0ef385634593a77bdf7e632984b6" NotOnOrAfter="2013-03-18T07:43:15.144Z" Recipient="https://contoso.com/identity/inboundsso.aspx" />
</SubjectConfirmation>
</Subject>
Podmínky
Tento prvek určuje podmínky, které definují přijatelné použití kontrolních výrazů SAML.
<Conditions NotBefore="2013-03-18T07:38:15.128Z" NotOnOrAfter="2013-03-18T08:48:15.128Z">
<AudienceRestriction>
<Audience>https://www.contoso.com</Audience>
</AudienceRestriction>
</Conditions>
NotOnOrAfter
Atributy NotBefore
určují interval, během kterého je kontrolní výraz platný.
- Hodnota atributu
NotBefore
je rovna nebo mírně (menší než sekunda) později než hodnotaIssueInstant
atributuAssertion
prvku. Microsoft Entra ID nezohlední žádný časový rozdíl mezi sebou a cloudovou službou (poskytovatel služeb) a nepřidá do této doby žádnou vyrovnávací paměť. - Hodnota atributu
NotOnOrAfter
je o 70 minut později než hodnota atributuNotBefore
.
Cílová skupina
Obsahuje identifikátor URI, který identifikuje zamýšlenou cílovou skupinu. Microsoft Entra ID nastaví hodnotu tohoto prvku na hodnotu Issuer
prvku AuthnRequest
, který inicioval přihlášení. K vyhodnocení Audience
hodnoty použijte hodnotu App ID URI
, která byla zadána během registrace aplikace.
<AudienceRestriction>
<Audience>https://www.contoso.com</Audience>
</AudienceRestriction>
Issuer
Stejně jako hodnota Audience
musí hodnota přesně odpovídat jednomu z hlavních názvů služby, které představují cloudovou službu v MICROSOFT Entra ID. Pokud však hodnota Issuer
prvku není hodnotou identifikátoru URI, Audience
hodnota v odpovědi je Issuer
hodnota s předponou spn:
.
AttributeStatement
Obsahuje deklarace identity týkající se subjektu nebo uživatele. Následující výňatek obsahuje ukázkový AttributeStatement
prvek. Tři tečky označují, že prvek může obsahovat více atributů a hodnot atributů.
<AttributeStatement>
<Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name">
<AttributeValue>testuser@contoso.com</AttributeValue>
</Attribute>
<Attribute Name="http://schemas.microsoft.com/identity/claims/objectidentifier">
<AttributeValue>3F2504E0-4F89-11D3-9A0C-0305E82C3301</AttributeValue>
</Attribute>
...
</AttributeStatement>
- Deklarace identity názvu – hodnota atributu
Name
(http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
) je hlavní název uživatele ověřeného uživatele, napříkladtestuser@managedtenant.com
. - ObjectIdentifier Claim - Hodnota atributu
ObjectIdentifier
(http://schemas.microsoft.com/identity/claims/objectidentifier
) jeObjectId
objekt adresáře, který představuje ověřeného uživatele v Microsoft Entra ID.ObjectId
je neměnný, globálně jedinečný a opakovaně používat bezpečný identifikátor ověřeného uživatele.
AuthnStatement
Tento prvek tvrdí, že subjekt kontrolního výrazu byl ověřen určitým způsobem v určitém čase.
- Atribut
AuthnInstant
určuje čas, kdy se uživatel ověřil pomocí ID Microsoft Entra. - Element
AuthnContext
určuje kontext ověřování použitý k ověření uživatele.
<AuthnStatement AuthnInstant="2013-03-18T07:33:56.000Z" SessionIndex="_bf9c623d-cc20-407a-9a59-c2d0aee84d12">
<AuthnContext>
<AuthnContextClassRef> urn:oasis:names:tc:SAML:2.0:ac:classes:Password</AuthnContextClassRef>
</AuthnContext>
</AuthnStatement>