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
(autentiseringsbegäran)-element till Microsoft Entra-ID (identitetsprovidern). Microsoft Entra-ID använder sedan en HTTP-postbindning för att publicera ett Response
element till molntjänsten.
Kommentar
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-Anslut 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 |
Obligatoriskt | Microsoft Entra ID använder det här attributet för att fylla i InResponseTo attributet 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 id6c1c178c166d486687be4aaf5e482730 är ett giltigt ID. |
Version |
Obligatoriskt | Den här parametern ska vara inställd på 2.0 . |
IssueInstant |
Obligatoriskt | Det här är en DateTime-sträng med ett UTC-värde och returformat ("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 |
Valfritt | Om den här parametern tillhandahålls måste den RedirectUri matcha molntjänsten i Microsoft Entra-ID. |
ForceAuthn |
Valfritt | 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 |
Valfritt | 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
, AttributeConsumerServiceIndex
och ProviderName
ignoreras.
Microsoft Entra-ID ignorerar också elementet Conditions
i AuthnRequest
.
Utfärdare
Elementet Issuer
i ett 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 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. Alla andra värden resulterar i ett fel.
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
: Microsoft Entra ID utfärdar anspråketNameID
som en parvis identifierare.urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
: Microsoft Entra ID utfärdar anspråketNameID
i e-postadressformat.urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
: Det här värdet tillåter Att Microsoft Entra-ID väljer anspråksformatet. Microsoft Entra-ID utfärdar anspråketNameID
som en parvis identifierare.urn:oasis:names:tc:SAML:2.0:nameid-format:transient
: Microsoft Entra ID utfärdar anspråketNameID
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. Microsoft Entra-ID stöder AuthnContextClassRef
värden som urn:oasis:names:tc:SAML:2.0:ac:classes:Password
.
Omfång
Elementet Scoping
, som innehåller en lista över identitetsprovidrar, är valfritt i AuthnRequest
element som skickas till Microsoft Entra-ID.
Ta inte med ProxyCount
attributet eller RequesterID
elementet om IDPListOption
det tillhandahålls eftersom de inte stöds.
Signatur
Ett Signature
element i AuthnRequest
element är valfritt. Microsoft Entra ID kan konfigureras för att genomdriva 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.
Ämne
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.
Response
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>
Response
Elementet Response
innehåller resultatet av auktoriseringsbegäran. Microsoft Entra ID anger ID
värdena , Version
och IssueInstant
i elementet Response
. Den anger även följande attribut:
Destination
: När inloggningen har slutförts är detta inställtRedirectUri
på tjänstleverantörens (molntjänsten).InResponseTo
: Detta är inställt påID
attributet för detAuthnRequest
element som initierade svaret.
Utfärdare
Microsoft Entra-ID anger elementet Issuer
till https://sts.windows.net/<TenantIDGUID>/
var <TenantIDGUID>
är klientorganisations-ID:t 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. Det 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 Version
, anger Microsoft Entra-ID:t följande element i -elementet i Assertion
svaret.
Utfärdare
Detta anges till https://sts.windows.net/<TenantIDGUID>/
var <TenantIDGUID>
är klientorganisations-ID:t för Microsoft Entra-klientorganisationen.
<Issuer>https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>
Signatur
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 elementet IDPSSODescriptor
i metadatadokumentet.
<ds:Signature xmlns:ds="https://www.w3.org/2000/09/xmldsig#">
digital_signature_here
</ds:Signature>
Ämne
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.
Elementets Method
SubjectConfirmation
attribut ä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 det intervall under vilket försäkran är giltig.
- Värdet för
NotBefore
attributet är lika med eller något (mindre än en sekund) senare än värdetIssueInstant
för attributet för elementetAssertion
. 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
NotOnOrAfter
attributet är 70 minuter senare än värdet för attributetNotBefore
.
Målgrupp
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 Issuer
för elementet för AuthnRequest
det som initierade inloggningen. Om du vill utvärdera Audience
värdet använder du värdet App ID URI
för det som angavs under programregistreringen.
<AudienceRestriction>
<Audience>https://www.contoso.com</Audience>
</AudienceRestriction>
Issuer
Precis som värdet Audience
måste 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 elementet Issuer
inte är ett URI-värde Audience
är värdet i svaret värdet Issuer
prefixet med spn:
.
AttributeStatement
Detta innehåller anspråk om ämnet eller användaren. Följande utdrag innehåller ett exempelelement AttributeStatement
. 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>
- Namnanspråk – värdet för
Name
attributet (http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
) är användarens huvudnamn för den autentiserade användaren, till exempeltestuser@managedtenant.com
. - ObjectIdentifier-anspråk – värdet för
ObjectIdentifier
attributet (http://schemas.microsoft.com/identity/claims/objectidentifier
) ärObjectId
det katalogobjekt som representerar den autentiserade användaren i Microsoft Entra-ID.ObjectId
är en oföränderlig, globalt unik och återanvänd 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>