Concedere l’accesso utente in un'applicazione desktop WPF di esempio
Questa guida usa un'applicazione WPF (Windows Presentation Foundation) di esempio per mostrare come aggiungere l'autenticazione a un'applicazione desktop WPF. L'applicazione di esempio consente agli utenti di eseguire l'accesso e la disconnessione. L'applicazione desktop di esempio usa Microsoft Authentication Library (MSAL) for .NET per gestire l'autenticazione.
Prerequisiti
- Visual Studio Code o un altro editor di codice.
- .NET 7.0 o versione successiva.
- Un tenant esterno. Per crearne uno, scegliere tra i metodi seguenti:
- (Scelta consigliata) Usare l'estensione Microsoft Entra per ID esterno per impostare un tenant esterno direttamente in Visual Studio Code.
- Creare un nuovo tenant esterno nell'interfaccia di amministrazione di Microsoft Entra.
Registrare l'app desktop
Per abilitare l'applicazione all'accesso utente con Microsoft Entra, è necessario che Microsoft Entra per ID esterno riconosca l'applicazione creata. La registrazione dell'app stabilisce una relazione di trust tra l'app e Microsoft Entra. Quando si registra un'applicazione, l'ID esterno genera un identificatore univoco noto come ID applicazione (client), un valore usato per identificare l'app durante la creazione di richieste di autenticazione.
La procedura seguente spiega come registrare l'app nell'Interfaccia di amministrazione di Microsoft Entra:
Accedere all’Interfaccia di amministrazione di Microsoft Entra almeno come sviluppatore di applicazioni.
Se si ha accesso a più tenant, usare l'icona Impostazioni nel menu in alto per passare al tenant esterno dal menu Directory e sottoscrizioni.
Passare a Identità>Applicazioni>Registrazioni app.
Seleziona + Nuova registrazione.
Nella pagina Registra un'applicazione che viene visualizzata:
- Immettere un nome significativo per l’applicazione da mostrare agli utenti dell'app, ad esempio ciam-client-app.
- In Tipi di account supportati selezionare Account solo in questa directory organizzativa.
Selezionare Registra.
Al termine della registrazione, viene visualizzato il riquadro Panoramica dell'applicazione. Registrare l'ID applicazione (client) da usare nel codice sorgente dell'applicazione.
Specificare la piattaforma dell'applicazione
Per specificare il tipo di app per la registrazione, seguire questa procedura:
- In Gestisci selezionare Autenticazione.
- Nella pagina Configurazioni della piattaforma, selezionare Aggiungi una piattaforma, quindi selezionare l'opzione Applicazioni per dispositivi mobili e desktop.
- Nel campo di input in URI di reindirizzamento personalizzato immettere manualmente
https://login.microsoftonline.com/common/oauth2/nativeclient
e selezionare Configura. Se si sceglie questo URI nella casella di selezione, è possibile che venga visualizzato un errore dell'URI di reindirizzamento.
Concedere il consenso amministratore
Dopo aver registrato l'applicazione, viene assegnata l'autorizzazione User.Read . Tuttavia, poiché il tenant è un tenant esterno, gli utenti del cliente stessi non possono fornire il consenso a questa autorizzazione. L'amministratore deve fornire il consenso a questa autorizzazione per conto di tutti gli utenti nel tenant:
Nella pagina Registrazioni app, selezionare l'applicazione creata (ad esempio ciam-client-app) per aprire la relativa pagina Panoramica.
In Gestisci selezionare Autorizzazioni API.
- Selezionare Concedi consenso amministratore per <nome del tenant>, quindi selezionare Sì.
- Selezionare Aggiorna, quindi verificare che Concesso per <il nome> del tenant venga visualizzato in Stato per l'autorizzazione.
Creare un flusso utente
Seguire questa procedura per creare un flusso utente che un cliente possa usare per accedere o registrarsi a un'applicazione.
Accedere all'Interfaccia di amministrazione di Microsoft Entra almeno come amministratore del flusso utente con ID esterno.
Se si ha accesso a più tenant, usare l'icona Impostazioni nel menu in alto per passare al tenant esterno dal menu Directory e sottoscrizioni.
Passare a Identità>Identità esterne>Flussi utente.
Selezionare + Nuovo flusso utente.
Nella pagina Crea:
Immettere un nome per il flusso utente, ad esempio SignInSignUpSample.
Nell'elenco Provider di identità selezionare Account di posta elettronica. Questo provider di identità consente agli utenti di accedere o registrarsi usando il proprio indirizzo di posta elettronica.
In Account di posta elettronicaè possibile selezionare una delle due opzioni. Per questa esercitazione selezionare Indirizzo di posta elettronica con password.
- Indirizzo di posta elettronica con password: consente ai nuovi utenti di registrarsi e accedere usando un indirizzo di posta elettronica come nome di accesso e una password come credenziale di primo fattore.
- Passcode monouso tramite posta elettronica: consente ai nuovi utenti di registrarsi e accedere usando un indirizzo di posta elettronica come nome di accesso e un passcode monouso ricevuto tramite messaggio di posta elettronica come credenziale di primo fattore. Il passcode monouso tramite messaggio di posta elettronica deve essere abilitato a livello di tenant (Tutti i provider di identità>Passcode monouso tramite posta elettronica) affinché questa opzione sia disponibile a livello di flusso utente.
In Attributi utentescegliere gli attributi da raccogliere dall'utente al momento della registrazione. Se si seleziona Mostra altro, è possibile scegliere attributi e attestazioni per paese/area geografica, nome visualizzato e codice postale. Seleziona OK. (Agli utenti vengono richiesti gli attributi solo quando si registrano per la prima volta.)
Seleziona Crea. Il nuovo flusso utente viene visualizzato nell'elenco Flussi utente. Se necessario, aggiornare la pagina.
Per abilitare la reimpostazione della password self-service, seguire la procedura descritta nell'articolo Abilitare la reimpostazione della password self-service.
Associare l'applicazione WPF al flusso utente
Per consentire agli utenti del cliente di visualizzare l'esperienza di iscrizione o di accesso quando usano l'app, è necessario associare l'app a un flusso utente. Sebbene sia possibile associare molte applicazioni al flusso utente, è possibile associare un solo flusso utente a una singola applicazione.
Nel menu della barra laterale selezionare Identità.
Selezionare Identità esterne, quindi Flussi utente.
Nella pagina Flussi utente selezionare il nome del flusso utente creato in precedenza, ad esempio SignInSignUpSample.
In Usa selezionare Applicazioni.
Seleziona Aggiungi applicazione.
Selezionare l'applicazione dall'elenco, ad esempio ciam-client-app o usare la casella di ricerca per trovare l'applicazione e selezionarla.
Scegliere Seleziona.
Dopo aver associato l'app a un flusso utente, è possibile testare il flusso utente simulando l'esperienza di iscrizione o di accesso di un utente con l'applicazione dall'interfaccia di amministrazione di Microsoft Entra. A tale scopo, usare la procedura descritta in Testare il flusso utente di iscrizione e di accesso.
Clonare o scaricare un'applicazione WPF di esempio
Per ottenere l'applicazione di esempio, è possibile clonarla da GitHub o scaricarla come file .zip.
Per clonare l'esempio, aprire un prompt dei comandi, passare alla posizione in cui si vuole creare il progetto e immettere il comando seguente:
git clone https://github.com/Azure-Samples/ms-identity-ciam-dotnet-tutorial.git
Scaricare il file .zip. Estrarlo in un percorso di file in cui la lunghezza del nome è inferiore a 260 caratteri.
Configurare l'app WPF di esempio
Aprire il progetto nell'ambiente di sviluppo integrato (ad esempio Visual Studio o Visual Studio Code) per configurare il codice.
Nell’editor di codice, aprire il file appsettings.json nella cartella ms-identity-ciam-dotnet-tutorial>1-Authentication>5-sign-in-dotnet-wpf.
Sostituire
Enter_the_Application_Id_Here
con l'ID applicazione (client) dell’app registrata in precedenza.Sostituire
Enter_the_Tenant_Subdomain_Here
con il sottodominio della directory (tenant). Ad esempio, se il dominio primario è contoso.onmicrosoft.com, sostituireEnter_the_Tenant_Subdomain_Here
con contoso. Se il dominio primario non è disponibile, vedere come leggere i dettagli del tenant.
Eseguire e testare l'app desktop WPF di esempio
Aprire una finestra della console e passare alla directory contenente l'app desktop WPF di esempio:
cd 1-Authentication\5-sign-in-dotnet-wpf
Nel terminale eseguire l'app eseguendo il comando seguente:
dotnet run
Dopo aver avviato l'esempio, viene visualizzata in genere una finestra con un pulsante Accedi. Selezionare il pulsante Accedi.
Nella pagina di accesso immettere l'indirizzo di posta elettronica dell'account. Se non si dispone di un account, selezionare il collegamento Nessun account? Creare un account per avviare il flusso di iscrizione. Seguire questo flusso per creare un nuovo account ed eseguire l’accesso.
Dopo l'accesso, verrà visualizzata una schermata che mostra il completamento dell'accesso e le informazioni di base sull'account utente archiviato nel token recuperato. Le informazioni di base vengono visualizzate nella sezione Informazioni token della schermata di accesso
Funzionamento
La configurazione principale per l'applicazione client pubblico viene gestita all'interno del file App.xaml.cs. Viene inizializzato un oggetto PublicClientApplication
insieme a una cache per l'archiviazione dei token di accesso. L'applicazione verifica innanzitutto se è disponibile un token memorizzato nella cache che possa essere usato per consentire l'accesso utente. Se non è presente alcun token memorizzato nella cache, all'utente verrà richiesto di fornire le credenziali ed eseguire l’accesso. Al momento della disconnessione, tutti gli account e tutti i token di accesso corrispondenti verranno rimossi dalla cache.