Logowanie użytkowników i wywoływanie interfejsu API w przykładowej aplikacji mobilnej systemu Android przy użyciu uwierzytelniania natywnego
W tym artykule pokazano, jak skonfigurować przykładową aplikację mobilną systemu Android w celu wywołania internetowego interfejsu API platformy ASP.NET Core.
Wymagania wstępne
Rejestrowanie aplikacji internetowego interfejsu API
Zaloguj się do centrum administracyjnego firmy Microsoft Entra co najmniej jako 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 aplikacji tożsamości>> Rejestracje aplikacji.
Wybierz pozycję + Nowa rejestracja.
Na wyświetlonej stronie Rejestrowanie aplikacji 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 pozycję Konta tylko w tym katalogu organizacyjnym.
Wybierz pozycję Zarejestruj, aby utworzyć aplikację.
Po zakończeniu rejestracji zostanie wyświetlone okienko Przegląd aplikacji. Zapisz 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ż uprawnieniem delegowanym, aby aplikacje klienckie pomyślnie uzyskały token dostępu dla użytkownika. Aby opublikować zakres, wykonaj następujące kroki:
Na stronie Rejestracje aplikacji wybierz utworzoną aplikację interfejsu API (ciam-ToDoList-api), aby otworzyć stronę Przegląd.
W obszarze Zarządzanie wybierz pozycję Uwidaczniaj interfejs API.
W górnej części strony obok pozycji Identyfikator URI identyfikatora aplikacji wybierz link Dodaj , aby wygenerować identyfikator URI unikatowy dla tej aplikacji.
Zaakceptuj proponowany identyfikator URI identyfikatora aplikacji, taki jak
api://{clientId}
, i wybierz pozycję Zapisz. Gdy aplikacja internetowa żąda tokenu dostępu dla internetowego interfejsu API, dodaje identyfikator URI jako prefiks dla każdego zakresu zdefiniowanego dla interfejsu API.W obszarze Zakresy zdefiniowane przez ten interfejs API wybierz pozycję Dodaj zakres.
Wprowadź następujące wartości, które definiują dostęp do odczytu do interfejsu API, a następnie wybierz pozycję Dodaj zakres , aby zapisać zmiany:
Właściwości Wartość Nazwa zakresu ToDoList.Read Kto może wyrazić zgodę Tylko administratorzy Zgodę administratora wyświetlana nazwa Odczytywanie listy zadań do wykonania użytkowników przy użyciu listy "TodoListApi" Opis zgody administratora Zezwól aplikacji na odczytywanie listy zadań do wykonania użytkownika przy użyciu listy "TodoListApi". Stan Włączono Ponownie wybierz pozycję Dodaj zakres i wprowadź następujące wartości, które definiują zakres dostępu do odczytu i zapisu w interfejsie API. Wybierz pozycję Dodaj zakres , aby zapisać zmiany:
Właściwości Wartość Nazwa zakresu ToDoList.ReadWrite Kto może wyrazić zgodę Tylko administratorzy Zgodę administratora wyświetlana nazwa Odczytywanie i zapisywanie listy zadań do wykonania użytkowników przy użyciu listy "ToDoListApi" Opis zgody administratora Zezwalaj aplikacji na odczytywanie i zapisywanie listy zadań do wykonania użytkownika przy użyciu listy "ToDoListApi" Stan Włączono W obszarze Zarządzanie wybierz pozycję Manifest , aby otworzyć edytor manifestu interfejsu API.
Ustaw
accessTokenAcceptedVersion
właściwość na2
.Wybierz pozycję Zapisz.
Dowiedz się więcej o zasadzie 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, nazywanych również uprawnieniem 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 uwierzytelnienie się jako siebie i nie trzeba logować użytkowników. Aby opublikować uprawnienie aplikacji, wykonaj następujące kroki:
Na stronie Rejestracje aplikacji wybierz utworzoną aplikację (np. ciam-ToDoList-api), aby otworzyć stronę Przegląd.
W obszarze Zarządzanie wybierz pozycję 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łaściwości Wartość Display name ToDoList.Read.All Dozwolone typy składowych Aplikacje Wartość ToDoList.Read.All opis Zezwalaj aplikacji na odczytywanie listy zadań do wykonania każdego użytkownika przy użyciu listy "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łaściwości Wartość Display name ToDoList.ReadWrite.All Dozwolone typy składowych Aplikacje Wartość ToDoList.ReadWrite.All opis Zezwalaj aplikacji na odczytywanie i zapisywanie listy zadań do wykonania każdego użytkownika przy użyciu listy "ToDoListApi"
Konfigurowanie opcjonalnych oświadczeń
Możesz idtyp opcjonalne oświadczenie, aby ułatwić interfejsowi API sieci Web określenie, czy token jest tokenem aplikacji, czy aplikacją i tokenem użytkownika. Mimo że w tym samym celu można użyć kombinacji oświadczeń scp i ról , użycie oświadczenia idtyp jest najprostszym sposobem przekazania tokenu aplikacji i tokenu użytkownika. Na przykład wartość tego oświadczenia to aplikacja , gdy token jest tokenem tylko dla aplikacji.
Udzielanie uprawnień interfejsu API do przykładowej aplikacji systemu Android
Po zarejestrowaniu aplikacji klienckiej i internetowego interfejsu API i uwidocznieniu interfejsu API przez utworzenie zakresów można skonfigurować uprawnienia klienta do interfejsu API, wykonując następujące kroki:
Na stronie Rejestracje aplikacji wybierz utworzoną aplikację (np. ciam-client-app), aby otworzyć stronę Przegląd.
W obszarze Zarządzanie wybierz pozycję Uprawnienia interfejsu API.
W obszarze Skonfigurowane uprawnienia wybierz pozycję Dodaj uprawnienie.
Wybierz kartę Interfejsy API używane przez moją organizację.
Na liście interfejsów API wybierz interfejs API, taki jak ciam-ToDoList-api.
Wybierz opcję Delegowane uprawnienia .
Z listy uprawnień wybierz pozycję ToDoList.Read, ToDoList.ReadWrite (w razie potrzeby użyj pola wyszukiwania).
Wybierz przycisk Dodaj uprawnienia.
W tym momencie przypisano uprawnienia poprawnie. Jednak ponieważ dzierżawa jest dzierżawą klienta, użytkownicy odbiorcy 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 <swojej nazwy> dzierżawy, a następnie wybierz pozycję Tak.
Wybierz pozycję Odśwież, a następnie sprawdź, czy w obszarze Stan dla obu uprawnień jest wyświetlana wartość Przyznane dla <nazwy> dzierżawy.
Z listy Skonfigurowane uprawnienia wybierz uprawnienia ToDoList.Read i ToDoList.ReadWrite, pojedynczo, a następnie skopiuj pełny identyfikator 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
2-Authorization/1-call-own-api-aspnet-core-mvc/ToDoListAPI/appsettings.json
plik.Znajdź symbol zastępczy:
Enter_the_Application_Id_Here
zastąp go identyfikatorem aplikacji (klienta) skopiowanego wcześniej internetowego interfejsu API.Enter_the_Tenant_Id_Here
i zastąp go skopiowanymi wcześniej identyfikatorami katalogu (dzierżawy).Enter_the_Tenant_Subdomain_Here
i zastąp ją poddomeną Katalog (dzierżawa). Jeśli na przykład domena podstawowa dzierżawy tocontoso.onmicrosoft.com
, użyj poleceniacontoso
. Jeśli nie masz swojej nazwy dzierżawy, dowiedz się, jak odczytywać szczegóły dzierżawy.
Aby ją wywołać, musisz hostować internetowy interfejs API dla przykładowej aplikacji systemu Android. Postępuj zgodnie z przewodnikiem 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
/app/src/main/java/com/azuresamples/msalnativeauthandroidkotlinsampleapp/AccessApiFragment.kt
plik.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 sekcji Udzielanie 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 kartę Interfejs API, aby przetestować wywołanie interfejsu API. Pomyślne wywołanie internetowego interfejsu API zwraca protokół HTTP, a protokół HTTP
200
403
oznacza nieautoryzowany dostęp.