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.

Képernyőkép az egyszeri bejelentkezés (SSO) munkafolyamatáról.

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.0a 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 Consenta , Destination, AssertionConsumerServiceIndex, AttributeConsumerServiceIndexés ProviderNamefigyelmen 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 a NameID jogcímet.
  • urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress: A Microsoft Entra ID e-mail címformátumban állítja ki a NameID 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 a NameID 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 a NameID 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 IDelem é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 a RedirectUri szolgáltató (felhőszolgáltatás) értékére van állítva.
  • InResponseTo: Ez annak az elemnek az IDAuthnRequest attribútumára van beállítva, amely a választ kezdeményezte.

Issuer

A Microsoft Entra ID a Issuerhttps://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 IDIssueInstantVersionkö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:bearervan á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 az Assertion elem attribútumának IssueInstant é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 az NotBefore 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 IssuerAudience é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éke Name a hitelesített felhasználó egyszerű neve, például testuser@managedtenant.com.
  • ObjectIdentifier-jogcím – Az attribútum (http://schemas.microsoft.com/identity/claims/objectidentifier) értéke annak a címtárobjektumnak az ObjectId é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>