Esercitazione: Creare un daemon multi-tenant che usa Microsoft Identity PlatformTutorial: Build a multi-tenant daemon that uses the Microsoft identity platform

In questa esercitazione verrà scaricata ed eseguita un'app Web daemon ASP.NET che illustra l'uso della concessione di credenziali client OAuth 2.0 per ottenere un token di accesso per chiamare l'API Microsoft Graph.In this tutorial, you download and run an ASP.NET daemon web app that demonstrates using the OAuth 2.0 client credentials grant to get an access token to call the Microsoft Graph API.

In questa esercitazione:In this tutorial:

  • Integrazione di un'app daemon con Microsoft Identity PlatformIntegrate a daemon app with the Microsoft identity platform
  • Concedere le autorizzazioni dell'applicazione direttamente all'app da un amministratoreGrant application permissions directly to the app by an admin
  • Reperimento di un token di accesso per chiamare l'API Microsoft GraphGet an access token to call the Microsoft Graph API
  • Chiamata all'API Microsoft GraphCall the Microsoft Graph API.

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.If you don’t have an Azure subscription, create a free account before you begin.

PrerequisitiPrerequisites

  • Visual Studio 2017 o 2019.Visual Studio 2017 or 2019.
  • Un tenant di Azure AD.An Azure AD tenant. Per altre informazioni, vedere Come ottenere un tenant di Azure AD.For more information, see How to get an Azure AD tenant.
  • Uno o più account utente nel tenant di Azure AD.One or more user accounts in your Azure AD tenant. Questo esempio non funziona con un account Microsoft.This sample won't work with a Microsoft account. Se è stato effettuato l'accesso al portale di Azure con un account Microsoft e non è mai stato creato un account utente nella directory, eseguire subito questa operazione.If you signed in to the Azure portal with a Microsoft account and have never created a user account in your directory, do that now.

ScenarioScenario

L'app viene creata come applicazione MVC ASP.NET.The app is built as an ASP.NET MVC application. Usa il middleware OWIN OpenID Connect per concedere l'accesso agli utenti.It uses the OWIN OpenID Connect middleware to sign in users.

Il componente "daemon" in questo esempio è un controller API, SyncController.cs.The "daemon" component in this sample is an API controller, SyncController.cs. Quando viene chiamato, il controller recupera da Microsoft Graph un elenco di utenti del tenant di Azure Active Directory (Azure AD) del cliente.When the controller is called, it pulls in a list of users in the customer's Azure Active Directory (Azure AD) tenant from Microsoft Graph. SyncController.cs viene attivato da una chiamata AJAX nell'applicazione Web.SyncController.cs is triggered by an AJAX call in the web application. Usa Microsoft Authentication Library (MSAL) per .NET per acquisire un token di accesso per Microsoft Graph.It uses the Microsoft Authentication Library (MSAL) for .NET to acquire an access token for Microsoft Graph.

Poiché l'app è multi-tenant per i clienti aziendali Microsoft, deve fornire un modo per "iscriversi" o "connettere" l'applicazione ai dati aziendali.Because the app is a multi-tenant app for Microsoft business customers, it must provide a way for customers to "sign up" or "connect" the application to their company data. Durante il flusso di connessione, un amministratore globale concede prima di tutto le autorizzazioni dell'applicazione direttamente all'app in modo che possa accedere ai dati aziendali in modo non interattivo, senza la presenza di un utente connesso.During the connection flow, a Global Administrator first grants application permissions directly to the app so that it can access company data in a non-interactive fashion, without the presence of a signed-in user. La maggior parte della logica di questo esempio mostra come ottenere questo flusso di connessione usando l'endpoint del consenso dell'amministratore di Identity Platform.The majority of the logic in this sample shows how to achieve this connection flow by using the identity platform's admin consent endpoint.

Diagramma che mostra l'app UserSync con tre elementi locali che si connettono ad Azure, con Start.Auth che acquisisce un token in modo interattivo per connettersi ad Azure AD, AccountController che ottiene il consenso dell'amministratore per connettersi ad Azure AD e SyncController che legge l'utente per connettersi a Microsoft Graph.

Per altre informazioni sui concetti usati in questo esempio, leggere la documentazione del protocollo delle credenziali client per Identity Platform.For more information on the concepts used in this sample, read the client credentials protocol documentation for the identity platform.

Clonare o scaricare questo repositoryClone or download this repository

Dalla shell o dalla riga di comando immettere questo comando:From your shell or command line, enter this command:

git clone https://github.com/Azure-Samples/active-directory-dotnet-daemon-v2.git

In alternativa scaricare l'esempio in un file ZIP.Or download the sample in a zip file.

Registrare l'applicazioneRegister your application

L'esempio contiene un unico progetto.This sample has one project. Per registrare l'applicazione con il tenant di Azure AD è possibile:To register the application with your Azure AD tenant, you can either:

Se si vuole usare questa automazione:If you want to use the automation:

  1. In Windows eseguire PowerShell e passare alla radice della directory clonata.On Windows, run PowerShell and go to the root of the cloned directory.

  2. Eseguire questo comando:Run this command:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Force
    
  3. Eseguire lo script per creare l'applicazione di Azure AD e configurare di conseguenza il codice dell'applicazione di esempio:Run the script to create your Azure AD application and configure the code of the sample application accordingly:

    .\AppCreationScripts\Configure.ps1
    

    Altre modalità di esecuzione degli script sono descritte in Script di creazione app.Other ways of running scripts are described in App creation scripts.

  4. Aprire la soluzione in Visual Studio e selezionare Avvia per eseguire il codice.Open the Visual Studio solution and select Start to run the code.

Se non si vuole usare l'automazione, seguire i passaggi delle sezioni seguenti.If you don't want to use the automation, use the steps in the following sections.

Scegliere il tenant di Azure ADChoose the Azure AD tenant

  1. Accedere al portale di Azure.Sign in to the Azure portal.
  2. Se si accede a più tenant, usare il filtro Directory e sottoscrizione nel menu in alto e selezionare il tenant in cui si vuole registrare un'applicazione.

Registrare l'app client (dotnet-web-daemon-v2)Register the client app (dotnet-web-daemon-v2)

  1. Cercare e selezionare Azure Active Directory.Search for and select Azure Active Directory.

  2. In Gestisci selezionare Registrazioni app > Nuova registrazione.Under Manage, select App registrations > New registration.

  3. Immettere un Nome per l'applicazione, ad esempio dotnet-web-daemon-v2.Enter a Name for your application, for example dotnet-web-daemon-v2. Tale nome, che potrebbe essere visualizzato dagli utenti dell'app, può essere modificato in un secondo momento.Users of your app might see this name, and you can change it later.

  4. Nella sezione Tipi di account supportati selezionare Account in qualsiasi directory dell'organizzazione.In the Supported account types section, select Accounts in any organizational directory.

  5. Nella sezione URI di reindirizzamento (facoltativo) selezionare Web nella casella combinata e immettere https://localhost:44316/ e https://localhost:44316/Account/GrantPermissions come URI di reindirizzamento.In the Redirect URI (optional) section, select Web in the combo box and enter https://localhost:44316/ and https://localhost:44316/Account/GrantPermissions as Redirect URIs.

    Se sono presenti più URI di reindirizzamento, è necessario aggiungerli dalla scheda Autenticazione dopo che l'app sarà stata creata correttamente.If there are more than two redirect URIs, you'll need to add them from the Authentication tab later, after the app is created successfully.

  6. Selezionare Registra per creare l'applicazione.Select Register to create the application.

  7. Nella pagina Panoramica dell'app trovare il valore del campo ID applicazione (client) e prenderne nota per usarlo in seguito.On the app's Overview page, find the Application (client) ID value and record it for later use. Sarà necessario per configurare il file di configurazione di Visual Studio per questo progetto.You'll need it to configure the Visual Studio configuration file for this project.

  8. In Gestisci selezionare Autenticazione.Under Manage, select Authentication.

  9. Impostare URL di disconnessione del canale anteriore su https://localhost:44316/Account/EndSession .Set Front-channel logout URL to https://localhost:44316/Account/EndSession.

  10. Nella sezione Concessione implicita e flussi ibridi selezionare Token di accesso e Token ID.In the Implicit grant and hybrid flows section, select Access tokens and ID tokens. Per questo esempio è necessario abilitare il flusso di concessione implicita per consentire all'utente di accedere e chiamare un'API.This sample requires the implicit grant flow to be enabled to sign in the user and call an API.

  11. Selezionare Salva.Select Save.

  12. In Gestisci, selezionare Certificati e segreti.Under Manage, select Certificates & secrets.

  13. Nella sezione Segreti client selezionare Nuovo segreto client.In the Client secrets section, select New client secret.

  14. Immettere una descrizione della chiave, ad esempio segreto dell'app.Enter a key description (for example, app secret).

  15. Selezionare una durata della chiave scegliendo Tra 1 anno, Tra 2 anni o Non scade mai.Select a key duration of either In 1 year, In 2 years, or Never Expires.

  16. Selezionare Aggiungi.Select Add. Prendere nota del valore della chiave e conservarlo in un luogo sicuro.Record the key value in a safe location. Questa chiave sarà necessaria in seguito per configurare il progetto in Visual Studio.You'll need this key later to configure the project in Visual Studio.

  17. In Gestisci selezionare Autorizzazioni API > Aggiungi un'autorizzazione.Under Manage, select API permissions > Add a permission.

  18. Nella sezione API Microsoft più usate selezionare Microsoft Graph.In the Commonly used Microsoft APIs section, select Microsoft Graph.

  19. Nella sezione Autorizzazioni dell'applicazione verificare che siano selezionate le autorizzazioni corrette: User.Read.All.In the Application permissions section, ensure that the right permissions are selected: User.Read.All.

  20. Selezionare Aggiungi autorizzazioni.Select Add permissions.

Configurare l'esempio per l'uso del tenant di Azure ADConfigure the sample to use your Azure AD tenant

Nei passaggi seguenti ClientID corrisponde a "ID applicazione" o AppId.In the following steps, ClientID is the same as "application ID" or AppId.

Aprire la soluzione in Visual Studio per configurare i progetti.Open the solution in Visual Studio to configure the projects.

Configurare il progetto clientConfigure the client project

Se sono stati usati gli script di installazione, saranno state applicate automaticamente le modifiche seguenti.If you used the setup scripts, the following changes will have been applied for you.

  1. Aprire il file UserSync\Web.Config.Open the UserSync\Web.Config file.
  2. Trovare la chiave dell'app ida:ClientId.Find the app key ida:ClientId. Sostituire il valore esistente con l'ID dell'applicazione dotnet-web-daemon-v2 copiato dal portale di Azure.Replace the existing value with the application ID of the dotnet-web-daemon-v2 application copied from the Azure portal.
  3. Trovare la chiave dell'app ida:ClientSecret.Find the app key ida:ClientSecret. Sostituire il valore esistente con la chiave salvata durante la creazione dell'app dotnet-web-daemon-v2 nel portale di Azure.Replace the existing value with the key that you saved during the creation of the dotnet-web-daemon-v2 app in the Azure portal.

Eseguire l'esempioRun the sample

Pulire la soluzione, ricompilarla ed eseguire l'applicazione UserSync, quindi accedere come amministratore nel tenant di Azure AD.Clean the solution, rebuild the solution, run the UserSync application, and then sign in as an administrator in your Azure AD tenant. Se non si dispone di un tenant di Azure AD per il test, è possibile seguire queste istruzioni per ottenerne uno.If you don't have an Azure AD tenant for testing, you can follow these instructions to get one.

Quando si accede, l'app chiede prima di tutto l'autorizzazione per consentire l'accesso e per leggere il profilo utente.When you sign in, the app first asks you for permission to sign you in and read your user profile. Con questo consenso si conferma all'app di essere un utente aziendale.This consent allows the app to ensure that you're a business user.

Consenso dell'utente

L'app prova quindi a sincronizzare un elenco di utenti del tenant di Azure AD, tramite Microsoft Graph.The app then tries to sync a list of users from your Azure AD tenant, via Microsoft Graph. Se il tentativo non riesce, chiede all'amministratore del tenant di connettere il tenant all'app.If it can't, it asks you (the tenant administrator) to connect your tenant to the app.

L'app chiede quindi l'autorizzazione per leggere l'elenco di utenti nel tenant.The app then asks for permission to read the list of users in your tenant.

Consenso dell'amministratore

Dopo aver concesso l'autorizzazione, si viene disconnessi dall'app.After you grant permission, you're signed out from the app. La disconnessione assicura che tutti i token di accesso esistenti per Microsoft Graph vengano rimossi dalla cache dei token.This sign-out ensures that any existing access tokens for Microsoft Graph is removed from the token cache. Quando si esegue di nuovo l'accesso, il nuovo token ottenuto avrà le autorizzazioni necessarie per effettuare chiamate a Microsoft Graph.When you sign in again, the fresh token that's obtained will have the necessary permissions to make calls to Microsoft Graph.

Quando si concede l'autorizzazione, l'app può eseguire query per trovare gli utenti in qualsiasi punto.When you grant the permission, the app can then query for users at any point. Per verificarlo, selezionare il pulsante Sincronizza utenti e aggiornare l'elenco di utenti.You can verify this by selecting the Sync Users button and refreshing the list of users. Provare ad aggiungere o a rimuovere un utente e quindi a risincronizzare l'elenco.Try adding or removing a user and resyncing the list. Si noti però che l'app sincronizza solo la prima pagina di utenti.(But note that the app syncs only the first page of users.)

Informazioni sul codiceAbout the code

Il codice pertinente per questo esempio si trova nei file seguenti:The relevant code for this sample is in the following files:

  • App_Start\Startup.Auth.cs, Controllers\AccountController.cs: accesso iniziale.App_Start\Startup.Auth.cs, Controllers\AccountController.cs: Initial sign-in. In particolare, le azioni sul controller hanno un attributo Authorize, che forza l'accesso dell'utente.In particular, the actions on the controller have an Authorize attribute, which forces the user to sign in. L'applicazione usa il flusso del codice di autorizzazione per far accedere l'utente.The application uses the authorization code flow to sign in the user.
  • Controllers\SyncController.cs: sincronizzazione dell'elenco di utenti con l'archivio in memoria locale.Controllers\SyncController.cs: Syncing the list of users to the local in-memory store.
  • Controllers\UserController.cs: visualizzazione dell'elenco di utenti dall'archivio in memoria locale.Controllers\UserController.cs: Displaying the list of users from the local in-memory store.
  • Controllers\AccountController.cs: acquisizione delle autorizzazioni dall'amministratore del tenant tramite l'endpoint di consenso dell'amministratore.Controllers\AccountController.cs: Acquiring permissions from the tenant admin by using the admin consent endpoint.

Ricreare l'app di esempioRe-create the sample app

  1. In Visual Studio creare un nuovo progetto di applicazione Web ASP.NET (.NET Framework) in Visual C# .In Visual Studio, create a new Visual C# ASP.NET Web Application (.NET Framework) project.
  2. Nella schermata successiva scegliere il modello di progetto MVC.On the next screen, choose the MVC project template. Aggiungere anche la cartella e i riferimenti principali per API Web, perché in seguito verrà aggiunto un controller API Web.Also add folder and core references for Web API, because you'll add a web API controller later. Lasciare la modalità di autenticazione del progetto selezionata come impostazione predefinita: Nessuna autenticazione.Leave the project's chosen authentication mode as the default: No Authentication.
  3. Selezionare il progetto nella finestra Esplora soluzioni e premere F4.Select the project in the Solution Explorer window and select the F4 key.
  4. Nelle proprietà del progetto impostare SSL abilitato su True.In the project properties, set SSL Enabled to True. Prendere nota del valore di URL SSL.Note the information in SSL URL. Sarà necessario quando si configura la registrazione di questa applicazione nel portale di Azure.You'll need it when configuring this application's registration in the Azure portal.
  5. Aggiungere i seguenti pacchetti NuGet del middleware OWIN ASP.NET:Add the following ASP.NET OWIN middleware NuGet packages:
    • Microsoft.Owin.Security.ActiveDirectoryMicrosoft.Owin.Security.ActiveDirectory
    • Microsoft.Owin.Security.CookiesMicrosoft.Owin.Security.Cookies
    • Microsoft.Owin.Host.SystemWebMicrosoft.Owin.Host.SystemWeb
    • Microsoft.IdentityModel.Protocol.ExtensionsMicrosoft.IdentityModel.Protocol.Extensions
    • Microsoft.Owin.Security.OpenIdConnectMicrosoft.Owin.Security.OpenIdConnect
    • Microsoft.Identity.ClientMicrosoft.Identity.Client
  6. Nella cartella App_Start:In the App_Start folder:
    1. Creare una classe denominata Startup.Auth.cs.Create a class called Startup.Auth.cs.
    2. Rimuovere .App_Start dal nome dello spazio dei nomi.Remove .App_Start from the namespace name.
    3. Sostituire il codice della classe Startup con il codice dello stesso file dell'app di esempio.Replace the code for the Startup class with the code from the same file of the sample app. Assicurarsi di inserire l'intera definizione della classe.Be sure to take the whole class definition. La definizione cambia da public class Startup a public partial class Startup.The definition changes from public class Startup to public partial class Startup.
  7. In Startup.Auth.cs risolvere i riferimenti mancanti aggiungendo istruzioni using come suggerito da IntelliSense di Visual Studio.In Startup.Auth.cs, resolve missing references by adding using statements as suggested by Visual Studio IntelliSense.
  8. Fare clic con il pulsante destro del mouse sul progetto, scegliere Aggiungi, quindi selezionare Classe.Right-click the project, select Add, and then select Class.
  9. Nella casella di ricerca immettere OWIN.In the search box, enter OWIN. Viene visualizzata l'opzione Classe di avvio di OWIN.OWIN Startup class appears as a selection. Selezionarla e assegnare alla classe il nome Startup.cs.Select it, and name the class Startup.cs.
  10. In Startup.cs sostituire il codice della classe Startup con il codice dello stesso file dell'app di esempio.In Startup.cs, replace the code for the Startup class with the code from the same file of the sample app. Anche in questo caso, la definizione cambia da public class Startup a public partial class Startup.Again, note that the definition changes from public class Startup to public partial class Startup.
  11. Nella cartella Models aggiungere una nuova classe denominata MsGraphUser.cs.In the Models folder, add a new class called MsGraphUser.cs. Sostituire l'implementazione con il contenuto del file con lo stesso nome dell'esempio.Replace the implementation with the contents of the file of the same name from the sample.
  12. Aggiungere una nuova istanza di Controller MVC 5 - Vuoto denominata AccountController.Add a new MVC 5 Controller - Empty instance called AccountController. Sostituire l'implementazione con il contenuto del file con lo stesso nome dell'esempio.Replace the implementation with the contents of the file of the same name from the sample.
  13. Aggiungere una nuova istanza di Controller MVC 5 - Vuoto denominata UserController.Add a new MVC 5 Controller - Empty instance called UserController. Sostituire l'implementazione con il contenuto del file con lo stesso nome dell'esempio.Replace the implementation with the contents of the file of the same name from the sample.
  14. Aggiungere una nuova istanza di Controller Web API 2 - Vuoto denominata SyncController.Add a new Web API 2 Controller - Empty instance called SyncController. Sostituire l'implementazione con il contenuto del file con lo stesso nome dell'esempio.Replace the implementation with the contents of the file of the same name from the sample.
  15. Per l'interfaccia utente, nella cartella Views\Account aggiungere tre istanze di visualizzazioni vuote (senza modello) denominate GrantPermissions, Index e UserMismatch.For the user interface, in the Views\Account folder, add three Empty (without model) Views instances named GrantPermissions, Index, and UserMismatch. Aggiungerne una denominata Index nella cartella Views\User.Add and one named Index in the Views\User folder. Sostituire l'implementazione con il contenuto del file con lo stesso nome dell'esempio.Replace the implementation with the contents of the file of the same name from the sample.
  16. Aggiornare Shared_Layout.cshtml e Home\Index.cshtml per collegare correttamente le varie visualizzazioni tra loro.Update Shared_Layout.cshtml and Home\Index.cshtml to correctly link the various views together.

Distribuire l'esempio in AzureDeploy the sample to Azure

Questo progetto include i progetti di app Web e API Web.This project has web app and web API projects. Per distribuirli nei siti Web di Azure, seguire questi passaggi per ognuno:To deploy them to Azure websites, take the following steps for each one:

  1. Creare un sito Web di Azure.Create an Azure website.
  2. Pubblicare l'app Web e le API Web nel sito Web.Publish the web app and web APIs to the website.
  3. Aggiornare i client per chiamare il sito Web invece di IIS Express.Update clients to call the website instead of IIS Express.

Creare e pubblicare dotnet-web-daemon-v2 in un sito Web di AzureCreate and publish dotnet-web-daemon-v2 to an Azure website

  1. Accedere al portale di Azure.Sign in to the Azure portal.
  2. Nell'angolo in alto a sinistra della schermata selezionare Crea una risorsa.In the upper-left corner, select Create a resource.
  3. Selezionare Web > App Web e quindi assegnare un nome al sito Web,Select Web > Web App, and then give your website a name. ad esempio dotnet-web-daemon-v2-contoso.azurewebsites.net.For example, name it dotnet-web-daemon-v2-contoso.azurewebsites.net.
  4. Selezionare le informazioni per la sottoscrizione, il gruppo di risorse e il piano e la località del servizio app.Select the information for Subscription, Resource group, and App service plan and location. Per Sistema operativo scegliere Windows e per Pubblica scegliere Codice.OS is Windows, and Publish is Code.
  5. Selezionare Crea e attendere che venga creato il servizio app.Select Create and wait for the app service to be created.
  6. Quando si riceve la notifica Distribuzione riuscita, selezionare Vai alla risorsa per passare al servizio app appena creato.When you get the Deployment succeeded notification, select Go to resource to go to the newly created app service.
  7. Dopo aver creato il sito Web, individuarlo nel Dashboard e selezionarlo per aprire la schermata Panoramica del servizio app.After the website is created, find it in the Dashboard and select it to open the app service's Overview screen.
  8. Nella scheda Panoramica del servizio app scaricare il profilo di pubblicazione selezionando il collegamento Recupera profilo di pubblicazione, quindi salvarlo.From the Overview tab of the app service, download the publish profile by selecting the Get publish profile link and save it. È possibile usare altri meccanismi di distribuzione, ad esempio dal controllo del codice sorgente.You can use other deployment mechanisms, such as deploying from source control.
  9. Passare a Visual Studio e quindi:Switch to Visual Studio and then:
    1. Passare al progetto dotnet-web-daemon-v2.Go to the dotnet-web-daemon-v2 project.
    2. Fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni e quindi scegliere Pubblica.Right-click the project in Solution Explorer, and then select Publish.
    3. Selezionare Importa profilo sulla barra inferiore e importare il profilo di pubblicazione scaricato in precedenza.Select Import Profile on the bottom bar, and import the publish profile that you downloaded earlier.
  10. Selezionare Configura.Select Configure.
  11. Nella scheda Connessione aggiornare l'URL di destinazione in modo che usi "https".On the Connection tab, update the destination URL so that it uses "https." Ad esempio, usare https://dotnet-web-daemon-v2-contoso.azurewebsites.net.For example, use https://dotnet-web-daemon-v2-contoso.azurewebsites.net. Selezionare Avanti.Select Next.
  12. Nella scheda Impostazioni verificare che l'opzione Abilita autenticazione a livello aziendale sia deselezionata.On the Settings tab, make sure that Enable Organizational Authentication is cleared.
  13. Selezionare Salva.Select Save. Selezionare Pubblica nella schermata principale.Select Publish on the main screen.

Visual Studio pubblicherà il progetto e aprirà automaticamente un browser all'URL corrispondente.Visual Studio will publish the project and automatically open a browser to the project's URL. Se viene visualizzata la pagina Web predefinita del progetto, la pubblicazione ha avuto esito positivo.If you see the default webpage of the project, the publication was successful.

Aggiornare la registrazione dell'applicazione nel tenant di Azure AD per dotnet-web-daemon-v2Update the Azure AD tenant application registration for dotnet-web-daemon-v2

  1. Tornare al portale di Azure.Go back to the Azure portal.
  2. Nel riquadro sinistro selezionare il servizio Azure Active Directory e quindi Registrazioni app.In the left pane, select the Azure Active Directory service, and then select App registrations.
  3. Selezionare l'applicazione dotnet-web-daemon-v2.Select the dotnet-web-daemon-v2 application.
  4. Nella pagina Autenticazione per l'applicazione aggiornare i campi URL di disconnessione del canale front-service con l'indirizzo del servizio.On the Authentication page for your application, update the Front-channel logout URL fields with the address of your service. Ad esempio, usare https://dotnet-web-daemon-v2-contoso.azurewebsites.net/Account/EndSession.For example, use https://dotnet-web-daemon-v2-contoso.azurewebsites.net/Account/EndSession.
  5. Nel menu Personalizzazione aggiornare il valore di URL pagina iniziale impostandolo sull'indirizzo del servizio.From the Branding menu, update the Home page URL to the address of your service. Ad esempio, usare https://dotnet-web-daemon-v2-contoso.azurewebsites.net.For example, use https://dotnet-web-daemon-v2-contoso.azurewebsites.net.
  6. Salvare la configurazione.Save the configuration.
  7. Aggiungere lo stesso URL nell'elenco di valori del menu Autenticazione > URI di reindirizzamento.Add the same URL in the list of values of the Authentication > Redirect URIs menu. Se sono presenti più URL di reindirizzamento, assicurarsi che vi sia una nuova voce che usa l'URI del servizio app per ognuno di essi.If you have multiple redirect URLs, make sure that there's a new entry that uses the app service's URI for each redirect URL.

Pulire le risorseClean up resources

Quando non è più necessario, eliminare l'oggetto app creato nel passaggio Registrare l'applicazione.When no longer needed, delete the app object that you created in the Register your application step. Per rimuovere l'applicazione, seguire le istruzioni riportate in Rimuovere un'applicazione creata dall'utente o dalla relativa organizzazione.To remove the application, follow the instructions in Remove an application authored by you or your organization.

Ottenere aiutoGet help

Usare Microsoft Q&A per ottenere supporto dalla community.Use Microsoft Q&A to get support from the community. Porre prima le domande su Microsoft Q&A ed esaminare i problemi esistenti per verificare se qualcuno ha già posto la domanda in precedenza.Ask your questions on Microsoft Q&A first, and browse existing issues to see if someone has asked your question before. Assicurarsi che le domande o i commenti siano contrassegnati con "azure-ad-adal-deprecation", "azure-ad-msal" e "dotnet-standard".Make sure that your questions or comments are tagged with "azure-ad-adal-deprecation," "azure-ad-msal," and "dotnet-standard."

Se nell'esempio si trova un bug, segnalarlo nella pagina di problemi di GitHub.If you find a bug in the sample, please raise the issue on GitHub Issues.

Se in MSAL.NET si trova un bug, segnalarlo nella pagina di problemi di GitHub MSAL.NET.If you find a bug in MSAL.NET, please raise the issue on MSAL.NET GitHub Issues.

Per inviare suggerimenti, visitare la pagina User Voice.To provide a recommendation, go to the User Voice page.

Passaggi successiviNext steps

Altre informazioni sulla creazione di app daemon che usano Microsoft Identity Platform per accedere ad API Web protette:Learn more about building daemon apps that use the Microsoft identity platform to access protected web APIs: