Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
A partire dal 1° maggio 2025, Azure AD B2C non sarà più disponibile per l'acquisto per i nuovi clienti. Altre informazioni sono disponibili nelle domande frequenti.
Questo articolo descrive i modi in cui è possibile personalizzare e migliorare l'esperienza di autenticazione di Azure Active Directory B2C (Azure AD B2C) per l'applicazione desktop Windows Presentation Foundation (WPF).
Prima di iniziare, acquisire familiarità con l'articolo Configurare l'autenticazione in un'app desktop WPF di esempio usando Azure AD B2C .
Prepopolare il nome di accesso
Durante un percorso utente di accesso, l'app potrebbe avere come destinazione un utente specifico. Quando un'app è destinata a un utente, può specificare nella richiesta di autorizzazione il login_hint parametro di query con il nome di accesso dell'utente. Azure AD B2C popola automaticamente il nome di accesso e l'utente deve fornire solo la password.
Per precompilare il nome di accesso, eseguire le operazioni seguenti:
- Se stai usando una polizza personalizzata, aggiungere l'attestazione di input richiesta, come descritto in Configurare l'accesso diretto.
- Cerca l'oggetto di configurazione della Microsoft Authentication Library (MSAL) e quindi aggiungi il metodo
withLoginHint()con il suggerimento per l'accesso.
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
.WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
.WithLoginHint("bob@contoso.com")
.ExecuteAsync();
Preselezionare un fornitore di identità
Se è stato configurato il percorso di accesso per l'applicazione per includere account di social networking, ad esempio Facebook, LinkedIn o Google, è possibile specificare il domain_hint parametro . Questo parametro di query fornisce un suggerimento ad Azure AD B2C sul provider di identità social che dovrebbe essere usato per l'accesso. Ad esempio, se l'applicazione specifica domain_hint=facebook.com, il flusso di accesso passa direttamente alla pagina di accesso di Facebook.
Per reindirizzare gli utenti a un provider di identità esterno, eseguire le operazioni seguenti:
- Controlla il nome di dominio del provider di identità esterno. Per altre informazioni, vedere Reindirizzare l'accesso a un provider di social networking.
- Creare o usare un oggetto esistente
Dictionaryper archiviare parametri di query aggiuntivi. - Aggiungere il
domain_hintparametro con il nome di dominio corrispondente al dizionario , ad esempiofacebook.com. - Passare l'oggetto parametri di query aggiuntivi nel metodo dell'oggetto di
WithExtraQueryParametersconfigurazione 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();
Specificare la lingua dell'interfaccia utente
La personalizzazione della lingua in Azure AD B2C consente al flusso utente di soddisfare diverse lingue in base alle esigenze dei clienti. Per altre informazioni, vedere Personalizzazione della lingua.
Per impostare la lingua preferita, eseguire le operazioni seguenti:
- Configurare la personalizzazione della lingua.
- Creare o usare un oggetto esistente
Dictionaryper archiviare parametri di query aggiuntivi. - Aggiungere il
ui_localesparametro con il codice di lingua corrispondente al dizionario , ad esempioen-us. - Passare l'oggetto parametri di query aggiuntivi nel metodo dell'oggetto di
WithExtraQueryParametersconfigurazione 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();
Passare un parametro personalizzato della stringa di query
Con i criteri personalizzati, è possibile passare un parametro di stringa di query personalizzato. Un buon esempio di caso d'uso è quando si vuole modificare dinamicamente il contenuto della pagina.
Per passare un parametro di stringa di query personalizzato, eseguire le operazioni seguenti:
- Configurare l'elemento ContentDefinitionParameters .
- Creare o usare un oggetto esistente
Dictionaryper archiviare parametri di query aggiuntivi. - Aggiungere il parametro della stringa di query personalizzata, ad esempio
campaignId. Impostare il valore del parametro , ad esempiogermany-promotion. - Passare l'oggetto parametri di query aggiuntivi nel metodo dell'oggetto di
WithExtraQueryParametersconfigurazione 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();
Fornire un suggerimento per il token ID
Un'applicazione relying party può inviare un token JSON Web (JWT) in ingresso come parte della richiesta di autorizzazione OAuth2. Il token in ingresso è un suggerimento sull'utente o sulla richiesta di autorizzazione. Azure AD B2C convalida il token e quindi estrae l'attestazione.
Per includere un hint per il token ID nella richiesta di autenticazione, eseguire le operazioni seguenti:
- Nei tuoi criteri personalizzati, definisci un profilo tecnico del suggerimento del token ID.
- Nel codice generare o acquisire un token ID e quindi impostare il token su una variabile , ad esempio
idToken. - Creare o usare un oggetto esistente
Dictionaryper archiviare parametri di query aggiuntivi. - Aggiungere il
id_token_hintparametro con la variabile corrispondente che archivia il token ID. - Passare l'oggetto parametri di query aggiuntivi all'attributo dell'oggetto
extraQueryParametersdi configurazione 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();
Configurare la registrazione
La libreria MSAL genera messaggi di log che consentono di diagnosticare i problemi. L'app può configurare la registrazione. L'app può anche offrire un controllo personalizzato sul livello di dettaglio e sulla registrazione dei dati personali e dell'organizzazione.
È consigliabile creare un callback di registrazione MSAL e consentire agli utenti di inviare i log in caso di problemi di autenticazione. MSAL offre questi livelli di dettagli di registrazione:
- Errore: si è verificato un errore e è stato generato un errore. Questo livello viene usato per il debug e l'identificazione dei problemi.
- Avviso: non si è necessariamente verificato un errore o un errore, ma le informazioni sono destinate alla diagnostica e al rilevamento dei problemi.
- Info: MSAL registra gli eventi destinati a scopi informativi e non necessariamente per il debug.
- Dettagliato: questo è il livello predefinito. MSAL registra i dettagli completi del comportamento della libreria.
Per impostazione predefinita, il logger MSAL non acquisisce dati personali o aziendali. La libreria offre la possibilità di abilitare la registrazione dei dati personali e dell'organizzazione se si decide di farlo.
Il frammento di codice seguente illustra come configurare la registrazione 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();
Configurare l'URI di reindirizzamento
Durante il processo di registrazione dell'app desktop , quando si sceglie un URI di reindirizzamento, tenere presenti le considerazioni importanti seguenti:
-
Sviluppo: per lo sviluppo usato nelle app desktop, è possibile impostare l'URI di reindirizzamento su
http://localhoste Azure AD B2C rispetterà qualsiasi porta nella richiesta. Se l'URI registrato contiene una porta, Azure AD B2C userà solo tale porta. Ad esempio, se l'URI di reindirizzamento registrato èhttp://localhost, l'URI di reindirizzamento nella richiesta può esserehttp://localhost:<randomport>. Se l'URI di reindirizzamento registrato èhttp://localhost:8080, l'URI di reindirizzamento nella richiesta deve esserehttp://localhost:8080. -
Univoco: lo schema dell'URI di reindirizzamento deve essere univoco per ogni applicazione. Nell'esempio
com.onmicrosoft.contosob2c.exampleapp://oauth/redirect,com.onmicrosoft.contosob2c.exampleappè lo schema. Questo modello deve essere seguito. Se due applicazioni condividono lo stesso schema, agli utenti viene assegnata una scelta di applicazioni. Se gli utenti scelgono in modo errato, l'accesso non riesce. -
Completa: l'URI di reindirizzamento deve avere uno schema e un percorso. Il percorso deve contenere almeno un carattere barra dopo il dominio. Ad esempio,
//oauth/funziona e//oauthha esito negativo. Non includere caratteri speciali nell'URI. Ad esempio, il carattere di sottolineatura (_) non è consentito.
Passaggi successivi
- Per altre informazioni, vedere Opzioni di configurazione di MSAL per .NET, UWP e NetCore.