Condividi tramite


Aggiungere l'autenticazione quando si chiamano API personalizzate da App per la logica di Azure

Per migliorare la sicurezza delle chiamate alle API, è possibile configurare l'autenticazione di Microsoft Entra tramite il portale di Azure in modo da non dover aggiornare il codice. Oppure, è possibile richiedere e applicare l'autenticazione attraverso il codice dell'API.

È possibile aggiungere l'autenticazione nei modi seguenti:

  • Nessuna modifica al codice: proteggere l'API con l'ID Entra di Microsoft tramite il portale di Azure, quindi non è necessario aggiornare il codice o ridistribuire l'API.

    Nota

    Per impostazione predefinita, l'autenticazione di Microsoft Entra selezionata nel portale di Azure non fornisce autorizzazioni con granularità fine. Ad esempio, questa autenticazione blocca l'API a un tenant specifico, non a un determinato utente o app.

  • Aggiornare il codice dell'API: proteggere l'API applicando l'autenticazione del certificato, l'autenticazione di base o l'autenticazione di Microsoft Entra tramite codice.

Autenticare le chiamate all'API senza modificare il codice

Ecco i passaggi generali per questo metodo:

  1. Creare due identità dell'applicazione Microsoft Entra: una per la risorsa dell'app per la logica e una per l'app Web (o app per le API).

  2. Per autenticare le chiamate all'API, usare le credenziali (ID client e segreto) per l'entità servizio associata all'identità dell'applicazione Microsoft Entra per l'app per la logica.

  3. Includere gli ID applicazione nella definizione del flusso di lavoro dell'app per la logica.

Parte 1: Creare un'identità dell'applicazione Microsoft Entra per l'app per la logica

La risorsa dell'app per la logica usa questa identità dell'applicazione Microsoft Entra per eseguire l'autenticazione con Microsoft Entra ID. È sufficiente impostare l'identità una sola volta per la directory. Ad esempio, si può scegliere di usare la stessa identità per tutte le app per la logica, anche se è possibile creare identità univoche per ogni app per la logica. È possibile impostare queste identità nel Portale di Azure o usare PowerShell.

  1. Nella portale di Azure selezionare Microsoft Entra ID.

  2. Verificare di essere nella stessa directory dell'app Web o app per le API.

    Suggerimento

    Per passare da una directory all'altra, scegliere il profilo e selezionare un'altra directory. In alternativa, selezionare Panoramica>Cambia directory.

  3. Nel menu della directory, in Gestisci, selezionare Registrazioni app> Nuova registrazione.

    L'elenco Tutte le registrazioni mostra tutte le registrazioni dell'app nella directory. Per visualizzare solo le registrazioni dell'app, selezionare Applicazioni di proprietà.

    Screenshot che mostra portale di Azure con l'istanza di Microsoft Entra, il riquadro

  4. Specificare un nome rivolto all'utente per l'identità dell'applicazione dell'app per la logica. Selezionare i tipi di account supportati. Per URI di reindirizzamento selezionare Web, specificare un URL univoco in cui restituire la risposta di autenticazione e selezionare Registra.

    Screenshot che mostra il riquadro

    L'elenco Applicazioni di proprietà include ora l'identità dell'applicazione creata. Se questa identità non viene visualizzata, sulla barra degli strumenti selezionare Aggiorna.

    Screenshot che mostra l'identità dell'applicazione per l'app per la logica.

  5. Nell'elenco registrazioni dell'app selezionare la nuova identità dell'applicazione.

  6. Nel menu di spostamento dell'identità dell'applicazione selezionare Panoramica.

  7. Nel riquadro Panoramica, in Informazioni di base copiare e salvare l'IDapplicazione da usare come "ID client" per l'app per la logica nella parte 3.

    Screenshot che mostra l'ID applicazione (client) sottolineato.

  8. Dal menu di spostamento dell'identità dell'applicazione selezionare Certificati e segreti.

  9. Nella scheda Segreti client selezionare Nuovo segreto client.

  10. Per Descrizione specificare un nome per il segreto. In Scadenza selezionare una durata per il segreto. Al termine, selezionare Aggiungi.

    Il segreto creato funge da "segreto" o password dell'identità dell'applicazione per l'app per la logica.

    Screenshot che mostra la creazione di segreti per l'identità dell'applicazione.

    Nel riquadro Certificati e segreti, in Segreti client, il segreto viene ora visualizzato insieme a un valore segreto e a un ID segreto.

    Screenshot che mostra il valore del segreto e l'ID segreto con il pulsante Copia per il valore segreto selezionato.

  11. Copiare il valore del segreto per usarlo in un secondo momento. Quando si configura l'app per la logica nella parte 3, questo valore viene specificato come "segreto" o password.

Parte 2: Creare un'identità dell'applicazione Microsoft Entra per l'app Web o l'app per le API

Se l'app Web o l'app per le API è già stata distribuita, è possibile attivare l'autenticazione e creare l'identità di applicazione nel portale di Azure. In alternativa, è possibile attivare l'autenticazione quando si effettua la distribuzione con un modello di Azure Resource Manager.

Creare l'identità dell'applicazione per un'app Web o un'app per le API distribuita nel portale di Azure

  1. Nel portale di Azure individuare e selezionare l'app Web o l'app per le API.

  2. In Impostazioni selezionare Autenticazione>Aggiungi provider di identità.

  3. Al termine dell'apertura del riquadro Aggiungi provider di identità, nella schedaInformazioni di base selezionare Microsoft per usare le identità di Microsoft Entra e quindi selezionare Aggiungi.

  4. A questo punto, creare un'identità dell'applicazione per l'app Web o l'app per le API come indicato di seguito:

    1. Per Tipo di registrazione dell'app selezionare Crea nuova registrazione app.

    2. In Nome specificare un nome per l'identità dell'applicazione.

    3. Per Tipi di account supportati selezionare i tipi di account appropriati per lo scenario.

    4. Per Limita l'accesso selezionare Richiedi autenticazione.

    5. Per Richieste non autenticate, selezionare l'opzione in base allo scenario in uso.

    6. Al termine, selezionare Aggiungi.

    L'identità dell'applicazione appena creata per l'app Web o l'app per le API ora viene visualizzata nella sezione Provider di identità:

    Screenshot che mostra l'identità dell'applicazione appena creata per l'app Web o l'app per le API.

    Suggerimento

    Se l'identità dell'applicazione non viene visualizzata, sulla barra degli strumenti selezionare Aggiorna.

A questo punto è necessario trovare l'ID applicazione (client) e l'ID tenant per l'identità dell'applicazione appena creata per l'app Web o l'app per le API. Questi ID verranno usati nella Parte 3. Continuare quindi con i passaggi seguenti per il portale di Azure.

Trovare l'ID client e l'ID tenant dell'identità di applicazione per l'app Web o app per le API nel portale di Azure

  1. Nel menu di spostamento dell'app Web selezionare Autenticazione.

  2. Nella sezione Provider di identità individuare l'identità dell'applicazione creata in precedenza. Selezionare il nome per l'identità dell'applicazione.

    Screenshot che mostra l'identità dell'applicazione appena creata con il riquadro

  3. Dopo aver aperto il riquadro Panoramica dell'identità dell'applicazione, trovare i valori per ID applicazione (client) e ID directory (tenant). Copiare e salvare i valori da usare nella parte 3.

    Screenshot che mostra il riquadro

    È anche possibile usare il GUID ID tenant nel modello di distribuzione dell'app Web o dell'app per le API, se necessario. Questo GUID è il GUID del tenant specifico ("ID tenant") e deve apparire in questo URL: https://sts.windows.net/{GUID}

Configurare l'autenticazione quando si esegue la distribuzione con un modello di Azure Resource Manager

Se si usa un modello di Azure Resource Manager ,è comunque necessario creare un'identità dell'applicazione Microsoft Entra per l'app Web o l'app per le API diversa dall'identità dell'app per la logica. Per creare l'identità dell'applicazione e quindi trovare l'ID client e l'ID tenant, seguire i passaggi precedenti descritti nella parte 2 per il portale di Azure. Si useranno sia l'ID client che l'ID tenant nel modello di distribuzione dell'app e anche per la parte 3.

Importante

Quando si crea l'identità dell'applicazione Microsoft Entra per l'app Web o l'app per le API, è necessario usare il portale di Azure, non PowerShell. Il cmdlet di PowerShell non consente di impostare le autorizzazioni necessarie per l'accesso degli utenti in un sito Web.

Dopo aver ottenuto l'ID client e l'ID tenant, includerli come risorsa secondaria dell'app Web o app per le API nel modello di distribuzione:

"resources": [
   {
      "apiVersion": "2015-08-01",
      "name": "web",
      "type": "config",
      "dependsOn": ["[concat('Microsoft.Web/sites/','parameters('webAppName'))]"],
      "properties": {
         "siteAuthEnabled": true,
         "siteAuthSettings": {
            "clientId": "<client-ID>",
            "issuer": "https://sts.windows.net/<tenant-ID>/"
         }
      }
   }
]

Per distribuire automaticamente un'app Web vuota e un'app per la logica insieme all'autenticazione di Microsoft Entra, visualizzare il modello completo qui oppure selezionare il pulsante Distribuisci in Azure seguente:

Distribuzione in Azure

Parte 3: Compilare la sezione Autorizzazione nell'app per la logica

Il modello precedente include già questa sezione di autorizzazione configurata, ma se si crea direttamente la definizione dell'app per la logica, è necessario includere la sezione di autorizzazione completa.

  1. Aprire la definizione dell'app per la logica nella visualizzazione codice.

  2. Passare alla definizione dell'azione HTTP , individuare la sezione Autorizzazione e includere le proprietà seguenti:

{
   "tenant": "<tenant-ID>",
   "audience": "<client-ID-from-Part-2-web-app-or-API app>",
   "clientId": "<client-ID-from-Part-1-logic-app>",
   "secret": "<secret-from-Part-1-logic-app>",
   "type": "ActiveDirectoryOAuth"
}
Proprietà Richiesto Descrizione
tenant GUID per il tenant di Microsoft Entra
audience GUID per la risorsa di destinazione cui si vuole accedere, che è l'ID client dall'identità di applicazione per l'app Web o l'app per le API
clientId GUID per il client che richiede l'accesso, che è l'ID client dall'identità di applicazione per l'app per la logica
secret Segreto o password dall'identità dell'applicazione per il client che richiede il token di accesso
type Il tipo di autenticazione. Per l'autenticazione ActiveDirectoryOAuth, il valore è ActiveDirectoryOAuth.

Ad esempio:

{
   "actions": {
      "HTTP": {
         "inputs": {
            "method": "POST",
            "uri": "https://your-api-azurewebsites.net/api/your-method",
            "authentication": {
               "tenant": "tenant-ID",
               "audience": "client-ID-from-azure-ad-app-for-web-app-or-api-app",
               "clientId": "client-ID-from-azure-ad-app-for-logic-app",
               "secret": "key-from-azure-ad-app-for-logic-app",
               "type": "ActiveDirectoryOAuth"
            }
         }
      }
   }
}

Chiamate API protette con codice

Autenticazione del certificato

Per convalidare le richieste in ingresso dal flusso di lavoro dell'app per la logica all'app Web o all'app per le API, è possibile usare i certificati client. Per configurare il codice, vedere le informazioni relative alla configurazione dell'autenticazione reciproca TLS.

Nella sezione Autorizzazione includere le proprietà seguenti:

{
   "type": "ClientCertificate",
   "password": "<password>",
   "pfx": "<long-pfx-key>"
}
Proprietà Richiesto Descrizione
type Il tipo di autenticazione. Per i certificati client TLS/SSL, il valore deve essere ClientCertificate.
password No La password per accedere al certificato client (file PFX)
pfx Contenuti del certificato client con codifica Base64 (file PFX)

Autenticazione di base

Per convalidare le richieste in ingresso dall'app per la logica all'app Web o app per le API, è possibile usare l'autenticazione di base, ad esempio un nome utente e una password. L'autenticazione di base è un modello comune applicabile a qualsiasi linguaggio usato per compilare l'app Web o app per le API.

Nella sezione Autorizzazione includere le proprietà seguenti:

{
   "type": "Basic",
   "username": "<username>",
   "password": "<password>"
}
Proprietà Richiesto Descrizione
type Tipo di autenticazione che si vuole usare. Per l'autenticazione di base il valore deve essere Basic.
username Nome utente che si vuole usare per l'autenticazione
password Password che si vuole usare per l'autenticazione

Autenticazione di Microsoft Entra tramite codice

Per impostazione predefinita, l'autenticazione di Microsoft Entra attivata nel portale di Azure non fornisce autorizzazioni con granularità fine. Ad esempio, questa autenticazione blocca l'API a un tenant specifico, non a un determinato utente o app.

Per limitare l'accesso dell'API all'app per la logica usando il codice, estrarre l'intestazione che contiene il token JSON Web (JWT). Verificare l'identità del chiamante e rifiutare le richieste che non corrispondono.

Passaggi successivi