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:
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).
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.
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.
Nella portale di Azure selezionare Microsoft Entra ID.
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.
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à.
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.
L'elenco Applicazioni di proprietà include ora l'identità dell'applicazione creata. Se questa identità non viene visualizzata, sulla barra degli strumenti selezionare Aggiorna.
Nell'elenco registrazioni dell'app selezionare la nuova identità dell'applicazione.
Nel menu di spostamento dell'identità dell'applicazione selezionare Panoramica.
Nel riquadro Panoramica, in Informazioni di base copiare e salvare l'ID applicazione da usare come "ID client" per l'app per la logica nella parte 3.
Dal menu di spostamento dell'identità dell'applicazione selezionare Certificati e segreti.
Nella scheda Segreti client selezionare Nuovo segreto client.
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.
Nel riquadro Certificati e segreti, in Segreti client, il segreto viene ora visualizzato insieme a un valore segreto e a un ID segreto.
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
Nel portale di Azure individuare e selezionare l'app Web o l'app per le API.
In Impostazioni selezionare Autenticazione>Aggiungi provider di identità.
Al termine dell'apertura del riquadro Aggiungi provider di identità, nella scheda Informazioni di base selezionare Microsoft per usare le identità di Microsoft Entra e quindi selezionare Aggiungi.
A questo punto, creare un'identità dell'applicazione per l'app Web o l'app per le API come indicato di seguito:
Per Tipo di registrazione dell'app selezionare Crea nuova registrazione app.
In Nome specificare un nome per l'identità dell'applicazione.
Per Tipi di account supportati selezionare i tipi di account appropriati per lo scenario.
Per Limita l'accesso selezionare Richiedi autenticazione.
Per Richieste non autenticate, selezionare l'opzione in base allo scenario in uso.
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à:
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
Nel menu di spostamento dell'app Web selezionare Autenticazione.
Nella sezione Provider di identità individuare l'identità dell'applicazione creata in precedenza. Selezionare il nome per l'identità dell'applicazione.
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.
È 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:
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.
Aprire la definizione dell'app per la logica nella visualizzazione codice.
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 |
Sì | GUID per il tenant di Microsoft Entra |
audience |
Sì | 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 |
Sì | GUID per il client che richiede l'accesso, che è l'ID client dall'identità di applicazione per l'app per la logica |
secret |
Sì | Segreto o password dall'identità dell'applicazione per il client che richiede il token di accesso |
type |
Sì | 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 |
Sì | 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 |
Sì | 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 |
Sì | Tipo di autenticazione che si vuole usare. Per l'autenticazione di base il valore deve essere Basic . |
username |
Sì | Nome utente che si vuole usare per l'autenticazione |
password |
Sì | 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.