Egyszeri bejelentkezéses SAML-protokoll
Ez a cikk a Microsoft Entra ID által az egyszeri bejelentkezéshez (SSO) támogatott SAML 2.0 hitelesítési kérelmeket és válaszokat ismerteti.
Az alábbi protokolldiagram az egyszeri bejelentkezési sorrendet ismerteti. A felhőszolgáltatás (a szolgáltató) HTTP-átirányítási kötéssel ad át egy AuthnRequest
(hitelesítési kérés) elemet a Microsoft Entra ID-nak (az identitásszolgáltatónak). A Microsoft Entra ID ezután EGY HTTP-bejegyzéskötést használ egy Response
elem felhőszolgáltatásba való közzétételéhez.
Feljegyzés
Ez a cikk az SAML egyszeri bejelentkezéshez való használatát ismerteti. Az egyszeri bejelentkezés kezelésének egyéb módjairól (például az OpenID Csatlakozás vagy az integrált Windows-hitelesítés használatával) kapcsolatos további információkért lásd: Egyszeri bejelentkezés az alkalmazásokra a Microsoft Entra-azonosítóban.
AuthnRequest
Felhasználói hitelesítés igényléséhez a felhőszolgáltatások egy AuthnRequest
elemet küldenek a Microsoft Entra-azonosítónak. Egy SAML 2.0-s AuthnRequest
minta a következő példához hasonlóan nézhet ki:
<samlp:AuthnRequest
xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
ID="id6c1c178c166d486687be4aaf5e482730"
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>
Paraméter | Típus | Leírás |
---|---|---|
ID |
Kötelező | A Microsoft Entra ID ezt az attribútumot használja a InResponseTo visszaadott válasz attribútumának feltöltéséhez. Az azonosító nem kezdődhet számmal, ezért gyakori stratégia, hogy egy sztringet, például az "AZONOSÍTÓt" elő kell írni egy GUID sztring-ábrázolására. Például id6c1c178c166d486687be4aaf5e482730 érvényes azonosító. |
Version |
Kötelező | Ezt a paramétert 2.0 a következőre kell állítani: . |
IssueInstant |
Kötelező | Ez egy DateTime sztring UTC-értékkel és oda-vissza formátummal ("o"). A Microsoft Entra ID ilyen típusú DateTime-értéket vár, de nem értékeli ki vagy nem használja az értéket. |
AssertionConsumerServiceURL |
Választható | Ha meg van adva, ennek a paraméternek meg kell egyeznie a RedirectUri Microsoft Entra ID felhőszolgáltatásával. |
ForceAuthn |
Választható | Ez logikai érték. Ha ez igaz, az azt jelenti, hogy a felhasználónak újra kell hitelesítenie, még akkor is, ha érvényes munkamenete van a Microsoft Entra-azonosítóval. |
IsPassive |
Választható | Ez egy logikai érték, amely meghatározza, hogy a Microsoft Entra-azonosítónak a felhasználó beavatkozása nélkül, csendesen hitelesítenie kell-e a felhasználót a munkamenet-cookie használatával, ha van ilyen. Ha ez igaz, a Microsoft Entra ID megkísérli hitelesíteni a felhasználót a munkamenet cookie-jával. |
A rendszer figyelmen kívül hagyja az összes többi AuthnRequest
attribútumot, például Consent
a , Destination
, AssertionConsumerServiceIndex
, AttributeConsumerServiceIndex
és ProviderName
figyelmen kívül hagyja.
A Microsoft Entra ID szintén figyelmen kívül hagyja a Conditions
fájl elemét AuthnRequest
.
Issuer
Egy Issuer
adott elemnek AuthnRequest
pontosan meg kell egyeznie a Microsoft Entra ID felhőszolgáltatás egyik ServicePrincipalNames elemével. Ez általában az alkalmazásregisztráció során megadott alkalmazásazonosító URI-ra van állítva.
Az elemet tartalmazó SAML-részlet a Issuer
következő mintához hasonlóan néz ki:
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://www.contoso.com</Issuer>
NameIDPolicy
Ez az elem egy adott névazonosító-formátumot kér a válaszban, és nem kötelező a Microsoft Entra ID-nak küldött elemekben AuthnRequest
.
Egy NameIdPolicy
elem a következő mintához hasonlóan néz ki:
<NameIDPolicy Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"/>
Ha NameIDPolicy
meg van adva, felveheti annak opcionális Format
attribútumát. Az Format
attribútum csak az alábbi értékek egyikével rendelkezhet; bármely más érték hibát eredményez.
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
: A Microsoft Entra ID párosított azonosítóként állítja ki aNameID
jogcímet.urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
: A Microsoft Entra ID e-mail címformátumban állítja ki aNameID
jogcímet.urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
: Ez az érték lehetővé teszi a Microsoft Entra-azonosító számára a jogcímformátum kiválasztását. A Microsoft Entra ID párosított azonosítóként állítja ki aNameID
jogcímet.urn:oasis:names:tc:SAML:2.0:nameid-format:transient
: A Microsoft Entra ID véletlenszerűen generált értékként állítja ki aNameID
jogcímet, amely egyedi az aktuális egyszeri bejelentkezéssel kapcsolatos művelethez. Ez azt jelenti, hogy az érték ideiglenes, és nem használható a hitelesítést végző felhasználó azonosítására.
Ha SPNameQualifier
meg van adva, a Microsoft Entra-azonosító ugyanazt SPNameQualifier
tartalmazza a válaszban.
A Microsoft Entra ID figyelmen kívül hagyja az AllowCreate
attribútumot.
RequestedAuthnContext
Az RequestedAuthnContext
elem megadja a kívánt hitelesítési módszereket. Nem kötelező a AuthnRequest
Microsoft Entra-azonosítónak küldött elemekben. A Microsoft Entra ID támogatja AuthnContextClassRef
az olyan értékeket, mint a urn:oasis:names:tc:SAML:2.0:ac:classes:Password
.
Hatókörkezelés
Az Scoping
identitásszolgáltatók listáját tartalmazó elem nem kötelező a Microsoft Entra ID-nak küldött elemekben AuthnRequest
.
Ha meg van adva, ne tartalmazza az attribútumot IDPListOption
vagy RequesterID
az ProxyCount
elemet, mert azok nem támogatottak.
Aláírás
Az Signature
elemek egy AuthnRequest
eleme nem kötelező. A Microsoft Entra-azonosító konfigurálható az aláírt hitelesítési kérések követelményének kikényszerítésére. Ha engedélyezve van, csak aláírt hitelesítési kéréseket fogad el a rendszer, ellenkező esetben a kérelmező ellenőrzése csak a regisztrált Assertion Consumer Service URL-címekre való válaszadással történik.
Tárgy
Ne tartalmazzon Subject
elemet. A Microsoft Entra ID nem támogatja a tárgy AuthnRequest
megadását, és ha meg van adva, hibaüzenetet ad vissza.
A tulajdonost ehelyett úgy lehet megadni, hogy egy paramétert login_hint
ad hozzá a HTTP-kérelemhez az egyszeri bejelentkezési URL-címhez, paraméterértékként pedig a tulajdonos NameID azonosítóját.
Válasz
Ha a kért bejelentkezés sikeresen befejeződik, a Microsoft Entra ID választ küld a felhőszolgáltatásnak. A sikeres bejelentkezési kísérletre adott válasz a következő mintához hasonlóan néz ki:
<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="id758d0ef385634593a77bdf7e632984b6" 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>
Válasz
Az Response
elem tartalmazza az engedélyezési kérelem eredményét. A Microsoft Entra ID beállítja az ID
elem értékeit Version
és IssueInstant
értékeit Response
. A következő attribútumokat is beállítja:
Destination
: Ha a bejelentkezés sikeresen befejeződött, ez aRedirectUri
szolgáltató (felhőszolgáltatás) értékére van állítva.InResponseTo
: Ez annak az elemnek azID
AuthnRequest
attribútumára van beállítva, amely a választ kezdeményezte.
Issuer
A Microsoft Entra ID a Issuer
https://sts.windows.net/<TenantIDGUID>/
<TenantIDGUID>
Microsoft Entra-bérlő bérlőazonosítójának helyét állítja be.
A Kiállító elemre adott válasz például a következő mintához hasonlóan nézhet ki:
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion"> https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>
Állapot
Az Status
elem a bejelentkezés sikerességét vagy sikertelenségét jelzi. Tartalmazza az StatusCode
elemet, amely egy kódot vagy beágyazott kódkészletet tartalmaz, amely a kérés állapotát jelöli. Tartalmazza az StatusMessage
elemet is, amely a bejelentkezési folyamat során létrehozott egyéni hibaüzeneteket tartalmazza.
Az alábbi minta egy SAML-válasz egy sikertelen bejelentkezési kísérletre.
<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-dd33-eeeeee333333
Timestamp: 2013-03-18 08:49:24Z</samlp:StatusMessage>
</samlp:Status>
</samlp:Response>
Állítás
A Microsoft Entra ID mellett a ID
IssueInstant
Version
következő elemeket is beállítja a Assertion
válasz elemében.
Issuer
Itt adhatja meg https://sts.windows.net/<TenantIDGUID>/
<TenantIDGUID>
a Microsoft Entra-bérlő bérlőazonosítóját.
<Issuer>https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>
Aláírás
A Microsoft Entra ID aláírja az állítást egy sikeres bejelentkezésre válaszul. Az Signature
elem tartalmaz egy digitális aláírást, amellyel a felhőszolgáltatás hitelesítheti a forrást az állítás integritásának ellenőrzéséhez.
A digitális aláírás létrehozásához a Microsoft Entra ID a metaadat-dokumentum elemében található IDPSSODescriptor
aláíró kulcsot használja.
<ds:Signature xmlns:ds="https://www.w3.org/2000/09/xmldsig#">
digital_signature_here
</ds:Signature>
Tárgy
Ez az állításban szereplő állítások tárgyát képező elvet határozza meg. Tartalmaz egy NameID
elemet, amely a hitelesített felhasználót jelöli. Az NameID
érték egy célzott azonosító, amely csak a jogkivonat célközönségét képező szolgáltatóhoz lesz irányítva. Állandó – visszavonható, de soha nem rendeli újra. Az is átlátszatlan, hogy nem jelenít meg semmit a felhasználóról, és nem használható attribútum-lekérdezések azonosítójaként.
Az Method
elem attribútuma SubjectConfirmation
mindig a következőre urn:oasis:names:tc:SAML:2.0:cm:bearer
van állítva: .
<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>
Feltételek
Ez az elem olyan feltételeket határoz meg, amelyek meghatározzák az SAML-állítások elfogadható használatát.
<Conditions NotBefore="2013-03-18T07:38:15.128Z" NotOnOrAfter="2013-03-18T08:48:15.128Z">
<AudienceRestriction>
<Audience>https://www.contoso.com</Audience>
</AudienceRestriction>
</Conditions>
Az NotBefore
és NotOnOrAfter
az attribútumok azt az időtartamot határozzák meg, amely alatt az állítás érvényes.
- Az attribútum értéke
NotBefore
egyenlő vagy kissé (egy másodpercnél kisebb) későbbi azAssertion
elem attribútumánakIssueInstant
értékénél. A Microsoft Entra ID nem számol el semmilyen időbeli különbséget önmagában és a felhőszolgáltatásban (szolgáltatónál), és nem ad hozzá puffert ehhez az időponthoz. - Az attribútum értéke
NotOnOrAfter
70 perccel később van, mint azNotBefore
attribútum értéke.
Célközönség
Ez egy URI-t tartalmaz, amely azonosítja a célközönséget. A Microsoft Entra ID ennek az elemnek az értékét Issuer
a bejelentkezést kezdeményező elem értékére AuthnRequest
állítja. Az Audience
érték kiértékeléséhez használja az alkalmazásregisztráció során megadott értéket App ID URI
.
<AudienceRestriction>
<Audience>https://www.contoso.com</Audience>
</AudienceRestriction>
Az értékhez hasonlóan az Issuer
Audience
értéknek is pontosan meg kell egyeznie az egyik szolgáltatásnév nevével, amely a Felhőszolgáltatást jelöli a Microsoft Entra-azonosítóban. Ha azonban az Issuer
elem értéke nem URI-érték, akkor a Audience
válaszban szereplő érték az Issuer
előtaggal ellátott spn:
érték.
Attribútumstatement
Ez a tárgyra vagy felhasználóra vonatkozó jogcímeket tartalmaz. Az alábbi részlet egy mintaelemet AttributeStatement
tartalmaz. A három pont azt jelzi, hogy az elem több attribútumot és attribútumértéket is tartalmazhat.
<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>
- Név jogcíme – Az attribútum (
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
) értékeName
a hitelesített felhasználó egyszerű neve, példáultestuser@managedtenant.com
. - ObjectIdentifier-jogcím – Az attribútum (
http://schemas.microsoft.com/identity/claims/objectidentifier
) értéke annak a címtárobjektumnak azObjectId
értékeObjectIdentifier
, amely a Microsoft Entra ID-ban a hitelesített felhasználót jelöli.ObjectId
a hitelesített felhasználó nem módosítható, globálisan egyedi és újrafelhasználható biztonságos azonosítója.
AuthnStatement
Ez az elem azt állítja, hogy az állítás tárgyát egy adott időpontban egy adott eszközzel hitelesítették.
- Az
AuthnInstant
attribútum azt az időpontot adja meg, amikor a felhasználó a Microsoft Entra-azonosítóval hitelesített. - Az
AuthnContext
elem megadja a felhasználó hitelesítéséhez használt hitelesítési környezetet.
<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>