Définir un profil technique OpenID Connect dans une stratégie personnalisée Azure Active Directory B2C

Notes

Dans Active Directory B2C, les stratégies personnalisées sont principalement conçues pour gérer des scénarios complexes. Pour la plupart des scénarios, nous vous recommandons de recourir à des flux d’utilisateurs intégrés. Si vous ne l’avez pas fait, découvrez le Pack de démarrage de stratégie personnalisée dans Prise en main des stratégies personnalisées dans Active Directory B2C.

Azure Active Directory B2C (Azure AD B2C) prend en charge le fournisseur d’identité du protocole OpenID Connect. OpenID Connect 1.0 définit une couche d’identité par dessus OAuth 2.0, et est à la pointe des protocoles d’authentification modernes. Un profil technique OpenID Connect vous permet d'opérer une fédération avec un fournisseur d'identité reposant sur OpenID Connect, comme Microsoft Entra ID. Fédérer avec un fournisseur d’identité permet aux utilisateurs de se connecter avec leurs identités existantes de réseaux sociaux ou d’entreprise.

Protocol

L’attribut Name de l’élément Protocol doit être défini sur OpenIdConnect. Par exemple, le protocole pour le profil technique MSA-OIDC est OpenIdConnect :

<TechnicalProfile Id="MSA-OIDC">
  <DisplayName>Microsoft Account</DisplayName>
  <Protocol Name="OpenIdConnect" />
  ...

Revendications d’entrée

Les éléments InputClaims et InputClaimsTransformations ne sont pas obligatoires. Vous pouvez cependant envoyer des paramètres supplémentaires à votre fournisseur d’identité. L’exemple suivant ajoute le paramètre de chaîne de requête domain_hint avec la valeur contoso.com à la demande d’autorisation.

<InputClaims>
  <InputClaim ClaimTypeReferenceId="domain_hint" DefaultValue="contoso.com" />
</InputClaims>

Revendications de sortie

L’élément OutputClaims contient une liste de revendications renvoyée par le fournisseur d'identité OpenID Connect. Il se peut que vous deviez mapper le nom de la revendication définie dans votre stratégie au nom défini dans le fournisseur d'identité. Vous pouvez également inclure des revendications qui ne sont pas retournées par le fournisseur d’identité, pour autant que vous définissiez l’attribut DefaultValue.

L’élément OutputClaimsTransformations peut contenir une collection d’éléments OutputClaimsTransformation qui sont utilisés pour modifier les revendications de sortie ou en générer de nouvelles.

L’exemple suivant montre les revendications retournées par le fournisseur d’identité Compte Microsoft :

  • La revendication sub mappée à la revendication issuerUserId.
  • La revendication name mappée à la revendication displayName.
  • La revendication e-mail sans mappage de nom.

Le profil technique retourne également des revendications qui ne sont pas retournées par le fournisseur d’identité :

  • La revendication identityProvider contenant le nom du fournisseur d’identité.
  • La revendication authenticationSource avec la valeur par défaut 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>

Métadonnées

Attribut Obligatoire Description
client_id Oui Identificateur d’application du fournisseur d’identité.
IdTokenAudience Non Audience du jeton id_token. Si la valeur est spécifiée, Azure AD B2C vérifie si la revendication aud dans un jeton retourné par le fournisseur d’identité est identique à celle indiquée dans les métadonnées IdTokenAudience.
METADATA Oui URL qui pointe vers un document de configuration de fournisseur d’identité OpenID Connect, également appelé point de terminaison de configuration OpenID connu. L’URL peut contenir l’expression {tenant}, qui est remplacée par le nom du locataire.
authorization_endpoint Non URL qui pointe vers un point de terminaison d’autorisation de configuration de fournisseur d’identité OpenID Connect. La valeur des métadonnées authorization_endpoint est prioritaire sur celle de authorization_endpoint spécifiée dans le point de terminaison de configuration OpenID connu. L’URL peut contenir l’expression {tenant}, qui est remplacée par le nom du locataire.
end_session_endpoint Non URL du point de terminaison de la session de fin. La valeur des métadonnées end_session_endpoint est prioritaire sur le end_session_endpoint spécifié dans le point de terminaison de configuration OpenID connu.
émetteur Non Identificateur unique d’un fournisseur d’identité OpenID Connect. La valeur des métadonnées de l’émetteur est prioritaire sur celle de issuer spécifiée dans le point de terminaison de configuration OpenID connu. Si la valeur est spécifiée, Azure AD B2C vérifie si la revendication iss dans un jeton retourné par le fournisseur d’identité est identique à celle indiquée dans les métadonnées de l’émetteur.
ProviderName Non Nom du fournisseur d'identité.
response_types Non Type de réponse conformément à la spécification OpenID Connect Core 1.0. Valeurs possibles : id_token, code ou token.
response_mode Non Méthode que le fournisseur d’identité utilise pour renvoyer le résultat à Azure AD B2C. Valeurs possibles : query, form_post (par défaut) ou fragment.
scope Non Étendue de la requête définie conformément à la spécification OpenID Connect Core 1.0. Par exemple, openid, profile ou email.
HttpBinding Non Liaison HTTP attendue aux points de terminaison de jeton d’accès et de jeton de revendications. Valeurs possibles : GET ou POST.
ValidTokenIssuerPrefixes Non Clé utilisable pour se connecter à chacun des locataires en cas d’utilisation d’un fournisseur d’identité mutualisé tel que Microsoft Entra ID.
UsePolicyInRedirectUri Non Indique s’il faut utiliser une stratégie lors de la construction de l’URI de redirection. Lorsque vous configurez votre application dans le fournisseur d’identité, vous devez spécifier l’URI de redirection. L’URI de redirection pointe vers Azure AD B2C, https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp. Si vous spécifiez true, vous devez ajouter un URI de redirection pour chaque stratégie que vous utilisez. Par exemple : https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/{policy-name}/oauth2/authresp.
MarkAsFailureOnStatusCode5xx Non Indique si une demande adressée à un service externe doit être marquée comme un échec si le code d’état HTTP s’inscrit dans la plage 5xx. Par défaut, il s’agit de false.
DiscoverMetadataByTokenIssuer Non Indique si les métadonnées OIDC doivent être découvertes à l’aide de l’émetteur du jeton JWT. Si vous devez créer l’URL du point de terminaison de métadonnées d’après l’émetteur, définissez-le sur true.
IncludeClaimResolvingInClaimsHandling Non Pour les revendications d’entrée et de sortie, spécifie si la résolution des revendications est incluse dans le profil technique. Valeurs possibles : true ou false (par défaut). Si vous souhaitez utiliser un programme de résolution des revendications dans le profil technique, définissez cette valeur sur true.
token_endpoint_auth_method Non Indique comment Azure AD B2C envoie l’en-tête d’authentification au point de terminaison du jeton. Valeurs possibles : client_secret_post (par défaut) et client_secret_basic, private_key_jwt. Pour plus d’informations, consultez Section d’authentification du client OpenID Connect.
token_signing_algorithm Non Spécifie l’algorithme de signature à utiliser lorsque token_endpoint_auth_method a la valeur private_key_jwt. Valeurs possibles : RS256 (par défaut) ou RS512.
SingleLogoutEnabled Non Indique si, lors de la connexion, le profil technique tente de se déconnecter des fournisseurs d’identité fédérés. Pour plus d’informations, consultez Déconnexion d’une session Azure AD B2C. Valeurs possibles : true (par défaut) ou false.
ReadBodyClaimsOnIdpRedirect Non Définissez la valeur true pour lire les revendications du corps de la réponse en cas de redirection du fournisseur d’identité. Ces métadonnées sont utilisées avec l’ID Apple, où les revendications sont retournées dans la charge utile de la réponse.
<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>

Éléments d’interface utilisateur

Les paramètres suivants peuvent être utilisés pour configurer le message d’erreur affiché en cas d’échec. Les métadonnées doivent être configurées dans le profil technique OpenID Connect. Les messages d’erreur peuvent être localisés.

Attribut Obligatoire Description
UserMessageIfClaimsPrincipalDoesNotExist Non Message à afficher à l’utilisateur si un compte avec le nom d’utilisateur fourni est introuvable dans l’annuaire.
UserMessageIfInvalidPassword Non Message à afficher à l’utilisateur si le mot de passe est incorrect.
UserMessageIfOldPasswordUsed Non Message à afficher à l’utilisateur si le mot de passe utilisé est ancien.

Clés de chiffrement

L’élément CryptographicKeys contient l’attribut suivant :

Attribut Obligatoire Description
client_secret Oui Clé secrète client de l’application du fournisseur d’identité. La clé de chiffrement est requise uniquement si les métadonnées response_types sont définies sur code et si les métadonnées token_endpoint_auth_method sont définies sur client_secret_post ou client_secret_basic. Dans ce cas, Azure AD B2C émet un autre appel pour échanger le code d’autorisation pour un jeton d’accès. Si les métadonnées sont définies sur id_token, vous pouvez omettre la clé de chiffrement.
assertion_signing_key Oui Clé privée RSA qui sera utilisée pour signer l’assertion cliente. Cette clé de chiffrement est requise uniquement si les métadonnées token_endpoint_auth_method sont définies sur private_key_jwt.

URI de redirection

Lorsque vous configurez l’URI de redirection de votre fournisseur d’identité, entrez https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp. Veillez à remplacer {your-tenant-name} par le nom de votre locataire. L’URI de redirection doit être en minuscules.

Exemples :