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

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.

  1. Accedere all'interfaccia di amministrazione di Microsoft Entra come almeno uno sviluppatore di applicazioni.

  2. 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.

  3. Passare a Applicazioni> di identità>Registrazioni app.

  4. Seleziona Nuova registrazione.

  5. Immettere un nome per l'applicazione, ad esempio NewWebAPI1.

  6. Per Tipi di account supportati selezionare Account solo in questa directory dell'organizzazione. Per informazioni sui diversi tipi di account, selezionare l'opzione ?

  7. Selezionare Registra.

    Screenshot che mostra come immettere un nome e selezionare il tipo di account.

  8. 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.

    Screenshot che mostra i valori dell'identificatore nella pagina di panoramica.

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.

  1. 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:

    1. In Nome ambito immettere Forecast.Read.
    2. Per Utenti che possono fornire il consenso assicurarsi che sia selezionata l'opzione Amministratori e utenti.
    3. Nella casella Amministrazione nome visualizzato del consenso immettere Read forecast data.
    4. Nella casella Amministrazione descrizione del consenso immettere Allows the application to read weather forecast data.
    5. Nella casella Nome visualizzato consenso utente immettere Read forecast data.
    6. Nella casella Descrizione consenso utente immettere Allows the application to read weather forecast data.
    7. Assicurarsi che Lo stato sia impostato su Abilitato.
  2. Seleziona Aggiungi ambito. Se l'ambito è stato immesso correttamente, viene elencato nel riquadro Esporre un'API .

    Screenshot che mostra i valori dei campi quando si aggiunge l'ambito a 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

  1. Nell'IDE aprire la cartella del progetto ms-identity-docs-code-dotnet /web-api contenente l'esempio.

  2. 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 il value 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 il value testo tra virgolette con il valore ID directory (tenant) registrato in precedenza nella pagina Panoramica dell'applicazione registrata.

Eseguire l'applicazione di esempio

  1. Eseguire il comando seguente per avviare l'app:

    dotnet run
    
  2. 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} .

  3. 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