Logowanie użytkowników i wywoływanie interfejsu API w przykładowej aplikacji systemu Android przy użyciu uwierzytelniania natywnego
Dotyczy: Najemcy usługi Workforce
Najemcy zewnętrzni (dowiedz się więcej)
Z tego przewodnika Szybki start dowiesz się, jak skonfigurować przykładową aplikację mobilną dla systemu Android w celu wywołania internetowego interfejsu API platformy ASP.NET Core.
Warunki wstępne
Rejestracja aplikacji webowego interfejsu API
Zaloguj się do centrum administracyjnego Microsoft Entra jako co najmniej Deweloper aplikacji.
Jeśli masz dostęp do wielu dzierżaw, użyj ikony Ustawienia
w górnym menu, aby przełączyć się do dzierżawy zewnętrznej z menu Katalogi i subskrypcje.
Przejdź do Identity>Applications>App registrations.
Wybierz , a następnie Nowa rejestracja.
Na wyświetlonej stronie Zarejestruj aplikację wprowadź informacje o rejestracji aplikacji:
W sekcji Nazwa wprowadź zrozumiałą nazwę aplikacji, która będzie wyświetlana użytkownikom aplikacji, na przykład ciam-ToDoList-api.
W obszarze Obsługiwane typy kontwybierz pozycję konta w tym katalogu organizacyjnym tylko.
Wybierz pozycję Zarejestruj, aby utworzyć aplikację.
Po zakończeniu rejestracji zostanie wyświetlone okienko Przeglądu aplikacji . Zarejestruj identyfikator katalogu (dzierżawy) i identyfikator aplikacji (klienta) do użycia w kodzie źródłowym aplikacji.
Konfigurowanie zakresów interfejsu API
Interfejs API musi opublikować co najmniej jeden zakres, nazywany również uprawnieniami delegowanymi , aby aplikacje klienckie pomyślnie uzyskały token dostępu dla użytkownika. Aby opublikować zakres, wykonaj następujące kroki:
Na stronie rejestracji aplikacji wybierz utworzoną aplikację interfejsu API (ciam-ToDoList-api), aby otworzyć jej stronę Przegląd.
W obszarze Zarządzajwybierz pozycję Uwidaczniaj interfejs API.
W górnej części strony obok identyfikatora URI aplikacjiwybierz link Dodaj, aby wygenerować unikatowy identyfikator URI dla tej aplikacji.
Zaakceptuj proponowany identyfikator URI aplikacji, taki jak
api://{clientId}
, i wybierz pozycję Zapisz. Gdy aplikacja internetowa żąda tokenu dostępu do interfejsu API, dodaje URI jako prefiks dla każdego zdefiniowanego zakresu.W sekcji Zakresy zdefiniowane przez ten interfejs API, wybierz Dodaj zakres.
Wprowadź następujące wartości, które definiują uprawnienia odczytu dla interfejsu API, a następnie wybierz Dodaj zakres, aby zapisać zmiany.
Własność Wartość Nazwa zakresu ToDoList.Read Kto może wyrazić zgodę Tylko administratorzy Nazwa wyświetlana zgody administratora Odczytaj listę zadań użytkowników przy użyciu "TodoListApi" Opis zgody administratora Pozwól aplikacji odczytać listę zadań użytkownika za pomocą "TodoListApi". Stan włączone Wybierz ponownie Dodaj zakres, a następnie wprowadź następujące wartości definiujące zakres dostępu do odczytu i zapisu w interfejsie API. Wybierz Dodaj zakres, aby zapisać zmiany.
Własność Wartość Nazwa zakresu ToDoList.ReadWrite Kto może wyrazić zgodę Tylko dla administratorów Nazwa wyświetlana zgody administratora Odczytaj i zapisuj listę zadań użytkowników przy użyciu "ToDoListApi" Opis zgody administratora Zezwól aplikacji na odczytywanie i zapisywanie listy zadań użytkownika przy użyciu 'ToDoListApi' Stan włączone W obszarze Zarządzajwybierz Manifest, aby otworzyć edytor manifestu API.
Ustaw właściwość
accessTokenAcceptedVersion
na wartość2
.Wybierz pozycję Zapisz.
Dowiedz się więcej na temat zasady najniższych uprawnień podczas publikowania uprawnień dla internetowego interfejsu API.
Konfigurowanie ról aplikacji
Interfejs API musi opublikować co najmniej jedną rolę aplikacji dla aplikacji, nazywaną również uprawnieniami aplikacji , aby aplikacje klienckie uzyskały token dostępu jako siebie. Uprawnienia aplikacji to typ uprawnień, które interfejsy API powinny publikować, gdy chcą umożliwić aplikacjom klienckim pomyślne uwierzytelnianie się jako aplikacja, bez konieczności logowania użytkowników. Aby opublikować uprawnienie aplikacji, wykonaj następujące kroki:
Na stronie rejestracji aplikacji wybierz utworzoną aplikację (na przykład ciam-ToDoList-api), aby otworzyć stronę Przegląd.
W obszarze Zarządzaj, wybierz Role aplikacji.
Wybierz pozycję Utwórz rolę aplikacji, a następnie wprowadź następujące wartości, a następnie wybierz pozycję Zastosuj, aby zapisać zmiany:
Własność Wartość Nazwa wyświetlana ToDoList.Read.All Dozwolone typy członków aplikacji Wartość ToDoList.Read.All Opis Zezwalaj aplikacji na odczytywanie listy zadań do wykonania wszystkich użytkowników przy użyciu "TodoListApi" Ponownie wybierz pozycję Utwórz rolę aplikacji, a następnie wprowadź następujące wartości dla drugiej roli aplikacji, a następnie wybierz pozycję Zastosuj, aby zapisać zmiany:
Własność Wartość Nazwa wyświetlana ToDoList.ReadWrite.All Dozwolone typy członków Aplikacje Wartość ToDoList.ReadWrite.All Opis Zezwól aplikacji na odczytywanie i zapisywanie listy zadań do wykonania każdego użytkownika przy użyciu "ToDoListApi"
Konfigurowanie opcjonalnych oświadczeń
Możesz dodać opcjonalne oświadczenie idtyp, aby ułatwić interfejsowi web API określenie, czy token jest tokenem aplikacji, czy tokenem aplikacji i użytkownika. Chociaż można użyć kombinacji ról i oświadczeń scp w tym samym celu, użycie oświadczenia idtyp jest najprostszym sposobem rozróżnienia tokenu aplikacji i tokenu aplikacji + użytkownika. Na przykład wartość tego oświadczenia to aplikacji, gdy token jest tokenem tylko dla aplikacji.
Udzielanie uprawnień interfejsu API do przykładowej aplikacji systemu Android
Po zarejestrowaniu zarówno aplikacji klienckiej, jak i interfejsu web API oraz udostępnieniu API przez utworzenie zakresów, można skonfigurować uprawnienia klienta do API, wykonując następujące kroki:
Na stronie rejestracje aplikacji wybierz utworzoną aplikację (taką jak ciam-client-app), aby otworzyć stronę Przegląd.
W obszarze Zarządzajwybierz pozycję uprawnienia interfejsu API .
W obszarze Skonfigurowane uprawnieniawybierz pozycję Dodaj uprawnienie.
Wybierz interfejsy API używane przez moją organizację na karcie.
Na liście interfejsów API wybierz interfejs API, taki jak ciam-ToDoList-api.
Wybierz opcję uprawnienia delegowane .
Z listy uprawnień wybierz pozycję ToDoList.Read, ToDoList.ReadWrite (w razie potrzeby użyj pola wyszukiwania).
Wybierz przycisk Dodaj uprawnienia.
W tej chwili poprawnie przypisano uprawnienia. Jednak ponieważ lokator jest lokatorem klienta, użytkownicy końcowi (konsumenci) sami nie mogą wyrazić zgody na te uprawnienia. Aby rozwiązać ten problem, administrator musi wyrazić zgodę na te uprawnienia w imieniu wszystkich użytkowników w dzierżawie:
Wybierz pozycję Udziel zgody administratora <nazwę dzierżawy>, a następnie wybierz pozycję Tak.
Wybierz pozycję Odśwież, a następnie sprawdź, czy pozycja Udzielono <dla nazwy Twojego dzierżawcy> jest wyświetlana w obszarze Stan dla obu uprawnień.
Z listy Skonfigurowane uprawnienia wybierz uprawnienia ToDoList.Read i ToDoList.ReadWrite, jedno po drugim, a następnie skopiuj pełny URI uprawnienia do późniejszego użycia. Pełny identyfikator URI uprawnień wygląda podobnie do
api://{clientId}/{ToDoList.Read}
lubapi://{clientId}/{ToDoList.ReadWrite}
.
Klonowanie lub pobieranie przykładowego internetowego interfejsu API
Aby uzyskać przykładową aplikację, możesz ją sklonować z usługi GitHub lub pobrać jako plik .zip.
Aby sklonować przykład, otwórz wiersz polecenia i przejdź do miejsca, w którym chcesz utworzyć projekt, a następnie wprowadź następujące polecenie:
git clone https://github.com/Azure-Samples/ms-identity-ciam-dotnet-tutorial.git
pobierz plik .zip. Wyodrębnij go do ścieżki pliku, w której długość nazwy jest mniejsza niż 260 znaków.
Konfigurowanie i uruchamianie przykładowego internetowego interfejsu API
W edytorze kodu otwórz plik
2-Authorization/1-call-own-api-aspnet-core-mvc/ToDoListAPI/appsettings.json
.Znajdź symbol zastępczy:
-
Enter_the_Application_Id_Here
i zastąp go identyfikatorem klienta (aplikacji) interfejsu API sieci Web, który skopiowałeś wcześniej. -
Enter_the_Tenant_Id_Here
i zastąp go identyfikatorem katalogu (dzierżawy) , który skopiowałeś wcześniej. -
Enter_the_Tenant_Subdomain_Here
i zastąp ją poddomeną Katalog (dzierżawa). Jeśli na przykład domena podstawowa dzierżawy jestcontoso.onmicrosoft.com
, użyjcontoso
. Jeśli nie masz nazwy dzierżawcy, dowiedz się, jak sprawdzać szczegóły dzierżawy.
-
Aby ją wywołać, musisz hostować internetowy interfejs API dla przykładowej aplikacji systemu Android. Postępuj zgodnie z Szybki start: wdrażanie aplikacji internetowej ASP.NET w celu wdrożenia internetowego interfejsu API.
Konfigurowanie przykładowej aplikacji mobilnej dla systemu Android do wywoływania internetowego interfejsu API
Przykład umożliwia skonfigurowanie wielu punktów końcowych adresu URL internetowego interfejsu API i zestawów zakresów. W takim przypadku należy skonfigurować tylko jeden punkt końcowy adresu URL internetowego interfejsu API i skojarzone z nim zakresy.
W programie Android Studio otwórz plik
/app/src/main/java/com/azuresamples/msalnativeauthandroidkotlinsampleapp/AccessApiFragment.kt
.Znajdź właściwość o nazwie
WEB_API_URL_1
i ustaw adres URL na internetowy interfejs API.private const val WEB_API_URL_1 = "" // Developers should set the respective URL of their web API here
Znajdź właściwość o nazwie
scopesForAPI1
i ustaw zakresy zarejestrowane w . Udziel uprawnień interfejsu API do przykładowej aplikacji systemu Android.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}")
Uruchamianie przykładowej aplikacji systemu Android i wywoływanie internetowego interfejsu API
Aby skompilować i uruchomić aplikację, wykonaj następujące kroki:
Na pasku narzędzi wybierz aplikację z menu Konfiguracji uruchamiania.
W menu urządzenia docelowego wybierz urządzenie, na którym chcesz uruchomić aplikację.
Jeśli nie masz żadnych skonfigurowanych urządzeń, musisz utworzyć urządzenie wirtualne z systemem Android, aby korzystać z emulatora systemu Android lub połączyć urządzenie fizyczne.
Wybierz przycisk Uruchom. Aplikacja zostanie otwarta na ekranie poczty e-mail i jednorazowego kodu dostępu.
Wybierz zakładkę API, aby przetestować wywołanie interfejsu API. Pomyślne wywołanie interfejsu API zwraca kod HTTP
200
, podczas gdy kod HTTP403
oznacza nieautoryzowany dostęp.