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 Connect 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í element AuthnRequest
do ID Microsoft Entra. Ukázkový AuthnRequest
SAML 2.0 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 |
Požadovaný | 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. Například id6c1c178c166d486687be4aaf5e482730 je platné ID. |
Version |
Požadovaný | Tento parametr by měl být nastaven na 2.0 . |
IssueInstant |
Požadovaný | Jedná se o řetězec DateTime s hodnotou UTC a formátu 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žby v Microsoft Entra ID. |
AssertionConsumerServiceIndex |
Volitelný | Pokud je k dispozici, ID Microsoft Entra odešle požadavek na RedirectUri s odpovídajícím indexem nakonfigurovaným v rámci základní konfigurace SAML aplikace. POZNÁMKA: na specifikace SAML se vzájemně vylučují parametry AssertionConsumerServiceURL a AssertionConsumerServiceIndex . |
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í atributy AuthnRequest
, například Consent
, Destination
a ProviderName
, jsou ignorovány.
Microsoft Entra ID také ignoruje prvek Conditions
v AuthnRequest
.
Emitent
Prvek Issuer
v AuthnRequest
musí přesně odpovídat jednomu z ServicePrincipalNames v cloudové službě v Microsoft Entra ID. Obvykle se nastaví na identifikátor URI ID aplikace , který je zadán během registrace aplikace.
Výňatek SAML obsahující prvek Issuer
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 prvek požaduje v odpovědi určitý formát ID názvu a je volitelný v AuthnRequest
elementy odeslané 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 je k dispozici NameIDPolicy
, můžete zahrnout její volitelný atribut Format
. 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á deklaraci identityNameID
jako párový identifikátor. -
urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
: ID Microsoft Entra vydává deklaraci identityNameID
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á deklaraci identityNameID
jako identifikátor párového směru. -
urn:oasis:names:tc:SAML:2.0:nameid-format:transient
: Microsoft Entra ID vydává deklaraci identityNameID
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 je zadán SPNameQualifier
, obsahuje ID Microsoft Entra stejné SPNameQualifier
v odpovědi.
ID Microsoft Entra ignoruje atribut AllowCreate
.
RequestedAuthnContext
Element RequestedAuthnContext
určuje požadované metody ověřování. V AuthnRequest
elementech odesílaných do ID Microsoft Entra je nepovinný.
Poznámka
Pokud je RequestedAuthnContext
součástí požadavku SAML, musí být element Comparison
nastaven na exact
.
Microsoft Entra ID podporuje následující AuthnContextClassRef
hodnoty.
Metoda ověřování | Identifikátor URI třídy kontextu ověřování |
---|---|
Kerberos | urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos |
Uživatelské jméno a heslo | urn:oasis:names:tc:SAML:2.0:ac:classes:Password |
Infrastruktura veřejných klíčů PGP | urn:oasis:names:tc:SAML:2.0:ac:classes:PGP |
Zabezpečené vzdálené heslo | urn:oasis:names:tc:SAML:2.0:ac:classes:SecureRemotePassword |
Digitální podpis XML | urn:oasis:names:tc:SAML:2.0:ac:classes:XMLDSig |
Jednoduchá infrastruktura veřejného klíče | urn:oasis:names:tc:SAML:2.0:ac:classes:SPKI |
Čipová karta | urn:oasis:names:tc:SAML:2.0:ac:classes:Smartcard |
Čipová karta s uzavřeným privátním klíčem a PIN kódem | urn:oasis:names:tc:SAML:2.0:ac:classes:SmartcardPKI |
Klient TLS (Transport Layer Security) | urn:oasis:names:tc:SAML:2.0:ac:classes:TLSClient |
Nespecifikovaný | urn:oasis:names:tc:SAML:2.0:ac:classes:Unspecified |
Certifikát X.509 | urn:oasis:names:tc:SAML:2.0:ac:classes:X509 |
Integrované ověřování systému Windows | urn:federation:authentication:windows |
Oboru
Element Scoping
, který obsahuje seznam zprostředkovatelů identity, je volitelný v AuthnRequest
elementy odesílané do Microsoft Entra ID.
Pokud je k dispozici, nezahrnujte atribut ProxyCount
, IDPListOption
ani prvek RequesterID
, protože se nepodporují.
Podpis
Prvek Signature
v elementech AuthnRequest
je volitelný. Id Microsoft Entra je možné nakonfigurovat tak, aby vynucovala požadavek 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 prvek Subject
. MICROSOFT Entra ID nepodporuje zadání předmětu v AuthnRequest
a vrátí chybu, pokud je zadána.
Předmět je možné místo toho poskytnout přidáním parametru login_hint
do požadavku HTTP na adresu URL jednotného přihlašování s ID názvu subjektu jako hodnotou parametru.
Odpověď
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>
Odpověď
Element Response
obsahuje výsledek žádosti o autorizaci. Microsoft Entra ID nastaví ID
, Version
a IssueInstant
hodnoty v elementu Response
. 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 nastavení je nastaveno na atributID
elementuAuthnRequest
, který inicioval odpověď.
Emitent
Id Microsoft Entra nastaví prvek Issuer
na https://sts.windows.net/<TenantIDGUID>/
, kde <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í. Obsahuje prvek StatusCode
, který obsahuje kód nebo sadu vnořených kódů, které představují stav požadavku. Obsahuje také prvek StatusMessage
, 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>
Tvrzení
Kromě ID
, IssueInstant
a Version
, Microsoft Entra ID nastaví následující prvky v Assertion
prvku odpovědi.
Emitent
Tato možnost je nastavená na https://sts.windows.net/<TenantIDGUID>/
, kde <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 prvek NameID
, 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
elementu SubjectConfirmation
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>
Atributy NotBefore
a NotOnOrAfter
určují interval, během kterého je kontrolní výraz platný.
- Hodnota atributu
NotBefore
se rovná nebo mírně (menší než sekunda) později než hodnotaIssueInstant
atributuAssertion
elementu. 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ější než hodnota atributuNotBefore
.
Obecenstvo
Obsahuje identifikátor URI, který identifikuje zamýšlenou cílovou skupinu. Microsoft Entra ID nastaví hodnotu tohoto prvku na hodnotu Issuer
elementu AuthnRequest
, který inicioval přihlášení. Chcete-li vyhodnotit hodnotu Audience
, použijte hodnotu App ID URI
, která byla zadána během registrace aplikace.
<AudienceRestriction>
<Audience>https://www.contoso.com</Audience>
</AudienceRestriction>
Stejně jako hodnota Issuer
musí hodnota Audience
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 prvku Issuer
není hodnotou identifikátoru URI, Audience
hodnota v odpovědi je hodnota Issuer
předponou spn:
.
AttributeStatement
Obsahuje deklarace identity týkající se subjektu nebo uživatele. Následující výňatek obsahuje ukázkový prvek AttributeStatement
. 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
objektu 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>