Usare il proxy di applicazione Microsoft Entra per fornire l'accesso sicuro a un'API (Application Programming Interface) ospitata in un cloud privato o in locale
La logica di business si trova spesso in un'API (Application Programming Interface) privata. L'API viene eseguita in un cloud privato o in locale. Le app Android, iOS, Mac o Windows native devono interagire con gli endpoint API per usare i dati o fornire l'interazione dell'utente. Il proxy di applicazione Microsoft Entra e Microsoft Authentication Library (MSAL) consentono alle app native di accedere in modo sicuro alle API del cloud privato. Il proxy di applicazione Microsoft Entra è una soluzione più veloce e sicura rispetto all'apertura delle porte del firewall e al controllo dell'autenticazione e dell'autorizzazione a livello di app.
Suggerimento
In locale è un termine legacy che risale all'epoca in cui i server fisici si trovavano presso l'ufficio aziendale. Ora, molti carichi di lavoro self-hosted vengono eseguiti in una macchina virtuale in un data center. Il termine cloud privato e locale viene usato in modo intercambiabile.
Questo articolo illustra come configurare una soluzione proxy di applicazione Microsoft Entra per l'hosting di un servizio API Web accessibile alle app native.
Panoramica
Il diagramma seguente illustra un modo tradizionale per pubblicare API locali. Questo approccio richiede l'apertura delle porte in ingresso 80 e 443.
Il diagramma seguente illustra come usare il proxy di applicazione Microsoft Entra per pubblicare in modo sicuro le API senza aprire porte in ingresso:
Il proxy di applicazione Microsoft Entra costituisce il backbone della soluzione, funziona come endpoint pubblico per l'accesso alle API e fornisce autenticazione e autorizzazione. È possibile accedere alle API da una vasta gamma di piattaforme usando le librerie di Microsoft Authentication Library (MSAL).
Poiché l'autenticazione e l'autorizzazione del proxy di applicazione Microsoft Entra si basano su Microsoft Entra ID, è possibile usare l'accesso condizionale Microsoft Entra per garantire che solo i dispositivi attendibili possano accedere alle API pubblicate tramite il proxy di applicazione. Usare l'aggiunta a Microsoft Entra o Microsoft Entra ibrido per i desktop e Intune gestito per i dispositivi. È anche possibile sfruttare le funzionalità di Microsoft Entra ID P1 o P2 come l'autenticazione a più fattori di Microsoft Entra e la sicurezza supportata da Machine Learning di Microsoft Entra ID Protection.
Prerequisiti
Per seguire questa procedura dettagliata, è necessario:
- Accesso amministratore a una directory di Azure, con un account in grado di creare e registrare app
- API Web di esempio e app client native di Microsoft Authentication Library (MSAL)
Pubblicare l'API tramite il proxy di applicazione
Per pubblicare un'API all'esterno della rete Intranet tramite il proxy di applicazione, seguire lo stesso modello di pubblicazione di app Web. Per ulteriori informazioni, consulta l’Esercitazione: Aggiungere un'applicazione locale per l'accesso remoto tramite proxy di applicazione in Microsoft Entra ID.
Per pubblicare l'API Web SecretAPI tramite il proxy di applicazione:
Compilare e pubblicare il progetto SecretAPI di esempio, come app Web ASP.NET nel computer locale o nella intranet. Assicurarsi di poter accedere all'app Web in locale.
Accedere all'Interfaccia di amministrazione di Microsoft Entra almeno come amministratore applicazione.
Passare a Identità>Applicazioni>Applicazioni aziendali.
Nella parte superiore della pagina Applicazioni aziendali - Tutte le applicazioni, selezionare Nuova applicazione.
Nella pagina Sfoglia Microsoft Entra Gallery, individuare la sezione Applicazioni locali e selezionare Aggiungi un'applicazione locale. Viene visualizzata la pagina Aggiungi un’applicazione locale personalizzata.
Se non è installato un connettore di rete privato, viene richiesto di installarlo. Selezionare Scarica connettore di rete privata per scaricare e installare il connettore.
Aggiungere informazioni nella pagina Aggiungi la tua applicazione locale.
Accanto a Nome, immettere SecretAPI.
Accanto a URL interno, immettere l'URL usato per accedere all'API dall'interno della Intranet.
Assicurarsi che la Preautenticazione sia impostata su Microsoft Entra ID.
Selezionare Crea e attendere che venga creata l’app.
Nella pagina Applicazioni aziendali - Tutte le applicazioni, selezionare un'app SecretAPI.
Nella pagina SecretAPI - Panoramica, selezionare Proprietà nel riquadro di spostamento a sinistra.
Non si desidera che le API siano disponibili per gli utenti finali nel pannello MyApps, quindi impostare Visibile agli utenti su No nella parte inferiore della pagina Proprietà e quindi selezionare Salva.
L'API Web ora viene pubblicata tramite il proxy di applicazione Microsoft Entra. Successivamente, aggiungere gli utenti che possono accedere all'app.
Nella pagina SecretAPI - Panoramica selezionare Utenti e gruppi nel riquadro di spostamento a sinistra.
Nella pagina Utenti e gruppi selezionare Aggiungi utente.
Nella pagina Aggiungi assegnazione selezionare Utenti e gruppi.
Nella pagina Utenti e gruppi cercare e selezionare gli utenti che possono accedere all'app, incluso almeno se stessi. Dopo aver selezionato tutti gli utenti, selezionare Seleziona.
Tornare alla pagina Aggiungi assegnazione selezionare Assegna.
Nota
Le API che usano l'autenticazione integrata di Windows potrebbero richiedere passaggi aggiuntivi.
Registrare l'app nativa e concedere l'accesso all'API
Le app native sono programmi sviluppati per l'uso in una determinata piattaforma o dispositivo. Prima che l'app nativa possa connettersi e accedere a un'API, è necessario registrarla in Microsoft Entra ID. I passaggi seguenti illustrano come registrare un'app nativa e concedere l'accesso all'API Web pubblicata tramite il proxy di applicazione.
Per registrare l'app nativa AppProxyNativeAppSample:
Accedere all'Interfaccia di amministrazione di Microsoft Entra almeno come amministratore applicazione.
Passare a Identità>Applicazioni>Applicazioni Enterprise>Registrazioni app.
Seleziona Nuova registrazione.
Immettere le informazioni nella pagina Registra un'applicazione.
In Nome, immettere AppProxyNativeAppSample.
In Tipi di account supportati selezionare Account solo in questa directory organizzativa (solo Contoso - Tenant singolo)
In URL di reindirizzamento, selezionare Client pubblico/nativo (mobile e desktop) e quindi immettere *https://login.microsoftonline.com/common/oauth2/nativeclient *.
Selezionare Registra e attendere che l'app venga registrata correttamente.
L'app AppProxyNativeAppSample
è ora registrata in Microsoft Entra ID. Concedere all'app nativa l'accesso all'API Web SecretAPI
:
Nella pagina Registrazioni app selezionare l'app AppProxyNativeAppSample.
Nella pagina AppProxyNativeAppSample selezionare Autorizzazioni API nel riquadro di spostamento a sinistra.
Nella pagina Autorizzazioni API selezionare Aggiungi un'autorizzazione.
Nella prima pagina Richiedi autorizzazioni API selezionare la scheda API usate dall'organizzazione e quindi cercare e selezionare SecretAPI.
Nella pagina successiva Richiedi autorizzazioni API selezionare la casella di controllo accanto a user_impersonatione quindi selezionare Aggiungi autorizzazioni.
Tornando alla pagina delle autorizzazioni API è possibile selezionare Concedi il consenso dell'amministratore per Contoso per impedire ad altri utenti di dover dare il consenso individualmente all'app.
Configurare il codice dell'app nativa
L'ultimo passaggio consiste nel configurare l'app nativa. Il codice deve essere aggiunto al file Form1.cs
nell'app NativeClient
di esempio. Il codice usa la libreria MSAL per acquisire il token. Il token richiede la chiamata API e lo collega all'intestazione nella richiesta. Il token viene collegato come certificato di token di connessione. Per altre informazioni su MSAL, vedere Aggiungere MSAL al progetto e Aggiungere il riferimento MSAL.
In Form1.cs aggiungere lo spazio dei nomi
using Microsoft.Identity.Client;
al codice.Modificare il codice dell'applicazione nativa nel contesto di Microsoft Authentication Library (MSAL) per includere questo esempio di codice personalizzato.
Configurare l'app nativa per connettersi a Microsoft Entra ID e chiamare l'API usando il proxy di applicazione. Aggiornare quindi i valori segnaposto nel file App.config
di NativeClient sample app
con i valori di Microsoft Entra ID.
Incollare l’ID directory (tenant) nel campo
<add key="ida:Tenant" value="" />
. È possibile trovare e copiare questo valore (un GUID) dalla pagina Panoramica di una delle app.Incollare l’ID applicazione (client) AppProxyNativeAppSample nel campo
<add key="ida:ClientId" value="" />
. È possibile trovare e copiare questo valore (un GUID) dalla pagina Panoramica di AppProxyNativeAppSample, nel riquadro di spostamento a sinistra in Gestisci.Incollare l’URI di reindirizzamento AppProxyNativeAppSample nel campo
<add key="ida:RedirectUri" value="" />
. È possibile trovare e copiare questo valore (un URI) dalla pagina Autenticazione di AppProxyNativeAppSample, nel riquadro di spostamento a sinistra in Gestisci. Questo passaggio è facoltativo perché MSAL usa il metodoPublicClientApplicationBuilder.WithDefaultRedirectUri()
per inserire l'URI (Uniform Resource Identifier) consigliato.Incollare l’URI ID applicazione SecretAPI nel campo
<add key="todo:TodoListResourceId" value="" />
. Il valore è lo stesso ditodo:TodoListBaseAddress
. Il valore URI si trova nella pagina Esporre un'API dell'applicazioneSecretAPI
. Cercare nel riquadro di spostamento a sinistra in Gestisci.Incollare l’URL della home page SecretAPI nel campo
<add key="todo:TodoListBaseAddress" value="" />
. È possibile trovare e copiare questo valore (un URL) dalla pagina Personalizzazione e proprietà SecretAPI, nel riquadro di spostamento a sinistra in Gestisci.
Nota
Se la soluzione non compila e segnala l'errore file Resx non valido, in Esplora soluzioni espandere Proprietà, fare clic con il pulsante destro del mouse su Resources.resx e quindi selezionare Visualizza codice. Righe di commento da 121 a 123.
Dopo aver configurato i parametri, compilare ed eseguire l'app nativa. Quando si seleziona il pulsante Accedi, l'app consente di accedere e quindi visualizza una schermata di operazione riuscita per verificare che sia stata stabilita la connessione ad SecretAPI.