Dela via


SAML-protokoll för enkel inloggning

Den här artikeln beskriver SAML 2.0-autentiseringsbegäranden och svar som Microsoft Entra ID stöder för enkel inloggning (SSO).

Följande protokolldiagram beskriver sekvensen för enkel inloggning. Molntjänsten (tjänstleverantören) använder en HTTP-omdirigeringsbindning för att skicka ett AuthnRequest-element (autentiseringsbegäran) till Microsoft Entra-ID (identitetsprovidern). Microsoft Entra-ID använder sedan en HTTP-postbindning för att publicera ett Response-element till molntjänsten.

Skärmbild av arbetsflödet för enkel Sign-On (SSO).

Not

I den här artikeln beskrivs hur du använder SAML för enkel inloggning. Mer information om andra sätt att hantera enkel inloggning (till exempel genom att använda OpenID Connect eller integrerad Windows-autentisering) finns i Enkel inloggning till program i Microsoft Entra ID.

AuthnRequest

Molntjänster skickar ett AuthnRequest-element till Microsoft Entra-ID för att begära användarautentisering. Ett SAML 2.0-exempel AuthnRequest kan se ut som i följande exempel:

<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>
Parameter Typ Beskrivning
ID Krävs Microsoft Entra ID använder det här attributet för att fylla i attributet InResponseTo för det returnerade svaret. ID får inte börja med ett tal, så en vanlig strategi är att förbereda en sträng som "ID" till strängrepresentationen av ett GUID. Till exempel är id6c1c178c166d486687be4aaf5e482730 ett giltigt ID.
Version Krävs Den här parametern ska vara inställd på 2.0.
IssueInstant Krävs Det här är en DateTime-sträng med ett UTC-värde och round-trip-format ("o"). Microsoft Entra-ID förväntar sig ett DateTime-värde av den här typen, men utvärderar eller använder inte värdet.
AssertionConsumerServiceURL Valfri Om den här parametern tillhandahålls måste den matcha RedirectUri för molntjänsten i Microsoft Entra-ID.
ForceAuthn Valfri Det här är ett booleskt värde. Om det är sant innebär det att användaren tvingas autentisera igen, även om de har en giltig session med Microsoft Entra-ID.
IsPassive Valfri Det här är ett booleskt värde som anger om Microsoft Entra-ID ska autentisera användaren tyst, utan användarinteraktion, med sessionscookien om det finns någon. Om detta är sant försöker Microsoft Entra-ID:t autentisera användaren med sessionscookien.

Alla andra AuthnRequest attribut, till exempel Consent, Destination, AssertionConsumerServiceIndex, AttributeConsumerServiceIndexoch ProviderName ignoreras .

Microsoft Entra-ID ignorerar också elementet Conditions i AuthnRequest.

Utfärdare

Elementet Issuer i en AuthnRequest måste exakt matcha ett av ServicePrincipalNames- i molntjänsten i Microsoft Entra-ID. Detta är vanligtvis inställt på den app-ID-URI:n som anges under programregistreringen.

Ett SAML-utdrag som innehåller elementet Issuer ser ut som följande exempel:

<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://www.contoso.com</Issuer>

NameIDPolicy

Det här elementet begär ett visst namn-ID-format i svaret och är valfritt i AuthnRequest element som skickas till Microsoft Entra-ID.

Ett NameIdPolicy-element ser ut som följande exempel:

<NameIDPolicy Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"/>

Om NameIDPolicy anges kan du inkludera dess valfria Format attribut. Attributet Format kan bara ha något av följande värden. andra värden resulterar i ett fel.

  • urn:oasis:names:tc:SAML:2.0:nameid-format:persistent: Microsoft Entra ID utfärdar NameID anspråket som en parvis identifierare.
  • urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress: Microsoft Entra ID utfärdar NameID anspråk i e-postadressformat.
  • urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified: Med det här värdet kan Microsoft Entra-ID välja anspråksformatet. Microsoft Entra-ID utfärdar NameID anspråk som en parvis identifierare.
  • urn:oasis:names:tc:SAML:2.0:nameid-format:transient: Microsoft Entra ID utfärdar NameID anspråk som ett slumpmässigt genererat värde som är unikt för den aktuella SSO-åtgärden. Det innebär att värdet är tillfälligt och inte kan användas för att identifiera den autentiserande användaren.

Om SPNameQualifier anges innehåller Microsoft Entra-ID samma SPNameQualifier i svaret.

Microsoft Entra-ID ignorerar attributet AllowCreate.

RequestedAuthnContext

Elementet RequestedAuthnContext anger önskade autentiseringsmetoder. Det är valfritt i AuthnRequest element som skickas till Microsoft Entra-ID.

Not

Om RequestedAuthnContext ingår i SAML-begäran måste Comparison-elementet anges till exact.

Microsoft Entra ID stöder följande AuthnContextClassRef värden.

Autentiseringsmetod URI för autentiseringskontextklass
Kerberos urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos
Användarnamn och lösenord urn:oasis:names:tc:SAML:2.0:ac:classes:Password
PGP-infrastruktur för offentlig nyckel urn:oasis:names:tc:SAML:2.0:ac:classes:PGP
Skydda fjärrlösenord urn:oasis:names:tc:SAML:2.0:ac:classes:SecureRemotePassword
DIGITAL XML-signatur urn:oasis:names:tc:SAML:2.0:ac:classes:XMLDSig
Enkel infrastruktur för offentliga nycklar urn:oasis:names:tc:SAML:2.0:ac:classes:SPKI
Smartkort urn:oasis:names:tc:SAML:2.0:ac:classes:Smartcard
Smartkort med sluten privat nyckel och en PIN-kod urn:oasis:names:tc:SAML:2.0:ac:classes:SmartcardPKI
TLS-klient (Transport Layer Security) urn:oasis:names:tc:SAML:2.0:ac:classes:TLSClient
Ospecificerad urn:oasis:names:tc:SAML:2.0:ac:classes:Unspecified
X.509-certifikat urn:oasis:names:tc:SAML:2.0:ac:classes:X509
Integrerad Windows-autentisering urn:federation:authentication:windows

Miljöprövningens

Elementet Scoping, som innehåller en lista över identitetsprovidrar, är valfritt i AuthnRequest element som skickas till Microsoft Entra-ID.

Ta inte med attributet ProxyCount, IDPListOption eller RequesterID om det tillhandahålls eftersom de inte stöds.

Underskrift

Ett Signature element i AuthnRequest element är valfritt. Microsoft Entra-ID kan konfigureras för att framtvinga kravet på signerade autentiseringsbegäranden. Om det är aktiverat godkänns endast signerade autentiseringsbegäranden, annars tillhandahålls begärandeverifieringen genom att endast svara på registrerade URL:er för konsumenttjänsten för försäkran.

Subjekt

Ta inte med ett Subject element. Microsoft Entra-ID stöder inte att ange ett ämne i AuthnRequest och returnerar ett fel om ett anges.

Ett ämne kan i stället tillhandahållas genom att lägga till en login_hint-parameter i HTTP-begäran till url:en för enkel inloggning, med ämnets NameID som parametervärde.

Svar

När en begärd inloggning har slutförts skickar Microsoft Entra-ID ett svar till molntjänsten. Ett svar på ett lyckat inloggningsförsök ser ut som följande exempel:

<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>

Svar

Elementet Response innehåller resultatet av auktoriseringsbegäran. Microsoft Entra ID anger värdena ID, Version och IssueInstant i elementet Response. Den anger även följande attribut:

  • Destination: När inloggningen har slutförts är detta inställt på tjänstleverantörens RedirectUri (molntjänsten).
  • InResponseTo: Detta är inställt på attributet ID för det AuthnRequest element som initierade svaret.

Utfärdare

Microsoft Entra-ID anger Issuer-elementet till https://sts.windows.net/<TenantIDGUID>/ där <TenantIDGUID> är klientorganisations-ID för Microsoft Entra-klientorganisationen.

Ett svar med Issuer-element kan till exempel se ut som följande exempel:

<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion"> https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>

Status

Elementet Status förmedlar lyckade eller misslyckade inloggningar. Den innehåller elementet StatusCode, som innehåller en kod eller en uppsättning kapslade koder som representerar status för begäran. Den innehåller även elementet StatusMessage, som innehåller anpassade felmeddelanden som genereras under inloggningsprocessen.

Följande exempel är ett SAML-svar på ett misslyckat inloggningsförsök.

<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>

Påstående

Förutom ID, IssueInstant och Versionanger Microsoft Entra ID följande element i Assertion elementet i svaret.

Utfärdare

Detta är inställt på https://sts.windows.net/<TenantIDGUID>/där <TenantIDGUID> är klientorganisations-ID för Microsoft Entra-klientorganisationen.

<Issuer>https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>

Underskrift

Microsoft Entra-ID signerar försäkran som svar på en lyckad inloggning. Elementet Signature innehåller en digital signatur som molntjänsten kan använda för att autentisera källan för att verifiera försäkrans integritet.

För att generera den här digitala signaturen använder Microsoft Entra-ID:t signeringsnyckeln i IDPSSODescriptor-elementet i metadatadokumentet.

<ds:Signature xmlns:ds="https://www.w3.org/2000/09/xmldsig#">
  digital_signature_here
</ds:Signature>

Subjekt

Detta anger den princip som är föremål för påståendena i försäkran. Den innehåller ett NameID-element som representerar den autentiserade användaren. Värdet NameID är en målidentifierare som endast riktas till den tjänstleverantör som är målgruppen för token. Det är beständigt – det kan återkallas, men tilldelas aldrig om. Den är också ogenomskinlig eftersom den inte avslöjar något om användaren och inte kan användas som identifierare för attributfrågor.

Attributet Method för elementet SubjectConfirmation är alltid inställt på 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>

Villkor

Det här elementet anger villkor som definierar acceptabel användning av SAML-försäkran.

<Conditions NotBefore="2013-03-18T07:38:15.128Z" NotOnOrAfter="2013-03-18T08:48:15.128Z">
  <AudienceRestriction>
    <Audience>https://www.contoso.com</Audience>
  </AudienceRestriction>
</Conditions>

Attributen NotBefore och NotOnOrAfter anger under vilket intervall försäkran är giltig.

  • Värdet för attributet NotBefore är lika med eller något (mindre än en sekund) senare än värdet för IssueInstant attribut för Assertion-elementet. Microsoft Entra-ID tar inte hänsyn till någon tidsskillnad mellan sig själv och molntjänsten (tjänstleverantören) och lägger inte till någon buffert till den här gången.
  • Värdet för attributet NotOnOrAfter är 70 minuter senare än värdet för attributet NotBefore.

Publik

Detta innehåller en URI som identifierar en avsedd målgrupp. Microsoft Entra-ID anger värdet för det här elementet till värdet för Issuer element i AuthnRequest som initierade inloggningen. Om du vill utvärdera värdet för Audience använder du värdet för den App ID URI som angavs under programregistreringen.

<AudienceRestriction>
  <Audience>https://www.contoso.com</Audience>
</AudienceRestriction>

Precis som det Issuer värdet måste Audience-värdet exakt matcha ett av de namn på tjänstens huvudnamn som representerar molntjänsten i Microsoft Entra-ID. Men om värdet för Issuer-elementet inte är ett URI-värde är det Audience värdet i svaret det Issuer värdet som prefixet med spn:.

AttributeStatement

Detta innehåller anspråk om ämnet eller användaren. Följande utdrag innehåller ett exempel på AttributeStatement element. Ellipsen anger att elementet kan innehålla flera attribut och attributvärden.

<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>
  • Name Claim – värdet för attributet Name (http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name) är användarens huvudnamn för den autentiserade användaren, till exempel testuser@managedtenant.com.
  • ObjectIdentifier Claim – värdet för attributet ObjectIdentifier (http://schemas.microsoft.com/identity/claims/objectidentifier) är ObjectId för katalogobjektet som representerar den autentiserade användaren i Microsoft Entra-ID. ObjectId är en oföränderlig, globalt unik och återanvändning av säker identifierare för den autentiserade användaren.

AuthnStatement

Det här elementet hävdar att intygsämnet autentiserades med ett visst medel vid en viss tidpunkt.

  • Attributet AuthnInstant anger den tidpunkt då användaren autentiserades med Microsoft Entra-ID.
  • Elementet AuthnContext anger den autentiseringskontext som används för att autentisera användaren.
<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>