Partager via


Activer les options d’authentification dans une application de bureau WPF à l’aide d’Azure AD B2C

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 les façons dont vous pouvez personnaliser et améliorer l’expérience d’authentification Azure Active Directory B2C (Azure AD B2C) pour votre application de bureau Windows Presentation Foundation (WPF).

Avant de commencer, familiarisez-vous avec la configuration de l’authentification dans un exemple d’application de bureau WPF à l’aide de l’article Azure AD B2C .

Préremplir le nom de connexion

Pendant un parcours utilisateur de connexion, votre application peut cibler un utilisateur spécifique. Lorsqu’une application cible un utilisateur, elle peut spécifier dans la demande d’autorisation le login_hint paramètre de requête avec le nom de connexion de l’utilisateur. Azure AD B2C remplit automatiquement le nom de connexion, et l’utilisateur doit fournir uniquement le mot de passe.

Pour préremplir le nom de connexion, procédez comme suit :

  1. Si vous utilisez une stratégie personnalisée, ajoutez la requête d’entrée requise comme décrit dans Configurer la connexion directe.
  2. Recherchez votre objet de configuration MSAL (Microsoft Authentication Library), puis ajoutez la withLoginHint() méthode avec l’indicateur de connexion.
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
    .WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
    .WithLoginHint("bob@contoso.com")
    .ExecuteAsync();

Préélectionner un fournisseur d’identité

Si vous avez configuré le parcours de connexion de votre application pour inclure des comptes sociaux, tels que Facebook, LinkedIn ou Google, vous pouvez spécifier le domain_hint paramètre. Ce paramètre de requête fournit un indicateur à Azure AD B2C sur le fournisseur d’identité sociale qui doit être utilisé pour la connexion. Par exemple, si l’application spécifie domain_hint=facebook.com, le flux de connexion passe directement à la page de connexion Facebook.

Pour rediriger les utilisateurs vers un fournisseur d’identité externe, procédez comme suit :

  1. Vérifiez le nom de domaine de votre fournisseur d’identité externe. Pour plus d’informations, consultez Redirection de la connexion à un fournisseur de réseaux sociaux.
  2. Créez ou utilisez un objet existant Dictionary pour stocker des paramètres de requête supplémentaires.
  3. Ajoutez le domain_hint paramètre avec le nom de domaine correspondant au dictionnaire (par exemple, facebook.com).
  4. Transmettez l’objet de paramètres de requête supplémentaire à la méthode de l’objet de WithExtraQueryParameters configuration MSAL.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("domain_hint", "facebook.com");

authResult = await app.AcquireTokenInteractive(App.ApiScopes)
    .WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
    .WithExtraQueryParameters(extraQueryParameters)
    .ExecuteAsync();

Spécifier la langue de l’interface utilisateur

La personnalisation de la langue dans Azure AD B2C permet à votre flux utilisateur de prendre en charge diverses langues en fonction des besoins de vos clients. Pour plus d’informations, consultez Personnalisation de la langue.

Pour définir la langue par défaut, procédez comme suit :

  1. Configurez la personnalisation de la langue.
  2. Créez ou utilisez un objet existant Dictionary pour stocker des paramètres de requête supplémentaires.
  3. Ajoutez le ui_locales paramètre avec le code de langue correspondant au dictionnaire (par exemple, en-us).
  4. Transmettez l’objet de paramètres de requête supplémentaire à la méthode de l’objet de WithExtraQueryParameters configuration MSAL.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("ui_locales", "en-us");

authResult = await app.AcquireTokenInteractive(App.ApiScopes)
    .WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
    .WithExtraQueryParameters(extraQueryParameters)
    .ExecuteAsync();

Passer un paramètre de chaîne de requête personnalisé

Avec des stratégies personnalisées, vous pouvez passer un paramètre de chaîne de requête personnalisé. Un bon exemple de cas d’usage consiste à modifier dynamiquement le contenu de la page.

Pour passer un paramètre de chaîne de requête personnalisé, procédez comme suit :

  1. Configurez l’élément ContentDefinitionParameters .
  2. Créez ou utilisez un objet existant Dictionary pour stocker des paramètres de requête supplémentaires.
  3. Ajoutez le paramètre de chaîne de requête personnalisé, tel que campaignId. Définissez la valeur du paramètre (par exemple, germany-promotion).
  4. Transmettez l’objet de paramètres de requête supplémentaire à la méthode de l’objet de WithExtraQueryParameters configuration MSAL.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("campaignId", "germany-promotion");

authResult = await app.AcquireTokenInteractive(App.ApiScopes)
    .WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
    .WithExtraQueryParameters(extraQueryParameters)
    .ExecuteAsync();

Transmission d’indicateur de jeton d’ID

Une application de partie de confiance peut envoyer un jeton web JSON entrant (JWT) dans le cadre de la demande d’autorisation OAuth2. Le jeton entrant est un indicateur de l’utilisateur ou de la demande d’autorisation. Azure AD B2C valide le jeton, puis extrait la revendication.

Pour inclure un indicateur de jeton d’ID dans la demande d’authentification, procédez comme suit :

  1. Dans votre stratégie personnalisée, définissez un indicateur de jeton d’ID de profil technique.
  2. Dans votre code, générez ou achetez un jeton d’ID, puis définissez le jeton sur une variable (par exemple). idToken
  3. Créez ou utilisez un objet existant Dictionary pour stocker des paramètres de requête supplémentaires.
  4. Ajoutez le id_token_hint paramètre avec la variable correspondante qui stocke le jeton d’ID.
  5. Transmettez l’objet de paramètres de requête supplémentaire à l’attribut de l’objet de extraQueryParameters configuration MSAL.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("id_token_hint", idToken);

authResult = await app.AcquireTokenInteractive(App.ApiScopes)
    .WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
    .WithExtraQueryParameters(extraQueryParameters)
    .ExecuteAsync();

Configuration de la journalisation

La bibliothèque MSAL génère des messages de journal qui peuvent aider à diagnostiquer les problèmes. L’application peut configurer la journalisation. L’application peut également vous donner un contrôle personnalisé sur le niveau de détail et déterminer si les données personnelles et organisationnelles sont enregistrées.

Nous vous conseillons de créer un rappel de journalisation MSAL et de donner aux utilisateurs le moyen d’envoyer des journaux lorsqu’ils rencontrent des problèmes d’authentification. MSAL fournit les niveaux de détail de journalisation suivants :

  • Erreur : Une erreur s’est produite et une erreur a été générée. Ce niveau est utilisé pour le débogage et l’identification des problèmes.
  • Avertissement : Il n’y a pas nécessairement eu d’erreur ou d’échec, mais les informations sont destinées aux diagnostics et à l’identification des problèmes.
  • Informations : MSAL enregistre des événements à but informatif et non nécessairement pour le débogage.
  • Commentaires : il s’agit du niveau par défaut. MSAL enregistre les détails complets du comportement de la bibliothèque.

Par défaut, l’enregistreur d’événements MSAL ne capture aucune donnée personnelle ou organisationnelle. La bibliothèque vous donne la possibilité d’activer la journalisation des données personnelles et organisationnelles si vous décidez de le faire.

L’extrait de code suivant montre comment configurer la journalisation MSAL :

PublicClientApp = PublicClientApplicationBuilder.Create(ClientId)
    .WithB2CAuthority(AuthoritySignUpSignIn)
    .WithRedirectUri(RedirectUri)
    .WithLogging(Log, LogLevel.Info, false) // don't log P(ersonally) I(dentifiable) I(nformation) details on a regular basis
    .Build();

Configurer l’URI de redirection

Pendant le processus d’inscription de l’application de bureau , lorsque vous choisissez un URI de redirection, gardez à l’esprit les considérations importantes suivantes :

  • Développement : Pour une utilisation de développement dans les applications de bureau, vous pouvez définir l’URI de redirection vers http://localhost, et Azure AD B2C respecte n’importe quel port dans la requête. Si l’URI inscrit contient un port, Azure AD B2C utilise uniquement ce port. Par exemple, si l’URI de redirection inscrit est http://localhost, l’URI de redirection dans la requête peut être http://localhost:<randomport>. Si l’URI de redirection inscrit est http://localhost:8080, l’URI de redirection dans la requête doit être http://localhost:8080.
  • Unique : le schéma de l’URI de redirection doit être unique pour chaque application. Dans l’exemple com.onmicrosoft.contosob2c.exampleapp://oauth/redirect, com.onmicrosoft.contosob2c.exampleapp est le schéma. Ce modèle doit être suivi. Si deux applications partagent le même schéma, les utilisateurs bénéficient d’un choix d’applications. Si les utilisateurs choisissent incorrectement, la connexion échoue.
  • Compléter : l’URI de redirection doit avoir un schéma et un chemin d’accès. Le chemin d’accès doit contenir au moins un caractère de barre oblique après le domaine. Par exemple, //oauth/ fonctionne et //oauth échoue. N’incluez pas de caractères spéciaux dans l’URI. Par exemple, le caractère de soulignement (_) n’est pas autorisé.

Étapes suivantes