Condividi tramite


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

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.

  1. Accedere all'interfaccia di amministrazione di Microsoft Entra almeno come 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 Identità>Applicazioni>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 Suggerimenti per la scelta.

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

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

    1. Per 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 Nome visualizzato del consenso amministratore immettere Read forecast data.
    4. Nella casella di Descrizione del consenso amministratore immettere Allows the application to read weather forecast data.
    5. Nella casella Nome visualizzato del consenso utente immettere Read forecast data.
    6. Nella casella di Descrizione del 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, verrà 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, 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 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 virgolette value 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 virgolette value con il valore ID directory (tenant) registrato in precedenza dalla pagina Panoramica dell'applicazione registrata.

Eseguire l'applicazione di esempio

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

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

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