Condividi tramite


Concedere l’accesso utente e chiamare un'API Web protetta in un'app Android (Kotlin) di esempio

Questa guida mostra come configurare un'applicazione per dispositivi mobili Android di esempio per l'accesso utente e chiamare un'API Web ASP.NET Core.

In questo articolo si apprenderà come eseguire le attività seguenti:

  • Registrare l'applicazione nell'Interfaccia di amministrazione di Microsoft Entra.
  • Aggiungere un URL di reindirizzamento della piattaforma.
  • Abilitare i flussi client pubblico.
  • Aggiornare il file di configurazione del codice di esempio di Android in modo da usare la propria istanza di Microsoft Entra per ID esterno per i dettagli del tenant esterno.
  • Eseguire e testare l'applicazione per dispositivi mobili Android di esempio.
  • Chiamare un'API Web protetta.

Prerequisiti

  • Android Studio.

  • Un tenant esterno. Se non si dispone già di una versione, iscriversi per ottenere una versione di valutazione gratuita.

  • Registrazione API che espone almeno un ambito (autorizzazioni delegate) e un ruolo app (autorizzazione dell'applicazione), ad esempio ToDoList.Read. Se questa operazione non è stata eseguita, seguire le istruzioni per chiamare un'API in un'app per dispositivi mobili Android di esempio per avere un'API Web ASP.NET Core protetta e funzionale. Assicurarsi di completare i passaggi seguenti:

    • Registrare un'applicazione API Web
    • Configurare gli ambiti dell'API
    • Configurare i ruoli app
    • Configurare le attestazioni facoltative
    • Clonare o scaricare un'API Web di esempio
    • Configurare ed eseguire un'API Web di esempio

Registrare un'applicazione

Per abilitare l'applicazione all'accesso utente con Microsoft Entra, è necessario che Microsoft Entra per ID esterno riconosca l'applicazione creata. La registrazione dell'app stabilisce una relazione di trust tra l'app e Microsoft Entra. Quando si registra un'applicazione, l'ID esterno genera un identificatore univoco noto come ID applicazione (client), un valore usato per identificare l'app durante la creazione di richieste di autenticazione.

La procedura seguente spiega come registrare l'app nell'Interfaccia di amministrazione di Microsoft Entra:

  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 esterno dal menu Directory e sottoscrizioni.

  3. Passare a Identità>Applicazioni>Registrazioni app.

  4. Seleziona + Nuova registrazione.

  5. Nella pagina Registra un'applicazione che viene visualizzata:

    1. Immettere un nome significativo per l’applicazione da mostrare agli utenti dell'app, ad esempio ciam-client-app.
    2. In Tipi di account supportati selezionare Account solo in questa directory organizzativa.
  6. Selezionare Registra.

  7. Al termine della registrazione, viene visualizzato il riquadro Panoramica dell'applicazione. Registrare l'ID applicazione (client) da usare nel codice sorgente dell'applicazione.

Aggiungere un URL di reindirizzamento della piattaforma

Per specificare il tipo di app per la registrazione, seguire questa procedura:

  1. In Gestisci selezionare Autenticazione.
  2. Nella pagina Configurazioni della piattaforma, selezionare Aggiungi una piattaforma, quindi selezionare l'opzione Android.
  3. Immettere il nome del pacchetto del progetto. Se è stato scaricato il codice di esempio, il valore sarà com.azuresamples.msaldelegatedandroidkotlinsampleapp.
  4. Nella sezione Hash della firma del riquadro Configurare l'app Android, selezionare Generazione di un hash della firma per lo sviluppo. Tale operazione cambia per ogni ambiente di sviluppo. Copiare ed eseguire il comando KeyTool per il sistema operativo corrente nel terminale.
  5. Immettere il valore di Hash della firma generato da KeyTool.
  6. Seleziona Configura.
  7. Copiare la configurazione MSAL dal riquadro Configurazione Android e salvarla per la successiva configurazione dell'app.
  8. Selezionare Fatto.

Abilitare il flusso client pubblico

Per identificare l'app come client pubblico, seguire questa procedura:

  1. In Gestisci selezionare Autenticazione.

  2. In Impostazioni avanzate, selezionare per Consenti flussi client pubblico.

  3. Seleziona Salva per salvare le modifiche.

Dopo aver registrato l'applicazione, viene assegnata l'autorizzazione User.Read . Tuttavia, poiché il tenant è un tenant esterno, gli utenti del cliente stessi non possono fornire il consenso a questa autorizzazione. L'amministratore deve fornire il consenso a questa autorizzazione per conto di tutti gli utenti nel tenant:

  1. Nella pagina Registrazioni app, selezionare l'applicazione creata (ad esempio ciam-client-app) per aprire la relativa pagina Panoramica.

  2. In Gestisci selezionare Autorizzazioni API.

    1. Selezionare Concedi consenso amministratore per <nome del tenant>, quindi selezionare .
    2. Selezionare Aggiorna, quindi verificare che Concesso per <il nome> del tenant venga visualizzato in Stato per l'autorizzazione.

Concedere autorizzazioni API all'app Android di esempio

Dopo aver registrato sia l'app client che l'API Web e aver esposto l'API creando gli ambiti, seguire questa procedura per configurare le autorizzazioni del client per l'API:

  1. Nella pagina Registrazioni app, selezionare l'applicazione creata (ad esempio ciam-client-app) per aprire la relativa pagina Panoramica.

  2. In Gestisci selezionare Autorizzazioni API.

  3. In Autorizzazioni configurate selezionare Aggiungi un'autorizzazione.

  4. Selezionare la scheda API usate dall'organizzazione.

  5. Nell'elenco delle API, selezionare l'API, ad esempio ciam-ToDoList-api.

  6. Selezionare l'opzione Autorizzazioni delegate.

  7. Nell'elenco delle autorizzazioni selezionare ToDoList.Read, ToDoList.ReadWrite (usare la casella di ricerca, se necessario).

  8. Selezionare il pulsante Aggiungi autorizzazioni.

  9. A questo punto, le autorizzazioni sono state assegnate correttamente. Tuttavia, poiché il tenant è un tenant di un cliente, gli utenti consumer stessi non possono fornire il consenso a queste autorizzazioni. Per risolvere questo problema, l'amministratore deve fornire il consenso a queste autorizzazioni per conto di tutti gli utenti nel tenant:

    1. Selezionare Concedi consenso amministratore per <nome del tenant>, quindi selezionare .

    2. Selezionare Aggiorna, quindi verificare che il valore Concesso per <nome del tenant> venga visualizzato in Stato per entrambe le autorizzazioni.

  10. Nell'elenco Autorizzazioni configurate selezionare le autorizzazioni ToDoList.Read e ToDoList.ReadWrite, una alla volta, quindi copiare l'URI completo dell'autorizzazione per un uso successivo. L'URI completo dell'autorizzazione ha un aspetto simile a api://{clientId}/{ToDoList.Read} o api://{clientId}/{ToDoList.ReadWrite}.

Clonare un'applicazione per dispositivi mobili Android 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-ciam-browser-delegated-android-sample
    

Configurare l'applicazione per dispositivi mobili Android di esempio

Per abilitare l'autenticazione e l'accesso alle risorse dell’API Web, configurare l'esempio seguendo questa procedura:

  1. In Android Studio, aprire il progetto clonato.

  2. Aprire il file /app/src/main/res/raw/auth_config_ciam.json.

  3. Trovare il segnaposto:

    • Enter_the_Application_Id_Here e sostituirlo con l'ID applicazione (client) dell'app registrata in precedenza.
    • Enter_the_Redirect_Uri_Here e sostituirlo con il valore di redirect_urinel file di configurazione di MSAL (Microsoft Authentication Library) scaricato in precedenza al momento dell’aggiunta dell'URL di reindirizzamento della piattaforma.
    • Enter_the_Tenant_Subdomain_Here e sostituirlo con il sottodominio della directory (tenant). Ad esempio, se il dominio primario del tenant è contoso.onmicrosoft.com, usare contoso. Se il sottodominio del tenant non è disponibile, vedere come leggere i dettagli del tenant.
  4. Aprire il file /app/src/main/AndroidManifest.xml.

  5. Trovare il segnaposto:

    • ENTER_YOUR_SIGNATURE_HASH_HERE e sostituirlo con l'hash della firma generato in precedenza al momento dell’aggiunta dell'URL di reindirizzamento della piattaforma.
  6. Aprire il file /app/src/main/java/com/azuresamples/msaldelegatedandroidkotlinsampleapp/MainActivity.kt.

  7. Trovare la proprietà denominata WEB_API_BASE_URL e impostare l'URL nell’API Web.

  8. Trovare la proprietà denominata scopes e impostare gli ambiti registrati in Concedere autorizzazioni API Web all'app Android di esempio.

    private const val scopes = "" // Developers should set the respective scopes of their web API here. For example, private const val scopes = "api://{clientId}/{ToDoList.Read} api://{clientId}/{ToDoList.ReadWrite}"
    

L'app è stata configurata ed è pronta per l'esecuzione.

Eseguire e testare l'applicazione per dispositivi mobili Android di esempio

Per compilare ed eseguire l'app, seguire la procedura seguente:

  1. Nella barra degli strumenti, selezionare l'applicazione dal menu delle configurazioni di esecuzione.

  2. Nel menu del dispositivo di destinazione, selezionare il dispositivo in cui si vuole eseguire l'app.

    Se non è stato configurato alcun dispositivo, è necessario creare un dispositivo virtuale Android per usare l'emulatore Android o connettere un dispositivo Android fisico.

  3. Selezionare il pulsante Run (Esegui).

  4. Selezionare Acquisisci token in modo interattivo per richiedere un token di accesso.

  5. Selezionare API -Eseguire GET per chiamare l'API Web ASP.NET Core configurata in precedenza. Una chiamata riuscita all'API Web restituisce HTTP 200, mentre HTTP 403 indica un accesso non autorizzato.