SamL-Protokoll für einmaliges Anmelden
In diesem Artikel werden die SAML 2.0-Authentifizierungsanforderungen und -antworten behandelt, die von Microsoft Entra ID für einmaliges Anmelden (Single Sign-On, SSO) unterstützt werden.
Das folgende Protokolldiagramm beschreibt die Single Sign-On-Sequenz. Der Clouddienst (der Dienstanbieter) verwendet eine HTTP-Umleitungsbindung, um ein AuthnRequest
-Element (Authentifizierungsanforderung) an Microsoft Entra ID (den Identitätsanbieter) zu übergeben. Microsoft Entra-ID verwendet dann eine HTTP-Postbindung, um ein Response
-Element an den Clouddienst zu senden.
Anmerkung
In diesem Artikel wird die Verwendung von SAML für einmaliges Anmelden erläutert. Weitere Informationen zu anderen Möglichkeiten zum Behandeln des einmaligen Anmeldens (z. B. mithilfe von OpenID Connect oder integrierter Windows-Authentifizierung) finden Sie unter Einmaliges Anmelden bei Anwendungen in Microsoft Entra ID.
AuthnRequest
Um eine Benutzerauthentifizierung anzufordern, senden Clouddienste ein AuthnRequest
Element an die Microsoft Entra-ID. Ein Beispiel für SAML 2.0-AuthnRequest
könnte wie im folgenden Beispiel aussehen:
<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 | Art | Beschreibung |
---|---|---|
ID |
Erforderlich | Die Microsoft Entra-ID verwendet dieses Attribut, um das attribut InResponseTo der zurückgegebenen Antwort aufzufüllen. DIE ID darf nicht mit einer Zahl beginnen, daher besteht eine allgemeine Strategie darin, eine Zeichenfolge wie "ID" der Zeichenfolgendarstellung einer GUID voranzugestellt. Beispielsweise ist id6c1c178c166d486687be4aaf5e482730 eine gültige ID. |
Version |
Erforderlich | Dieser Parameter sollte auf 2.0 festgelegt werden. |
IssueInstant |
Erforderlich | Dies ist eine DateTime-Zeichenfolge mit einem UTC-Wert und Roundtripformat ("o"). Microsoft Entra-ID erwartet einen DateTime-Wert dieses Typs, wertet den Wert aber nicht aus oder verwendet diesen wert. |
AssertionConsumerServiceURL |
Wahlfrei | Wenn angegeben, muss dieser Parameter mit dem RedirectUri des Clouddiensts in microsoft Entra ID übereinstimmen. |
ForceAuthn |
Wahlfrei | Dies ist ein boolescher Wert. Wenn true, bedeutet dies, dass der Benutzer gezwungen wird, erneut zu authentifizieren, auch wenn er über eine gültige Sitzung mit der Microsoft Entra-ID verfügt. |
IsPassive |
Wahlfrei | Dies ist ein boolescher Wert, der angibt, ob die Microsoft Entra-ID den Benutzer ohne Benutzerinteraktion im Hintergrund authentifizieren soll, wenn vorhanden. Wenn dies zutrifft, versucht Microsoft Entra-ID, den Benutzer mithilfe des Sitzungscookies zu authentifizieren. |
Alle anderen AuthnRequest
Attribute wie Consent
, Destination
, AssertionConsumerServiceIndex
, AttributeConsumerServiceIndex
und ProviderName
werden ignoriert.
Die Microsoft Entra-ID ignoriert auch das Conditions
-Element in AuthnRequest
.
Emittent
Das Issuer
-Element in einem AuthnRequest
muss genau mit einem der ServicePrincipalNames- im Clouddienst in Microsoft Entra ID übereinstimmen. In der Regel wird dies auf den App-ID-URI festgelegt, der während der Anwendungsregistrierung angegeben wird.
Ein SAML-Auszug mit dem Issuer
-Element sieht wie im folgenden Beispiel aus:
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://www.contoso.com</Issuer>
NameIDPolicy
Dieses Element fordert ein bestimmtes Namens-ID-Format in der Antwort an und ist optional in AuthnRequest
Elementen, die an Microsoft Entra ID gesendet werden.
Ein NameIdPolicy
-Element sieht wie im folgenden Beispiel aus:
<NameIDPolicy Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"/>
Wenn NameIDPolicy
bereitgestellt wird, können Sie das optionale Format
-Attribut einschließen. Das attribut Format
kann nur einen der folgenden Werte aufweisen. ein anderer Wert führt zu einem Fehler.
-
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
: Die Microsoft Entra-ID gibt denNameID
Anspruch als Kopplungsbezeichner aus. -
urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
: Die Microsoft Entra-ID gibt denNameID
Anspruch im E-Mail-Adressformat aus. -
urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
: Mit diesem Wert kann Microsoft Entra-ID das Anspruchsformat auswählen. Die Microsoft Entra-ID gibt denNameID
Anspruch als pairwise identifier aus. -
urn:oasis:names:tc:SAML:2.0:nameid-format:transient
: Microsoft Entra ID gibt denNameID
Anspruch als zufällig generierten Wert aus, der für den aktuellen SSO-Vorgang eindeutig ist. Dies bedeutet, dass der Wert temporär ist und nicht verwendet werden kann, um den authentifizierenden Benutzer zu identifizieren.
Wenn SPNameQualifier
angegeben ist, enthält die Microsoft Entra-ID dieselbe SPNameQualifier
in der Antwort.
Die Microsoft Entra-ID ignoriert das attribut AllowCreate
.
RequestedAuthnContext
Das RequestedAuthnContext
-Element gibt die gewünschten Authentifizierungsmethoden an. Sie ist in AuthnRequest
Elementen optional, die an die Microsoft Entra-ID gesendet werden.
Anmerkung
Wenn die RequestedAuthnContext
in der SAML-Anforderung enthalten ist, muss das Comparison
-Element auf exact
festgelegt werden.
Die Microsoft Entra-ID unterstützt die folgenden AuthnContextClassRef
Werte.
Authentifizierungsmethode | Authentifizierungskontextklassen-URI |
---|---|
Kerberos | urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos |
Benutzername und Kennwort | urn:oasis:names:tc:SAML:2.0:ac:classes:Password |
PGP Public Key-Infrastruktur | urn:oasis:names:tc:SAML:2.0:ac:classes:PGP |
Sicheres Remotekennwort | urn:oasis:names:tc:SAML:2.0:ac:classes:SecureRemotePassword |
Digitale XML-Signatur | urn:oasis:names:tc:SAML:2.0:ac:classes:XMLDSig |
Einfache Public Key-Infrastruktur | urn:oasis:names:tc:SAML:2.0:ac:classes:SPKI |
Smartcard | urn:oasis:names:tc:SAML:2.0:ac:classes:Smartcard |
Smartcard mit eingeschlossenem privaten Schlüssel und einer PIN | urn:oasis:names:tc:SAML:2.0:ac:classes:SmartcardPKI |
Transport Layer Security (TLS)-Client | urn:oasis:names:tc:SAML:2.0:ac:classes:TLSClient |
Unspezifiziert | urn:oasis:names:tc:SAML:2.0:ac:classes:Unspecified |
X.509-Zertifikat | urn:oasis:names:tc:SAML:2.0:ac:classes:X509 |
Integrierte Windows-Authentifizierung | urn:federation:authentication:windows |
Scoping
Das Scoping
-Element, das eine Liste von Identitätsanbietern enthält, ist in AuthnRequest
Elementen optional, die an die Microsoft Entra-ID gesendet werden.
Wenn angegeben, schließen Sie das ProxyCount
-Attribut, IDPListOption
oder RequesterID
Element nicht ein, da sie nicht unterstützt werden.
Unterschrift
Ein Signature
-Element in AuthnRequest
Elementen ist optional. Microsoft Entra-ID kann so konfiguriert werden, dass die Anforderung signierter Authentifizierungsanforderungen erzwungen wird. Wenn diese Option aktiviert ist, werden nur signierte Authentifizierungsanforderungen akzeptiert, andernfalls wird die Überprüfung des Anforderers nur für registrierte Assertion Consumer Service-URLs bereitgestellt.
Betreff
Fügen Sie kein Subject
-Element ein. Microsoft Entra-ID unterstützt die Angabe eines Betreffs in AuthnRequest
nicht und gibt einen Fehler zurück, wenn eine angegeben wird.
Ein Betreff kann stattdessen durch Hinzufügen eines login_hint
Parameters zur HTTP-Anforderung zur URL für einmaliges Anmelden mit der NameID des Betreffs als Parameterwert bereitgestellt werden.
Antwort
Wenn die angeforderte Anmeldung erfolgreich abgeschlossen wurde, sendet Die Microsoft Entra-ID eine Antwort auf den Clouddienst. Eine Antwort auf einen erfolgreichen Anmeldeversuch sieht wie im folgenden Beispiel aus:
<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>
Antwort
Das Response
-Element enthält das Ergebnis der Autorisierungsanforderung. Die Microsoft Entra-ID legt die Werte ID
, Version
und IssueInstant
im Response
-Element fest. Außerdem werden die folgenden Attribute festgelegt:
-
Destination
: Wenn die Anmeldung erfolgreich abgeschlossen ist, wird dies auf dieRedirectUri
des Dienstanbieters (Clouddienst) festgelegt. -
InResponseTo
: Dies wird auf dasID
Attribut desAuthnRequest
Elements festgelegt, das die Antwort initiiert hat.
Emittent
Die Microsoft Entra-ID legt das Issuer
-Element auf https://sts.windows.net/<TenantIDGUID>/
fest, wobei <TenantIDGUID>
die Mandanten-ID des Microsoft Entra-Mandanten ist.
Eine Antwort mit issuer-Element könnte beispielsweise wie im folgenden Beispiel aussehen:
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion"> https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>
Status
Das Status
-Element vermittelt den Erfolg oder Fehler der Anmeldung. Es enthält das StatusCode
-Element, das einen Code oder eine Reihe geschachtelter Codes enthält, die den Status der Anforderung darstellen. Es enthält auch das StatusMessage
-Element, das benutzerdefinierte Fehlermeldungen enthält, die während des Anmeldevorgangs generiert werden.
Das folgende Beispiel ist eine SAML-Antwort auf einen erfolglosen Anmeldeversuch.
<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>
Behauptung
Zusätzlich zu den ID
, IssueInstant
und Version
legt Microsoft Entra ID die folgenden Elemente im Assertion
Element der Antwort fest.
Emittent
Dies ist auf https://sts.windows.net/<TenantIDGUID>/
festgelegt, wobei <TenantIDGUID>
die Mandanten-ID des Microsoft Entra-Mandanten ist.
<Issuer>https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>
Unterschrift
Die Microsoft Entra-ID signiert die Assertion als Reaktion auf eine erfolgreiche Anmeldung. Das Signature
-Element enthält eine digitale Signatur, mit der der Clouddienst die Quelle authentifizieren kann, um die Integrität der Assertion zu überprüfen.
Um diese digitale Signatur zu generieren, verwendet Microsoft Entra ID den Signaturschlüssel im IDPSSODescriptor
Element des Metadatendokuments.
<ds:Signature xmlns:ds="https://www.w3.org/2000/09/xmldsig#">
digital_signature_here
</ds:Signature>
Betreff
Dies gibt den Grundsatz an, der Gegenstand der Erklärungen in der Assertion ist. Es enthält ein NameID
-Element, das den authentifizierten Benutzer darstellt. Der wert NameID
ist ein gezielter Bezeichner, der nur an den Dienstanbieter weitergeleitet wird, der die Zielgruppe für das Token ist. Es ist dauerhaft - es kann widerrufen werden, wird aber nie neu zugewiesen. Es ist auch undurchsichtig, da nichts über den Benutzer angezeigt wird und nicht als Bezeichner für Attributabfragen verwendet werden kann.
Das Method
Attribut des SubjectConfirmation
-Elements ist immer auf urn:oasis:names:tc:SAML:2.0:cm:bearer
festgelegt.
<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>
Bedingungen
Dieses Element gibt Bedingungen an, die die akzeptable Verwendung von SAML-Assertionen definieren.
<Conditions NotBefore="2013-03-18T07:38:15.128Z" NotOnOrAfter="2013-03-18T08:48:15.128Z">
<AudienceRestriction>
<Audience>https://www.contoso.com</Audience>
</AudienceRestriction>
</Conditions>
Die attribute NotBefore
und NotOnOrAfter
geben das Intervall an, in dem die Assertion gültig ist.
- Der Wert des attributs
NotBefore
ist gleich oder etwas (kleiner als eine Sekunde) später als der WertIssueInstant
Attributs desAssertion
-Elements. Die Microsoft Entra-ID berücksichtigt keinen Zeitunterschied zwischen sich selbst und dem Clouddienst (Dienstanbieter) und fügt diesem Zeitpunkt keinen Puffer hinzu. - Der Wert des attributs
NotOnOrAfter
liegt 70 Minuten später als der Wert des attributsNotBefore
.
Publikum
Dies enthält einen URI, der eine beabsichtigte Zielgruppe identifiziert. Die Microsoft Entra-ID legt den Wert dieses Elements auf den Wert Issuer
Elements der AuthnRequest
fest, die die Anmeldung initiiert hat. Verwenden Sie zum Auswerten des Audience
Werts den Wert der App ID URI
, die während der Anwendungsregistrierung angegeben wurde.
<AudienceRestriction>
<Audience>https://www.contoso.com</Audience>
</AudienceRestriction>
Wie der Issuer
Wert muss der Audience
Wert genau mit einem der Dienstprinzipalnamen übereinstimmen, die den Clouddienst in Microsoft Entra ID darstellen. Wenn der Wert des Issuer
Elements jedoch kein URI-Wert ist, ist der Audience
Wert in der Antwort der Issuer
Wert, dem spn:
vorangestellt ist.
AttributeStatement
Dies enthält Ansprüche über den Betreff oder den Benutzer. Der folgende Auszug enthält ein Beispiel AttributeStatement
Element. Die Auslassungspunkte deuten darauf hin, dass das Element mehrere Attribute und Attributwerte enthalten kann.
<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 - Der Wert des attributs
Name
(http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
) ist der Benutzerprinzipalname des authentifizierten Benutzers, z. B.testuser@managedtenant.com
. -
ObjectIdentifier Claim – Der Wert des attributs
ObjectIdentifier
(http://schemas.microsoft.com/identity/claims/objectidentifier
) ist dieObjectId
des Verzeichnisobjekts, das den authentifizierten Benutzer in der Microsoft Entra-ID darstellt.ObjectId
ist ein unveränderlicher, global eindeutiger und wiederverwendeter sicherer Bezeichner des authentifizierten Benutzers.
AuthnStatement
Dieses Element bestätigt, dass der Assertionsbetreff zu einem bestimmten Zeitpunkt durch ein bestimmtes Mittel authentifiziert wurde.
- Das attribut
AuthnInstant
gibt die Uhrzeit an, zu der sich der Benutzer mit microsoft Entra ID authentifiziert hat. - Das
AuthnContext
-Element gibt den Authentifizierungskontext an, der zum Authentifizieren des Benutzers verwendet wird.
<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>