Avvio rapido: Proteggere un'API Web ASP.NET Core con Microsoft Identity Platform
Questo argomento di avvio rapido impiega un esempio di codice dell'API Web ASP.NET Core per dimostrare come limitare l'accesso alle risorse agli account autorizzati. L'esempio impiega Identità di ASP.NET Core che interagisce con MSAL (Microsoft Authentication Library) per gestire l'autenticazione.
Prerequisiti
- Account Azure con una sottoscrizione attiva. Se non si ha un account, Crearne uno gratuito.
- Requisito minimo di .NET 8.0 SDK
- Visual Studio 2022 o Visual Studio Code
Registrare l'applicazione e gli identificatori del record
Suggerimento
La procedura descritta in questo articolo può variare leggermente in base al portale di partenza.
Per completare la registrazione indicare il nome dell'applicazione e specificare i tipi di account supportati. Dopo la registrazione, nella pagina Panoramica dell'applicazione vengono visualizzati gli identificatori necessari nel codice sorgente dell'applicazione.
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 in cui si vuole registrare l'applicazione dal menu Directory e sottoscrizioni.
Passare a Identità>Applicazioni>Registrazioni app.
Seleziona Nuova registrazione.
Immettere un nome per l'applicazione, ad esempio NewWebAPI1.
Per Tipi di account supportati selezionare Account solo in questa directory dell'organizzazione. Per informazioni sui diversi tipi di account selezionare l'opzione Suggerimenti per la scelta.
Selezionare Registra.
Al termine della registrazione viene visualizzato il riquadro Panoramica dell'applicazione. Registrare l'ID directory (tenant) e l'ID applicazione (client) da usare nel codice sorgente dell'applicazione.
Nota
I tipi di account supportati possono essere modificati facendo riferimento a Modificare gli account supportati da un'applicazione.
Esporre un'API
Dopo aver registrato l'API, è possibile configurarne l'autorizzazione definendo gli ambiti esposti dall'API alle applicazioni client. Le applicazioni client richiedono l'autorizzazione per eseguire operazioni passando un token di accesso insieme alle relative richieste all'API Web protetta. L'API Web esegue quindi l'operazione richiesta solo se il token di accesso ricevuto contiene gli ambiti richiesti.
In Gestisci selezionare Esporre un'API > Aggiungi un ambito . Accettare l'URI ID applicazione
(api://{clientId})
proposto selezionando Salva e continua.{clientId}
è il valore registrato dalla pagina Panoramica. Immettere quindi le informazioni seguenti:- Per Nome ambito, immettere
Forecast.Read
. - Per Utenti che possono fornire il consenso assicurarsi che sia selezionata l'opzione Amministratori e utenti.
- Nella casella Nome visualizzato del consenso amministratore immettere
Read forecast data
. - Nella casella di Descrizione del consenso amministratore immettere
Allows the application to read weather forecast data
. - Nella casella Nome visualizzato del consenso utente immettere
Read forecast data
. - Nella casella di Descrizione del consenso utente immettere
Allows the application to read weather forecast data
. - Assicurarsi che lo Stato sia impostato su Abilitato.
- Per Nome ambito, immettere
Seleziona Aggiungi ambito. Se l'ambito è stato immesso correttamente, verrà elencato nel riquadro Esporre un'API.
Clonare o scaricare l'applicazione 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-docs-code-dotnet.git
Scaricare il file .zip. Estrarlo in un percorso di file in cui la lunghezza del nome è inferiore a 260 caratteri.
Configurare l'applicazione di esempio ASP.NET Core
Nell'IDE, aprire la cartella del progetto ms-identity-docs-code-dotnet/web-api, contenente l'esempio.
Aprire il file
appsettings.json
, che contiene il seguente frammento di codice:{ "AzureAd": { "Instance": "https://login.microsoftonline.com/", "TenantId": "Enter the tenant ID obtained from the Microsoft Entra admin center", "ClientId": "Enter the client ID obtained from the Microsoft Entra admin center", "Scopes": "Forecast.Read" }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*" }
Trovare
key
:ClientId
- L'identificatore dell'applicazione, detto anche client. Sostituire il testo tra virgolettevalue
con ID applicazione (client) registrato in precedenza dalla pagina Panoramica dell'applicazione registrata.TenantId
- L'identificatore del tenant dove è registrata l'applicazione. Sostituire il testo tra virgolettevalue
con il valore ID directory (tenant) registrato in precedenza dalla pagina Panoramica dell'applicazione registrata.
Eseguire l'applicazione di esempio
Eseguire il comando seguente per avviare l'app:
dotnet run
Verrà visualizzato un output simile all'esempio seguente:
... info: Microsoft.Hosting.Lifetime[14] Now listening on: http://localhost:{port} ...
Registrare il numero di porta nell'URL
http://localhost:{port}
.Per verificare che l'endpoint sia protetto, aggiornare l'URL di base nel comando cURL seguente in modo che corrisponda a quello ricevuto nel passaggio precedente e quindi eseguire il comando:
curl -X GET https://localhost:5001/weatherforecast -ki
La risposta prevista è "401 Non autorizzato" con output simile al seguente:
user@host:~$ curl -X GET https://localhost:5001/weatherforecast -ki HTTP/2 401 date: Fri, 23 Sep 2023 23:34:24 GMT server: Kestrel www-authenticate: Bearer content-length: 0
Passaggi successivi
Passare all'articolo successivo per informazioni su come chiamare l'API Web protetta usando cURL.