Guida introduttiva: Proteggere un'API Web di ASP.NET Core con Microsoft Identity Platform
Questa guida introduttiva usa un esempio di codice dell'API Web core di ASP.NET per illustrare come limitare l'accesso alle risorse agli account autorizzati. L'esempio usa ASP.NET'identità di base che interagisce con Microsoft Authentication Library (MSAL) per gestire l'autenticazione.
Prerequisiti
- Account Azure con una sottoscrizione attiva. Se non ne hai già uno, crea gratuitamente un account.
- Requisito minimo di .NET 6.0 SDK
- Visual Studio 2022 o Visual Studio Code
Registrare l'applicazione e gli identificatori di record
Suggerimento
I passaggi descritti in questo articolo possono variare leggermente in base al portale da cui si inizia.
Per completare la registrazione, specificare un 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 come almeno uno 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 Applicazioni> di identità>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 ?
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 necessari.
In Gestisci selezionare Esporre un'API > Aggiungi un ambito. Accettare l'URI ID applicazione proposto selezionando Salva e continua.
(api://{clientId})
{clientId}
è il valore registrato dalla pagina Panoramica. Immettere quindi le informazioni seguenti:- In Nome ambito immettere
Forecast.Read
. - Per Utenti che possono fornire il consenso assicurarsi che sia selezionata l'opzione Amministratori e utenti.
- Nella casella Amministrazione nome visualizzato del consenso immettere
Read forecast data
. - Nella casella Amministrazione descrizione del consenso immettere
Allows the application to read weather forecast data
. - Nella casella Nome visualizzato consenso utente immettere
Read forecast data
. - Nella casella Descrizione consenso utente immettere
Allows the application to read weather forecast data
. - Assicurarsi che Lo stato sia impostato su Abilitato.
- In Nome ambito immettere
Seleziona Aggiungi ambito. Se l'ambito è stato immesso correttamente, viene 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 e 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
appsettings.json
il file, che contiene il frammento di codice seguente:{ "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 quanto segue
key
:ClientId
- Identificatore dell'applicazione, detto anche client. Sostituire ilvalue
testo tra virgolette con ID applicazione (client) registrato in precedenza nella pagina Panoramica dell'applicazione registrata.TenantId
- Identificatore del tenant in cui è registrata l'applicazione. Sostituire ilvalue
testo tra virgolette con il valore ID directory (tenant) registrato in precedenza nella pagina Panoramica dell'applicazione registrata.
Eseguire l'applicazione di esempio
Eseguire il comando seguente per avviare l'app:
dotnet run
Viene visualizzato un output simile all'esempio seguente:
... info: Microsoft.Hosting.Lifetime[14] Now listening on: https://localhost:{port} ...
Registrare il numero di porta nell'URL
https://localhost:{port}
.Per verificare che l'endpoint sia protetto, usare il comando cURL seguente in Bash per inviare una richiesta HTTP GET non autenticata in Bash:
curl -X GET https://localhost:5001/weatherforecast -ki
La risposta prevista è 401 Non autorizzata 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
Contenuto correlato
- Procedura: Chiamare un'API Web ASP.NET Core con cURL
- Per altre informazioni, vedere creare questa API Web da zero con la serie seguente- Esercitazione: Registrare un'API Web con Microsoft Identity Platform