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.
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 Tożsamość>Aplikacje>Rejestracje aplikacji.
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 kont wybierz konta tylko w tym katalogu organizacyjnym.
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.
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 dla 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 administratorzy 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
Dowiedz się więcej na temat zasady najniższych uprawnień podczas publikowania uprawnień dla internetowego interfejsu API.
Interfejs API musi opublikować co najmniej jedną rolę aplikacji, znaną również jako uprawnienia aplikacji , aby aplikacje klienckie mogły uzyskiwać token dostępu w swoim imieniu. 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" Czy chcesz aktywować rolę tej aplikacji? Zachowaj to zaznaczone 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 aplikacji Wartość ToDoList.ReadWrite.All Opis Zezwól aplikacji na odczytywanie i zapisywanie listy zadań do wykonania każdego użytkownika przy użyciu "ToDoListApi" Czy chcesz aktywować rolę tej aplikacji? Zachowaj to zaznaczone
Możesz dodać opcjonalne oświadczenie idtyp, aby ułatwić API sieci Web określenie, czy token jest tokenem aplikacji , czy tokenem aplikacji + 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 app, gdy token jest wyłącznie dla aplikacji.
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ądzaj wybierz pozycję uprawnienia interfejsu API.
W obszarze Skonfigurowane uprawnieniawybierz pozycję Dodaj uprawnienie.
Wybierz kartę interfejsy API używane przez moją organizację.
Na liście interfejsów API wybierz na przykład interfejs API 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 dla <nazwy 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}
.
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.
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 to poddomeną Directory (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.
-
Musisz umieścić w sieci interfejs API dla przykładowej aplikacji na Androida, aby móc go wywołać. Skorzystaj z Szybki start: Wdrażanie aplikacji webowej ASP.NET, aby wdrożyć internetowy interfejs 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 URL dla interfejsu Web API oraz 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 dla swojego API sieciowego.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}")
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.