Logga in användare och anropa ett API i en Android-exempelmobilapp med inbyggd autentisering
Den här artikeln visar hur du konfigurerar ett Android-exempelprogram för att anropa ett ASP.NET Core-webb-API.
Förutsättningar
Registrera ett webb-API-program
Logga in på administrationscentret för Microsoft Entra som minst programutvecklare.
Om du har åtkomst till flera klienter använder du ikonen Inställningar på den översta menyn för att växla till din externa klient från menyn Kataloger + prenumerationer.
Bläddra till Identitetsprogram>> Appregistreringar.
Välj + Ny registrering.
På sidan Registrera ett program som visas anger du programmets registreringsinformation:
I avsnittet Namn anger du ett beskrivande programnamn som ska visas för appens användare, till exempel ciam-ToDoList-api.
Under Kontotyper som stöds väljer du Endast Konton i den här organisationskatalogen.
Välj Registrera för att skapa programmet.
Programmets översiktsfönster visas när registreringen är klar. Registrera katalog-ID:t (klient)-ID:t och program-ID:t (klient) som ska användas i programmets källkod.
Konfigurera API-omfång
Ett API måste publicera minst ett omfång, även kallat Delegerad behörighet, för att klientapparna ska få en åtkomsttoken för en användare. Följ dessa steg för att publicera ett omfång:
På sidan Appregistreringar väljer du det API-program som du skapade (ciam-ToDoList-api) för att öppna sidan Översikt.
Under Hantera väljer du Exponera ett API.
Längst upp på sidan bredvid Program-ID-URI väljer du länken Lägg till för att generera en URI som är unik för den här appen.
Acceptera den föreslagna program-ID-URI:n, till exempel
api://{clientId}
, och välj Spara. När ditt webbprogram begär en åtkomsttoken för webb-API:et läggs URI:n till som prefix för varje omfång som du definierar för API:et.Under Omfång som definieras av det här API:et väljer du Lägg till ett omfång.
Ange följande värden som definierar läsbehörighet till API:et och välj sedan Lägg till omfång för att spara ändringarna:
Property Värde Omfattningsnamn ToDoList.Read Vem kan ge medgivande Endast administratörer Visningsnamn för administratörsmedgivande Läsa användarnas ToDo-lista med hjälp av "TodoListApi" Beskrivning av administratörsmedgivande Tillåt att appen läser användarens ToDo-lista med hjälp av "TodoListApi". Tillstånd Aktiverad Välj Lägg till ett omfång igen och ange följande värden som definierar ett läs- och skrivåtkomstomfång till API:et. Välj Lägg till omfång för att spara ändringarna:
Property Värde Omfattningsnamn ToDoList.ReadWrite Vem kan ge medgivande Endast administratörer Visningsnamn för administratörsmedgivande Läsa och skriva användares ToDo-lista med hjälp av "ToDoListApi" Beskrivning av administratörsmedgivande Tillåt att appen läser och skriver användarens ToDo-lista med hjälp av ToDoListApi Tillstånd Aktiverad Under Hantera väljer du Manifest för att öppna API-manifestredigeraren.
Ange
accessTokenAcceptedVersion
egenskapen till2
.Välj Spara.
Läs mer om principen om lägsta behörighet när du publicerar behörigheter för ett webb-API.
Konfigurera approller
Ett API måste publicera minst en approll för program, även kallat Programbehörighet, för att klientapparna ska få en åtkomsttoken som sig själva. Programbehörigheter är den typ av behörigheter som API:er bör publicera när de vill att klientprogram ska kunna autentiseras som sig själva och inte behöver logga in användare. Följ dessa steg för att publicera en programbehörighet:
På sidan Appregistreringar väljer du det program som du skapade (till exempel ciam-ToDoList-api) för att öppna sidan Översikt.
Under Hantera väljer du Approller.
Välj Skapa approll och ange sedan följande värden och välj sedan Använd för att spara ändringarna:
Property Värde Visningsnamn ToDoList.Read.All Tillåtna medlemstyper Appar Värde ToDoList.Read.All beskrivning Tillåt att appen läser alla användares ToDo-lista med hjälp av TodoListApi Välj Skapa approll igen och ange sedan följande värden för den andra approllen och välj sedan Använd för att spara ändringarna:
Property Värde Visningsnamn ToDoList.ReadWrite.All Tillåtna medlemstyper Appar Värde ToDoList.ReadWrite.All beskrivning Tillåt att appen läser och skriver alla användares ToDo-lista med hjälp av ToDoListApi
Konfigurera valfria anspråk
Du kan idtypa valfritt anspråk för att hjälpa webb-API:et att avgöra om en token är en apptoken eller en app + användartoken. Även om du kan använda en kombination av scp - och rollanspråk för samma ändamål är det enklaste sättet att skilja en apptoken och en app + användartoken åt med hjälp av idtyp-anspråket . Till exempel är värdet för det här anspråket app när token är en endast apptoken.
Bevilja API-behörigheter till Android-exempelappen
När du har registrerat både klientappen och webb-API:et och du har exponerat API:et genom att skapa omfång kan du konfigurera klientens behörigheter till API:et genom att följa dessa steg:
På sidan Appregistreringar väljer du det program som du skapade (till exempel ciam-client-app) för att öppna sidan Översikt.
Under Hantera väljer du API-behörigheter.
Under Konfigurerade behörigheter väljer du Lägg till en behörighet.
Välj fliken API:er som min organisation använder .
I listan över API:er väljer du API:et, till exempel ciam-ToDoList-api.
Välj alternativet Delegerade behörigheter .
I behörighetslistan väljer du ToDoList.Read, ToDoList.ReadWrite (använd sökrutan om det behövs).
Välj knappen Lägg till behörigheter.
Nu har du tilldelat behörigheterna korrekt. Men eftersom klientorganisationen är en kunds klientorganisation kan konsumentanvändarena själva inte samtycka till dessa behörigheter. För att åtgärda detta måste du som administratör samtycka till dessa behörigheter för alla användare i klientorganisationen:
Välj Bevilja administratörsmedgivande för <ditt klientnamn> och välj sedan Ja.
Välj Uppdatera och kontrollera sedan att Beviljat för <klientorganisationens namn> visas under Status för båda behörigheterna.
I listan Konfigurerade behörigheter väljer du behörigheterna ToDoList.Read och ToDoList.ReadWrite, en i taget, och kopierar sedan behörighetens fullständiga URI för senare användning. Den fullständiga behörighets-URI:n ser ut ungefär
api://{clientId}/{ToDoList.Read}
som ellerapi://{clientId}/{ToDoList.ReadWrite}
.
Klona eller ladda ned exempelwebb-API
Om du vill hämta exempelprogrammet kan du antingen klona det från GitHub eller ladda ned det som en .zip fil.
Om du vill klona exemplet öppnar du en kommandotolk och navigerar till den platsen där du vill skapa projektet och anger följande kommando:
git clone https://github.com/Azure-Samples/ms-identity-ciam-dotnet-tutorial.git
Ladda ned filen .zip. Extrahera den till en filsökväg där namnets längd är färre än 260 tecken.
Konfigurera och köra exempelwebb-API
Öppna
2-Authorization/1-call-own-api-aspnet-core-mvc/ToDoListAPI/appsettings.json
filen i kodredigeraren.Hitta platshållaren:
Enter_the_Application_Id_Here
och ersätt det med program-ID :t (klient) för webb-API:et som du kopierade tidigare.Enter_the_Tenant_Id_Here
och ersätt det med katalog-ID:t (klientorganisation) som du kopierade tidigare.Enter_the_Tenant_Subdomain_Here
och ersätt den med underdomänen Katalog (klientorganisation). Om din primära klientdomän till exempel ärcontoso.onmicrosoft.com
använder ducontoso
. Om du inte har ditt klientnamn kan du läsa klientinformationen.
Du måste vara värd för ditt webb-API för att Android-exempelappen ska kunna anropa den. Följ snabbstart: Distribuera en ASP.NET webbapp för att distribuera ditt webb-API.
Konfigurera Android-exempelmobilapp för att anropa webb-API
Med exemplet kan du konfigurera flera webb-API URL-slutpunkter och uppsättningar med omfång. I det här fallet konfigurerar du bara en URL-slutpunkt för webb-API:et och dess associerade omfång.
Öppna
/app/src/main/java/com/azuresamples/msalnativeauthandroidkotlinsampleapp/AccessApiFragment.kt
filen i Android Studio.Hitta egenskapen med namnet
WEB_API_URL_1
och ange URL:en till webb-API:et.private const val WEB_API_URL_1 = "" // Developers should set the respective URL of their web API here
Hitta egenskapen med namnet
scopesForAPI1
och ange omfången som registrerats i Bevilja API-behörigheter till Android-exempelappen.private val scopesForAPI1 = 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}")
Kör Android-exempelappen och anropa webb-API
Följ dessa steg för att skapa och köra din app:
I verktygsfältet väljer du din app på menyn Kör konfigurationer.
I målenhetsmenyn väljer du den enhet som du vill köra appen på.
Om du inte har konfigurerat några enheter måste du antingen skapa en virtuell Android-enhet för att använda Android-emulatorn eller ansluta en fysisk enhet.
Välj knappen Kör . Appen öppnas på skärmen e-post och engångslösenord.
Välj fliken API för att testa API-anropet. Ett lyckat anrop till webb-API:et returnerar HTTP
200
, medan HTTP403
betyder obehörig åtkomst.