Udostępnij za pośrednictwem


Logowanie użytkowników i wywoływanie interfejsu API w przykładowej aplikacji systemu Android przy użyciu uwierzytelniania natywnego

Dotyczy: Biały okrąg z szarym symbolem X. Najemcy usługi Workforce Zielony okrąg z białym znakiem wyboru. 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

  1. Zaloguj się do centrum administracyjnego Microsoft Entra jako co najmniej Deweloper aplikacji.

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

  3. Przejdź do Identity>Applications>App registrations.

  4. Wybierz , a następnie Nowa rejestracja.

  5. Na wyświetlonej stronie Zarejestruj aplikację wprowadź informacje o rejestracji aplikacji:

    1. W sekcji Nazwa wprowadź zrozumiałą nazwę aplikacji, która będzie wyświetlana użytkownikom aplikacji, na przykład ciam-ToDoList-api.

    2. W obszarze Obsługiwane typy kontwybierz pozycję konta w tym katalogu organizacyjnym tylko.

  6. Wybierz pozycję Zarejestruj, aby utworzyć aplikację.

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

  1. Na stronie rejestracji aplikacji wybierz utworzoną aplikację interfejsu API (ciam-ToDoList-api), aby otworzyć jej stronę Przegląd.

  2. W obszarze Zarządzajwybierz pozycję Uwidaczniaj interfejs API.

  3. W górnej części strony obok identyfikatora URI aplikacjiwybierz link Dodaj, aby wygenerować unikatowy identyfikator URI dla tej aplikacji.

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

  5. W sekcji Zakresy zdefiniowane przez ten interfejs API, wybierz Dodaj zakres.

  6. 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
  7. 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
  8. W obszarze Zarządzajwybierz Manifest, aby otworzyć edytor manifestu API.

  9. Ustaw właściwość accessTokenAcceptedVersion na wartość 2.

  10. 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:

  1. Na stronie rejestracji aplikacji wybierz utworzoną aplikację (na przykład ciam-ToDoList-api), aby otworzyć stronę Przegląd.

  2. W obszarze Zarządzaj, wybierz Role aplikacji.

  3. 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"
  4. 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:

  1. Na stronie rejestracje aplikacji wybierz utworzoną aplikację (taką jak ciam-client-app), aby otworzyć stronę Przegląd.

  2. W obszarze Zarządzajwybierz pozycję uprawnienia interfejsu API .

  3. W obszarze Skonfigurowane uprawnieniawybierz pozycję Dodaj uprawnienie.

  4. Wybierz interfejsy API używane przez moją organizację na karcie.

  5. Na liście interfejsów API wybierz interfejs API, taki jak ciam-ToDoList-api.

  6. Wybierz opcję uprawnienia delegowane .

  7. Z listy uprawnień wybierz pozycję ToDoList.Read, ToDoList.ReadWrite (w razie potrzeby użyj pola wyszukiwania).

  8. Wybierz przycisk Dodaj uprawnienia.

  9. 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:

    1. Wybierz pozycję Udziel zgody administratora <nazwę dzierżawy>, a następnie wybierz pozycję Tak.

    2. 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ń.

  10. 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} lub api://{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

  1. W edytorze kodu otwórz plik 2-Authorization/1-call-own-api-aspnet-core-mvc/ToDoListAPI/appsettings.json.

  2. 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 jest contoso.onmicrosoft.com, użyj contoso. 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.

  1. W programie Android Studio otwórz plik /app/src/main/java/com/azuresamples/msalnativeauthandroidkotlinsampleapp/AccessApiFragment.kt.

  2. 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
    
  3. 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:

  1. Na pasku narzędzi wybierz aplikację z menu Konfiguracji uruchamiania.

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

  3. Wybierz przycisk Uruchom. Aplikacja zostanie otwarta na ekranie poczty e-mail i jednorazowego kodu dostępu.

  4. Wybierz zakładkę API, aby przetestować wywołanie interfejsu API. Pomyślne wywołanie interfejsu API zwraca kod HTTP 200, podczas gdy kod HTTP 403 oznacza nieautoryzowany dostęp.

Następne kroki