Condividi tramite


Accedere agli utenti e chiamare un'API Web protetta nell'app Android (Kotlin) di esempio

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

In questo articolo vengono eseguite le attività seguenti:

  • Registrare un'applicazione nell'interfaccia di amministrazione di Microsoft Entra.
  • Aggiungere un URL di reindirizzamento della piattaforma.
  • Abilitare i flussi client pubblici.
  • Aggiornare il file di esempio di codice di configurazione Android per usare i propri Microsoft Entra per ID esterno per i dettagli del tenant del cliente.
  • Eseguire e testare l'applicazione per dispositivi mobili Android di esempio.
  • Chiamare un'API Web protetta.

Prerequisiti

  • Android Studio.

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

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

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

Registrare un'applicazione

Per consentire all'applicazione di accedere agli utenti con Microsoft Entra, Microsoft Entra per ID esterno deve essere informato dell'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.

I passaggi seguenti illustrano come registrare l'app nell'interfaccia di amministrazione di Microsoft Entra:

  1. Accedere all'interfaccia di amministrazione di Microsoft Entra come almeno uno 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 Applicazioni> di identità>Registrazioni app.

  4. Seleziona + Nuova registrazione.

  5. Nella pagina Registra un'applicazione visualizzata;

    1. Immettere un nome di applicazione significativo visualizzato 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 dell'app, seguire questa procedura:

  1. In Gestisci selezionare Autenticazione.
  2. Nella pagina Configurazioni della piattaforma selezionare Aggiungi una piattaforma e quindi selezionare l'opzione Android .
  3. Immettere il nome del pacchetto del progetto. Se è stato scaricato il codice di esempio, questo valore è com.azuresamples.msaldelegatedandroidkotlinsampleapp.
  4. Nella sezione Hash della firma del riquadro Configura l'app Android selezionare Generazione di un hash della firma di sviluppo. Ciò cambierà per ogni ambiente di sviluppo. Copiare ed eseguire il comando KeyTool per il sistema operativo nel terminale.
  5. Immettere il valore di Hash della firma generato da KeyTool.
  6. Seleziona Configura.
  7. Copiare la configurazione MSAL dal riquadro di configurazione Android e salvarla per la configurazione dell'app successiva.
  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 pubblici.

  3. Seleziona Salva per salvare le modifiche.

  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. Dall'elenco Autorizzazioni configurate all'applicazione è stata assegnata l'autorizzazione User.Read . Tuttavia, poiché il tenant è un tenant esterno, gli utenti consumer 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. Selezionare Concedi consenso amministratore per <il nome> del tenant e quindi selezionare .
    2. Selezionare Aggiorna, quindi verificare che Concesso per <il nome> del tenant venga visualizzato in Stato per entrambi gli ambiti.

Concedere autorizzazioni api Web all'app di esempio Android

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 <il nome> del tenant e quindi selezionare .

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

  10. Nell'elenco Autorizzazioni configurate selezionare le autorizzazioni ToDoList.Read e ToDoList.ReadWrite, una alla volta e 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 e 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_Heree sostituirlo con l'ID applicazione (client) dell'app registrata in precedenza.
    • Enter_the_Redirect_Uri_Heree sostituirlo con il valore di redirect_uri nel file di configurazione di Microsoft Authentication Library (MSAL) scaricato in precedenza quando è stato aggiunto l'URL di reindirizzamento della piattaforma.
    • Enter_the_Tenant_Subdomain_Here e sostituirlo con il sottodominio Directory (tenant). Ad esempio, se il dominio primario del tenant è contoso.onmicrosoft.com, usare contoso. Se non si conosce il sottodominio del tenant, vedere come leggere i dettagli del tenant.
  4. Aprire il file /app/src/main/AndroidManifest.xml .

  5. Trovare il segnaposto:

    • ENTER_YOUR_SIGNATURE_HASH_HEREe sostituirlo con l'hash della firma generato in precedenza quando è stato aggiunto l'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 sull'API Web.

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

    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 questa procedura:

  1. Nella barra degli strumenti selezionare l'app 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 sono configurati dispositivi, è 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 core configurata in precedenza ASP.NET. Una chiamata riuscita all'API Web restituisce HTTP 200, mentre HTTP 403 indica l'accesso non autorizzato.