Condividi tramite


Aggiungere l'autenticazione di Microsoft Entra per chiamare API personalizzate da Azure Logic Apps

Si applica a: Azure Logic Apps (Modalità a consumo)

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:

Autenticare le chiamate all'API senza modificare il codice

Ecco i passaggi generali per questo metodo:

  1. Creare due identità dell'applicazione Microsoft Entra (registrazione app): una per l'app logica e una per l'app web (o app API).

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

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

Parte 1: Creare un'identità applicativa di Microsoft Entra per l'app logica

La risorsa Logic App utilizza questa identità dell'applicazione Microsoft Entra per autenticarsi con Microsoft Entra ID. È necessario configurare questa identità una sola volta per il tenant. 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 casella di ricerca del portale di Azure trovare e selezionare Microsoft Entra ID.

  2. Verificare di trovarsi nello stesso tenant dell'app Web o dell'app per le API.

    Suggerimento

    Per cambiare tenant, dalla barra del titolo di Azure apri il tuo profilo e seleziona Cambia directory.

  3. Nel menu delle risorse tenant, in Gestisci, selezionare Registrazioni app.

    La pagina Registrazioni app mostra tutte le registrazioni dell'app nel tenant. Per visualizzare solo le registrazioni dell'app, selezionare Applicazioni di proprietà.

  4. Sulla barra degli strumenti selezionare Nuova registrazione.

    Screenshot che mostra il portale di Azure con il tenant Microsoft Entra, il riquadro Registrazioni app e il comando selezionato per nuova registrazione.

  5. Nella pagina Registra un'applicazione seguire questa procedura:

    1. In Nome, indicare un nome facile e intuitivo per l'identità dell'applicazione della logic app.

    2. In Tipi di account supportati selezionare l'opzione che descrive meglio i tipi di account che possono usare l'identità dell'applicazione o ottenere l'accesso all'API.

    3. In URI di reindirizzamento, seleziona Web come piattaforma. Accanto a questa opzione, specificare un URL univoco per la posizione in cui restituire la risposta di autenticazione.

      Screenshot che mostra il riquadro per registrare un'applicazione con il nome dell'identità dell'applicazione e l'URL per dove inviare la risposta di autenticazione.

    4. Al termine, selezionare Registra.

    La scheda Applicazioni di proprietà mostra 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 logica.

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

  7. Nel menu di navigazione dell'identità dell'applicazione selezionare Panoramica.

  8. Nella pagina Panoramica, in Essenziali, copiare e salvare l'ID applicazione (client) da usare come ID client per il logic app nella parte 3.

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

  9. Dal menu dell'identità dell'applicazione, in Gestisci, selezionare Certificati e segreti.

  10. Nella pagina Segreti client selezionare Nuovo segreto client.

  11. Nel riquadro Aggiungi un segreto client , per Descrizione, specificare un nome per il segreto. Per 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'applicazione logica.

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

    Nella pagina Certificati e segreti , nella scheda Segreti client , il segreto viene 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 del segreto selezionato.

  12. 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. Dopo che si apre il riquadro Aggiungi provider di identità, nella scheda Base, dall'elenco Provider di identità, 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 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.

    Nella sezione Provider di identità viene ora visualizzata la nuova identità dell'applicazione per l'app Web o l'app per le API:

    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à dell'applicazione per l'applicazione Web o applicazione API nel portale di Azure

  1. Nel menu dell'app Web, in Gestisci, selezionare Autenticazione.

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

    Screenshot che mostra la pagina Autenticazione aperta per l'identità dell'applicazione appena creata.

  3. Nella pagina Panoramica, trova i valori per ID applicazione (client) e ID directory (tenant). Copiare e salvare i valori da usare nella parte 3.

    Screenshot che mostra la pagina Panoramica aperta per l'identità dell'applicazione web e i valori selezionati per l'ID dell'applicazione (client) e l'ID della directory (tenant).

    Puoi anche utilizzare il GUID dell'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 del tenant") e deve apparire in questo URL: https://sts.windows.net/<tenant-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. Apri la definizione dell'app logica nella visualizzazione del 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 della risorsa di destinazione a cui si desidera accedere, ovvero l'ID cliente dell'identità dell'applicazione per l'applicazione web o l'applicazione API.
clientId GUID per il client che richiede l'accesso, cioè l'ID del client dall'identità dell'applicazione per la Logic App.
secret Il segreto o la password dell'identità dell'applicazione del 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, imparare come configurare l'autenticazione reciproca TLS.

Importante

Proteggere e proteggere sempre i dati sensibili e personali, ad esempio credenziali, segreti, chiavi di accesso, stringhe di connessione, certificati, identificazioni personali e informazioni simili con il livello di sicurezza più alto disponibile o supportato.

Assicurarsi di archiviare tali informazioni in modo sicuro usando Microsoft Entra ID e Azure Key Vault. Non inserire queste informazioni come codice fisso, non condividerle con altri utenti, e non salvarle in testo non crittografato ovunque possano accedervi altri utenti. Configurare un piano per ruotare o revocare i segreti nel caso in cui vengano compromessi. Per ulteriori informazioni, vedi le seguenti risorse:

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 Password per l'accesso al certificato client (file PFX).
pfx Contenuto con codifica Base64 del certificato client (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. Anche se l'autenticazione di base è un modello comune ed è possibile usare questa autenticazione in qualsiasi linguaggio usato per compilare l'app Web o l'app per le API, usare sempre il livello di autenticazione migliore disponibile o supportato.

Avviso

Microsoft sconsiglia di usare i flussi seguenti per l'autenticazione e l'autorizzazione:

  • Password del proprietario della risorsa (ROPC) per OAuth 2.0

    Questo flusso consente di accedere a un'applicazione con una password. Il flusso non è compatibile con l'autenticazione a più fattori (MFA), richiede un livello di attendibilità molto elevato nell'applicazione e comporta rischi che non esistono in altri flussi. Usare questo flusso solo se altri flussi più sicuri non sono supportati o disponibili.

    Per altre informazioni, vedere Credenziali password del proprietario della risorsa Oauth 2.0.

  • Flusso di concessione implicito per OAuth 2.0

    Questo flusso basato su token è destinato alle app Web tradizionali in cui il server ha un controllo più sicuro sull'elaborazione dei POST dati e viene spesso usato con il flusso del codice di autorizzazione. A causa del modo in cui questo flusso gestisce e restituisce token ID o token di accesso, il flusso richiede un livello di attendibilità molto elevato nell'applicazione e comporta rischi che non esistono in altri flussi. Usare questo flusso solo quando altri flussi più sicuri non sono supportati o disponibili.

    Per altre informazioni, vedere Flusso di concessione implicita OAuth 2.0.

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 da usare per l'autenticazione.
password Password da usare per l'autenticazione.

Autenticazione di Microsoft Entra con 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 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