Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
À compter du 1er mai 2025, Azure AD B2C ne sera plus disponible pour les nouveaux clients. Pour plus d’informations, consultez notre FAQ.
Cet article décrit une technique permettant d’activer la prise en charge de plusieurs émetteurs de jetons dans les API web qui implémentent l’interface web Open Web pour .NET (OWIN). La prise en charge de plusieurs points de terminaison de jeton est utile lorsque vous migrez des API Azure Active Directory B2C (Azure AD B2C) et leurs applications d’un domaine à un autre. Par exemple, de login.microsoftonline.com à b2clogin.com, ou à un domaine personnalisé.
En ajoutant la prise en charge de votre API pour accepter des jetons émis par b2clogin.com, login.microsoftonline.com ou un domaine personnalisé, vous pouvez migrer vos applications web de manière intermédiaire avant de supprimer la prise en charge des jetons émis par login.microsoftonline.com de l’API.
Les sections suivantes présentent un exemple d’activation de plusieurs émetteurs dans une API web qui utilise les composants du middleware Microsoft OWIN (Katana). Bien que les exemples de code soient spécifiques au middleware Microsoft OWIN, la technique générale doit s’appliquer à d’autres bibliothèques OWIN.
Conditions préalables
Vous avez besoin des ressources Azure AD B2C suivantes en place avant de poursuivre les étapes décrites dans cet article :
- Flux d’utilisateurs ou stratégies personnalisées créées dans votre locataire
Obtenir les points de terminaison d’émetteur de jeton
Vous devez d’abord obtenir les URI de point de terminaison de l’émetteur de jeton pour chaque émetteur que vous souhaitez prendre en charge dans votre API. Pour obtenir les endpoints b2clogin.com et login.microsoftonline.com pris en charge par votre locataire Azure AD B2C, procédez comme suit dans le portail Azure.
Commencez par sélectionner l’un de vos flux d’utilisateurs existants :
Accédez à votre instance Azure AD B2C dans le portail Azure
Sous Stratégies, sélectionnez Flux d’utilisateurs (stratégies)
Sélectionnez une stratégie existante, par exemple B2C_1_signupsignin1, puis sélectionnez Exécuter le flux utilisateur
Sous le titre Exécuter le flux utilisateur en haut de la page, sélectionnez le lien hypertexte pour accéder au point de terminaison de découverte OpenID Connect pour ce flux utilisateur.
Dans la page qui s’ouvre dans votre navigateur, enregistrez la
issuervaleur, par exemple :https://your-b2c-tenant.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/Utilisez la liste déroulante Sélectionner un domaine pour sélectionner l’autre domaine, puis effectuez à nouveau les deux étapes précédentes et enregistrez sa
issuervaleur.
Vous devez maintenant avoir deux URI enregistrés qui sont similaires à :
https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/
https://your-b2c-tenant.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/
Stratégies personnalisées
Si vous avez des stratégies personnalisées au lieu de flux d’utilisateurs, vous pouvez utiliser un processus similaire pour obtenir les URI de l’émetteur.
- Accédez à votre locataire Azure AD B2C
- Sélectionner Identity Experience Framework
- Sélectionnez l’une de vos stratégies de partie de confiance, par exemple, B2C_1A_signup_signin
- Utilisez la liste déroulante Sélectionner un domaine pour sélectionner un domaine, par exemple yourtenant.b2clogin.com
- Sélectionnez le lien hypertexte affiché sous Point de terminaison de détection OpenID Connect
- Enregistrer la
issuervaleur - Effectuez les étapes 4 à 6 pour l’autre domaine, par exemple login.microsoftonline.com
Obtenir l’exemple de code
Maintenant que vous avez les deux URI de point de terminaison de jeton, vous devez mettre à jour votre code pour spécifier que les deux points de terminaison sont des émetteurs valides. Pour parcourir un exemple, téléchargez ou clonez l’exemple d’application, puis mettez à jour l’exemple pour prendre en charge les deux points de terminaison en tant qu’émetteurs valides.
Téléchargez l’archive : active-directory-b2c-dotnet-webapp-and-webapi-master.zip
git clone https://github.com/Azure-Samples/active-directory-b2c-dotnet-webapp-and-webapi.git
Activer plusieurs émetteurs dans l’API web
Dans cette section, vous mettez à jour le code pour spécifier que les deux points de terminaison d’émetteur de jeton sont valides.
Ouvrir la solution B2C-WebAPI-DotNet.sln dans Visual Studio
Dans le projet TaskService , ouvrez le fichier TaskService\App_Start\Startup.Auth.cs dans votre éditeur
Ajoutez la directive suivante
usingen haut du fichier :using System.Collections.Generic;Ajoutez la
ValidIssuerspropriété à laTokenValidationParametersdéfinition et spécifiez les deux URI que vous avez enregistrés dans la section précédente :TokenValidationParameters tvps = new TokenValidationParameters { // Accept only those tokens where the audience of the token is equal to the client ID of this app ValidAudience = ClientId, AuthenticationType = Startup.DefaultPolicy, ValidIssuers = new List<string> { "https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/", "https://{your-b2c-tenant}.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/"//, //"https://your-custom-domain/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/" } };
TokenValidationParameters est fourni par MSAL.NET et est consommé par l’intergiciel OWIN dans la section suivante du code dans Startup.Auth.cs. Lorsque plusieurs émetteurs valides sont spécifiés, le pipeline d’application OWIN est conscient que les deux points de terminaison de jeton sont des émetteurs valides.
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions
{
// This SecurityTokenProvider fetches the Azure AD B2C metadata & from the OpenID Connect metadata endpoint
AccessTokenFormat = new JwtFormat(tvps, new tCachingSecurityTokenProvider(String.Format(AadInstance, ultPolicy)))
});
Comme mentionné précédemment, d’autres bibliothèques OWIN fournissent généralement une installation similaire pour prendre en charge plusieurs émetteurs. Bien que fournir des exemples pour chaque bibliothèque dépasse le cadre de cet article, vous pouvez utiliser une technique similaire pour la plupart des bibliothèques.
Changer de point de terminaison dans l’application web
Avec les deux URI désormais pris en charge par votre API web, vous devez maintenant mettre à jour votre application web afin qu’elle récupère des jetons à partir du point de terminaison b2clogin.com.
Par exemple, vous pouvez configurer l’exemple d’application web pour utiliser le nouveau point de terminaison en modifiant la ida:AadInstance valeur dans le fichier TaskWebApp\Web.config du projet TaskWebApp .
Modifiez la ida:AadInstance valeur dans la Web.config de TaskWebApp afin qu’elle référence {your-b2c-tenant-name}.b2clogin.com au lieu de login.microsoftonline.com.
Avant:
<!-- Old value -->
<add key="ida:AadInstance" value="https://login.microsoftonline.com/tfp/{0}/{1}" />
Après (remplacez {your-b2c-tenant} par le nom de votre locataire B2C) :
<!-- New value -->
<add key="ida:AadInstance" value="https://{your-b2c-tenant}.b2clogin.com/tfp/{0}/{1}" />
Lorsque les chaînes de point de terminaison sont construites lors de l’exécution de l’application web, les points de terminaison basés sur b2clogin.com sont utilisés lors de la demande de jetons.
Lors de l’utilisation d’un domaine personnalisé :
<!-- Custom domain -->
<add key="ida:AadInstance" value="https://custom-domain/{0}/{1}" />
Étapes suivantes
Cet article a présenté une méthode de configuration d’une API web implémentant l’intergiciel Microsoft OWIN (Katana) pour accepter des jetons à partir de plusieurs points de terminaison d’émetteur. Comme vous pouvez le constater, il existe plusieurs autres chaînes dans les fichiers Web.Config des projets TaskService et TaskWebApp qui doivent être modifiés si vous souhaitez générer et exécuter ces projets sur votre propre locataire. Vous êtes invité à modifier les projets de manière appropriée si vous souhaitez les voir en action, toutefois, une procédure pas à pas complète est en dehors de l’étendue de cet article.
Pour plus d’informations sur les différents types de jetons de sécurité émis par Azure AD B2C, consultez Vue d’ensemble des jetons dans Azure Active Directory B2C.