Definieren eines technischen OpenID Connect-Profils in einer benutzerdefinierten Richtlinie in Azure Active Directory B2C
Hinweis
In Azure Active Directory B2C sind benutzerdefinierte Richtlinien in erster Linie für komplexe Szenarien konzipiert. Für die meisten Szenarien empfehlen wir die Verwendung von integrierten Benutzerflows. Informieren Sie sich, sofern noch nicht geschehen, unter Tutorial: Erstellen von Benutzerflows und benutzerdefinierten Richtlinien in Azure Active Directory B2C über das Starter Pack für benutzerdefinierte Richtlinien.
Azure Active Directory B2C (Azure AD B2C) unterstützt den Identitätsanbieter für das OpenID Connect-Protokoll. OpenId Connect 1.0 definiert eine Identitätsebene über OAuth 2.0 und stellt den Stand der Technik bei modernen Authentifizierungsprotokollen dar. Mit einem technischen OpenID Connect-Profil können Sie einen Verbund mit einem OpenID Connect-basierten Identitätsanbieter wie Microsoft Entra ID erstellen. Über einen Verbund mit einem Identitätsanbieter können sich Benutzer mit ihren vorhandenen Identitäten aus sozialen Netzwerken oder Unternehmen anmelden.
Protocol
Das Name-Attribut des Protocol-Elements muss auf OpenIdConnect
festgelegt werden. Das Protokoll für das technische Profil MSA-OIDC ist z.B. OpenIdConnect
:
<TechnicalProfile Id="MSA-OIDC">
<DisplayName>Microsoft Account</DisplayName>
<Protocol Name="OpenIdConnect" />
...
Eingabeansprüche
Die Elemente InputClaims und InputClaimsTransformations sind nicht erforderlich. Sie können diese zusätzlichen Parameter aber an Ihren Identitätsanbieter senden. Im folgenden Beispiel wird der Autorisierungsanforderung der Parameter domain_hint der Abfragezeichenfolge mit dem Wert contoso.com
hinzugefügt.
<InputClaims>
<InputClaim ClaimTypeReferenceId="domain_hint" DefaultValue="contoso.com" />
</InputClaims>
Ausgabeansprüche
Das Element OutputClaims enthält eine Liste mit Ansprüchen, die vom OpenID Connect-Identitätsanbieter zurückgegeben wurden. Sie müssen den Namen des Anspruchs, der in Ihrer Richtlinie definiert ist, dem Namen, der für den Identitätsanbieter definiert wurde, zuordnen. Sie können auch Ansprüche, die nicht vom Identitätsanbieter zurückgegeben wurden, einfügen, sofern Sie das DefaultValue
-Attribut festlegen.
Das OutputClaimsTransformations-Element darf eine Sammlung von OutputClaimsTransformation-Elementen, die zum Ändern der Ausgabeansprüche oder zum Generieren neuer verwendet werden, enthalten.
Das folgende Beispiel zeigt die Ansprüche, die vom Identitätsanbieter Microsoft-Konto zurückgegeben wurden:
- Der Anspruch sub wird dem Anspruch issuerUserId zugeordnet.
- Der Anspruch name wird dem Anspruch displayName zugeordnet.
- Dem Anspruch email wird kein Name zugeordnet.
Das technische Profil gibt auch Ansprüche zurück, die vom Identitätsanbieter nicht zurückgegeben werden:
- Der Anspruch identityProvider enthält den Namen des Identitätsanbieters.
- Der Anspruch authenticationSource enthält als Standardwert socialIdpAuthentication.
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="live.com" />
<OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
<OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" />
<OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
<OutputClaim ClaimTypeReferenceId="email" />
</OutputClaims>
Metadaten
attribute | Erforderlich | BESCHREIBUNG |
---|---|---|
client_id | Ja | Die Anwendungs-ID des Identitätsanbieters. |
IdTokenAudience | Nein | Die Zielgruppe von id_token. Wenn eine Angabe erfolgt, überprüft Azure AD B2C, ob der Anspruch aud in einem Token, das vom Identitätsanbieter zurückgegeben wurde, mit dem in den Metadaten für „IdTokenAudience“ angegebenen Token identisch ist. |
METADATA | Ja | Eine URL, die auf ein Konfigurationsdokument für den OpenID Connect-Identitätsanbieter verweist, das auch als bekannter OpenID-Konfigurationsendpunkt bezeichnet wird. Die URL kann den Ausdruck {tenant} enthalten, der durch den Mandantennamen ersetzt wird. |
authorization_endpoint | Nein | Eine URL, die auf einen OpenID Connect-Autorisierungsendpunkt der Identitätsanbieterkonfiguration verweist. Der Wert der Metadaten für „authorization_endpoint“ hat Vorrang vor dem Wert für authorization_endpoint , der im bekannten OpenID-Konfigurationsendpunkt angegeben ist. Die URL kann den Ausdruck {tenant} enthalten, der durch den Mandantennamen ersetzt wird. |
end_session_endpoint | Nein | Die URL des Endpunkts zum Beenden der Sitzung. Der Wert der Metadaten für end_session_endpoint hat Vorrang vor dem Wert für end_session_endpoint , der im bekannten OpenID-Konfigurationsendpunkt angegeben ist. |
Issuer (Aussteller) | Nein | Die eindeutige Bezeichnung eines OpenID Connect-Identitätsanbieters. Der Wert der Metadaten für „Issuer“ hat Vorrang vor dem Wert für issuer , der im bekannten OpenID-Konfigurationsendpunkt angegeben ist. Wenn eine Angabe erfolgt, überprüft Azure AD B2C, ob der Anspruch iss in einem Token, das vom Identitätsanbieter zurückgegeben wird, mit dem in den Metadaten für „Issuer“ angegebenen Token identisch ist. |
ProviderName | Nein | Der Name des Identitätsanbieters. |
response_types | Nein | Der Antworttyp gemäß der OpenId Connect Core 1.0-Spezifikation. Mögliche Werte: id_token , code oder token . |
response_mode | Nein | Die Methode, die der Identitätsanbieter verwendet, um das Ergebnis zurück an Azure AD B2C zu senden. Mögliche Werte: query , form_post (Standard) oder fragment . |
scope | Nein | Der Bereich für die Anforderung gemäß der OpenId Connect Core 1.0-Spezifikation. Beispiele: openid , profile und email . |
HttpBinding | Nein | Die erwartete HTTP-Bindung an die Endpunkte für Zugriffs- und Anspruchstoken. Mögliche Werte: GET oder POST . |
ValidTokenIssuerPrefixes | No | Ein Schlüssel, der für die Anmeldung bei den einzelnen Mandanten verwendet werden kann, wenn ein mehrinstanzenfähiger Identitätsanbieter wie Microsoft Entra ID verwendet wird. |
UsePolicyInRedirectUri | Nein | Gibt an, ob beim Erstellen des Umleitungs-URI eine Richtlinie verwendet werden soll. Wenn Sie Ihre Anwendung im Identitätsanbieter konfigurieren, müssen Sie den Umleitungs-URI angeben. Der Umleitungs-URI verweist auf Azure AD B2C, https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp . Bei Angabe von true müssen Sie einen Umleitungs-URI für jede verwendete Richtlinie hinzufügen. Beispiel: https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/{policy-name}/oauth2/authresp . |
MarkAsFailureOnStatusCode5xx | Nein | Gibt an, ob eine Anforderung an einen externen Dienst als fehlerhaft gekennzeichnet werden soll, wenn der HTTP-Statuscode im Bereich 5xx liegt. Der Standardwert lautet false . |
DiscoverMetadataByTokenIssuer | Nein | Gibt an, ob die OIDC-Metadaten mithilfe des Ausstellers im JWT-Token ermittelt werden sollen. Wenn Sie die Metadatenendpunkt-URL anhand des Ausstellers erstellen müssen, legen Sie diese auf true fest. |
IncludeClaimResolvingInClaimsHandling | Nein | Gibt bei Eingabe- und Ausgabeansprüchen an, ob die Anspruchsauflösung im technischen Profil enthalten ist. Mögliche Werte sind true oder false (Standardwert). Wenn Sie im technischen Profil eine Anspruchsauflösung verwenden möchten, legen Sie für diese Einstellung den Wert true fest. |
token_endpoint_auth_method | Nein | Gibt an, wie Azure AD B2C den Authentifizierungsheader an den Tokenendpunkt sendet. Mögliche Werte sind client_secret_post (Standardwert) oder client_secret_basic , private_key_jwt . Weitere Informationen finden Sie im Abschnitt OpenID Connect-Clientauthentifizierung. |
token_signing_algorithm | Nein | Gibt den Signaturalgorithmus an, der verwendet werden soll, wenn token_endpoint_auth_method auf private_key_jwt festgelegt ist. Mögliche Werte: RS256 (Standard) oder RS512 . |
SingleLogoutEnabled | Nein | Gibt an, ob das technische Profil bei der Anmeldung versucht, sich beim Verbundidentitätsanbieter abzumelden. Weitere Informationen finden Sie unter Abmelden von der Azure AD B2C-Sitzung. Mögliche Werte: true (Standard) oder false . |
ReadBodyClaimsOnIdpRedirect | Nein | Legen Sie dieses Element auf true fest, um Ansprüche aus dem Antworttext bei der Umleitung des Identitätsanbieters zu lesen. Diese Metadaten werden mit der Apple-ID verwendet, wobei Ansprüche in den Antwortnutzdaten zurückgegeben werden. |
<Metadata>
<Item Key="ProviderName">https://login.live.com</Item>
<Item Key="METADATA">https://login.live.com/.well-known/openid-configuration</Item>
<Item Key="response_types">code</Item>
<Item Key="response_mode">form_post</Item>
<Item Key="scope">openid profile email</Item>
<Item Key="HttpBinding">POST</Item>
<Item Key="UsePolicyInRedirectUri">false</Item>
<Item Key="client_id">Your Microsoft application client ID</Item>
</Metadata>
Benutzeroberflächenelemente
Die folgenden Einstellungen können verwendet werden, um die Fehlermeldung zu konfigurieren, die bei einem Fehler angezeigt wird. Die Metadaten sollten im technischen OpenID Connect-Profil konfiguriert werden. Die Fehlermeldungen können lokalisiert werden.
attribute | Erforderlich | Beschreibung |
---|---|---|
UserMessageIfClaimsPrincipalDoesNotExist | Nein | Die Meldung, die dem Benutzer angezeigt werden soll, wenn ein Konto mit dem angegebenen Benutzernamen nicht im Verzeichnis gefunden wurde. |
UserMessageIfInvalidPassword | Nein | Die Meldung, die dem Benutzer angezeigt werden soll, wenn das Kennwort falsch ist. |
UserMessageIfOldPasswordUsed | Nein | Die Meldung, die dem Benutzer angezeigt werden soll, wenn ein altes Kennwort verwendet wurde. |
Kryptografische Schlüssel
Das CryptographicKeys-Element enthält das folgende Attribut:
attribute | Erforderlich | BESCHREIBUNG |
---|---|---|
client_secret | Ja | Der geheime Clientschlüssel der Anwendung des Identitätsanbieters. Der kryptografische Schlüssel ist nur erforderlich, wenn die response_type-Metadaten auf code festgelegt sind und token_endpoint_auth_method auf client_secret_post oder client_secret_basic festgelegt ist. Azure AD B2C führt in diesem Fall einen weiteren Aufruf zum Austauschen des Autorisierungscode gegen ein Zugriffstoken durch. Wenn die Metadaten auf id_token festgelegt wurden, können Sie den kryptografischen Schlüssel weglassen. |
assertion_signing_key | Ja | Der private RSA-Schlüssel zum Signieren der Clientassertion. Der kryptografische Schlüssel ist nur erforderlich, wenn die token_endpoint_auth_method-Metadaten auf private_key_jwt festgelegt sind. |
Umleitungs-URI
Wenn Sie den Umleitungs-URI Ihres Identitätsanbieters konfigurieren, geben Sie https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp
an. Ersetzen Sie {your-tenant-name}
durch Ihren Mandantennamen. Der Umleitungs-URI muss klein geschrieben sein.
Beispiele:
- Hinzufügen des Microsoft-Kontos (Microsoft Account, MSA) als Identitätsanbieter mithilfe benutzerdefinierter Richtlinien
- Gastanmeldung mittels Microsoft Entra-Konten
- Benutzern mithilfe von benutzerdefinierten Richtlinien die Anmeldung bei einem mehrinstanzenfähigen Microsoft Entra-Identitätsanbieter ermöglichen