Condividi tramite


Accedere agli utenti e chiamare un'API in un'app per dispositivi mobili Android di esempio usando l'autenticazione nativa

Questo articolo descrive come configurare un'applicazione per dispositivi mobili Android di esempio per chiamare un'API Web ASP.NET Core.

Prerequisiti

Registrare un'applicazione API Web

  1. Accedere a Interfaccia di amministrazione di Microsoft Entra almeno come Sviluppatore di applicazioni.

  2. Se si ha accesso a più tenant, usare l'iconaImpostazioni 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 visualizzata immettere le informazioni sulla registrazione dell'applicazione:

    1. Nella sezione Nome immettere un nome di applicazione significativo che verrà visualizzato agli utenti dell'app, ad esempio ciam-ToDoList-api.

    2. In Tipi di account supportati selezionare Account solo in questa directory organizzativa.

  6. Selezionare Registra per creare l'applicazione.

  7. Il riquadro Panoramica dell'applicazione viene visualizzato al termine della registrazione. Registrare l'ID directory (tenant) e l'ID applicazione (client) da usare nel codice sorgente dell'applicazione.

Configurare gli ambiti dell'API

Un'API deve pubblicare almeno un ambito, detto anche Autorizzazione delegata, affinché le app client possano ottenere correttamente un token di accesso per un utente. Per pubblicare un ambito, seguire questa procedura:

  1. Nella pagina Registrazioni app, selezionare l'applicazione API creata (ciam-ToDoList-api) per aprire la relativa pagina Panoramica.

  2. In Gestisci selezionare Esponi un'API.

  3. Nella parte superiore della pagina, accanto a URI ID applicazione, selezionare il link Aggiungi per generare un URI univoco per questa app.

  4. Accettare l'URI dell'ID applicazione proposto, ad esempio api://{clientId}, e selezionare Salva. Quando l'applicazione Web richiede un token di accesso per l'API Web, aggiunge l'URI come prefisso per ogni ambito definito per l'API.

  5. In Ambiti definiti da questa API selezionare Aggiungi un ambito.

  6. Immettere i valori seguenti che definiscono un accesso in lettura all'API, quindi selezionare Aggiungi ambito per salvare le modifiche:

    Proprietà valore
    Nome ambito ToDoList.Read
    Utenti che possono fornire il consenso Solo amministratori
    Nome visualizzato consenso dell'amministratore Lettura dell'elenco di attività degli utenti tramite "TodoListApi"
    Descrizione consenso dell'amministratore Consente all'app di leggere l'elenco di attività dell'utente tramite "TodoListApi".
    Provincia Abilitato
  7. Selezionare di nuovo Aggiungi ambito e immettere i valori seguenti per definire un ambito di accesso in lettura e scrittura all'API. Selezionare Aggiungi ambito per salvare le modifiche:

    Proprietà valore
    Nome ambito ToDoList.ReadWrite
    Utenti che possono fornire il consenso Solo amministratori
    Nome visualizzato consenso dell'amministratore Lettura e scrittura nell'elenco di attività degli utenti tramite "TodoListApi"
    Descrizione consenso dell'amministratore Consente all'app di leggere e scrivere nell'elenco di attività dell'utente tramite "TodoListApi"
    Provincia Abilitato
  8. In Gestisci, selezionare Manifesto per aprire l'editor del manifesto dell'API.

  9. Impostare la proprietà accessTokenAcceptedVersion su 2.

  10. Seleziona Salva.

Altre informazioni sul principio dei privilegi minimi durante la pubblicazione di autorizzazioni per un'API Web.

Configurare i ruoli dell'app

Un'API deve pubblicare almeno un ruolo dell'app per le applicazioni, detto anche Autorizzazione dell'applicazione, affinché le app client possano ottenere autonomamente un token di accesso. Le autorizzazioni dell'applicazione sono il tipo di autorizzazioni che le API devono pubblicare quando vogliono consentire alle applicazioni client di eseguire correttamente l'autenticazione in modo autonomo, senza richiedere l'accesso degli utenti. Per pubblicare un'autorizzazione dell'applicazione, seguire questa procedura:

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

  2. In Gestisci selezionare Ruoli dell'app.

  3. Selezionare Crea un ruolo app, quindi immettere i valori seguenti e selezionare Applica per salvare le modifiche:

    Proprietà valore
    Nome visualizzato ToDoList.Read.All
    Tipi di membro consentiti Applicazioni
    Valore ToDoList.Read.All
    Descrizione Consente all'app di leggere l'elenco di attività di ogni utente tramite "TodoListApi"
  4. Selezionare di nuovo Crea un ruolo app, immettere i valori seguenti per il secondo ruolo dell'app, quindi selezionare Applica per salvare le modifiche:

    Proprietà valore
    Nome visualizzato ToDoList.ReadWrite.All
    Tipi di membro consentiti Applicazioni
    Valore ToDoList.ReadWrite.All
    Descrizione Consente all'app di leggere e scrivere nell'elenco di attività di ogni utente tramite "TodoListApi"

Configurare le attestazioni facoltative

È possibile usare l'attestazione facoltativa idtyp per aiutare l'API Web a determinare se un token è un token dell'app o un token dell'app e dell'utente. Sebbene sia possibile usare una combinazione di attestazioni scp e ruoli per lo stesso scopo, l'uso dell'attestazione idtyp è il modo più semplice per distinguere un token dell'app da un token dell'app e dell'utente. Ad esempio, il valore di questa attestazione è app quando il token è un token solo app.

Concedere autorizzazioni API 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 <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 delle autorizzazioni è simile a api://{clientId}/{ToDoList.Read} o api://{clientId}/{ToDoList.ReadWrite}.

Clonare o scaricare un'API Web 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-dotnet-tutorial.git
    
  • Scaricare il file ZIP. Estrarlo in un percorso di file in cui la lunghezza del nome è inferiore a 260 caratteri.

Configurare ed eseguire un'API Web di esempio

  1. Nell'editor di codice aprire il file 2-Authorization/1-call-own-api-aspnet-core-mvc/ToDoListAPI/appsettings.json.

  2. Individuare il segnaposto:

    • Enter_the_Application_Id_Here e sostituirlo con il valore ID applicazione (client) dell'API Web copiato in precedenza.
    • Enter_the_Tenant_Id_Here e sostituirlo con il valore ID directory (tenant) copiato in precedenza.
    • 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 non si dispone del nome del tenant, scoprire come leggere i dettagli del tenant.

È necessario ospitare l'API Web per l'app Android di esempio per chiamarla. Seguire le indicazioni riportate in Avvio rapido: Distribuire un'app Web ASP.NET per distribuire l'API Web.

Configurare un'app per dispositivi mobili Android di esempio per chiamare l'API Web

  1. In Android Studio aprire il file /app/src/main/java/com/azuresamples/msalnativeauthandroidkotlinsampleapp/AccessApiFragment.kt.

  2. Trovare la proprietà denominata WEB_API_BASE_URL e impostare l'URL sull'API Web.

    private const val WEB_API_BASE_URL = "" // Developers should set the respective URL of their web API here
    
  3. Trovare la proprietà denominata scopes e impostare gli ambiti registrati in Concedere autorizzazioni API all'app Android di esempio.

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

Eseguire l'app Android di esempio e chiamare l'API Web

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 fisico.

  3. Selezionare il pulsante Esegui. L'app viene aperta nella schermata del messaggio di posta elettronica e del passcode monouso.

  4. Selezionare la scheda API per testare la chiamata API. Una chiamata riuscita all'API Web restituisce HTTP 200, mentre HTTP 403 indica l'accesso non autorizzato.

Passaggi successivi