Konfigurowanie uwierzytelniania w przykładowej aplikacji Swift dla systemu iOS przy użyciu usługi Azure AD B2C

W tym artykule użyto przykładowej aplikacji Swift dla systemu iOS, aby zilustrować sposób dodawania uwierzytelniania usługi Azure Active Directory B2C (Azure AD B2C) do aplikacji mobilnych.

Omówienie

OpenID Connect (OIDC) to protokół uwierzytelniania oparty na protokole OAuth 2.0. Za pomocą funkcji OIDC można bezpiecznie logować użytkowników do aplikacji. W tym przykładzie aplikacji mobilnej użyto biblioteki Microsoft Authentication Library (MSAL) z kluczem weryfikacji kodu autoryzacji OIDC dla przepływu PKCE (Code Exchange). Biblioteka MSAL to biblioteka udostępniana przez firmę Microsoft, która upraszcza dodawanie obsługi uwierzytelniania i autoryzacji do aplikacji mobilnych.

Przepływ logowania obejmuje następujące kroki:

  1. Użytkownicy otwierają aplikację i wybierają pozycję Zaloguj.
  2. Aplikacja otwiera przeglądarkę systemową urządzenia przenośnego i uruchamia żądanie uwierzytelnienia w celu Azure AD B2C.
  3. Użytkownicy tworzą konto lub logują się, resetują hasło lub logują się przy użyciu konta społecznościowego.
  4. Po pomyślnym zalogowaniu użytkowników Azure AD B2C zwraca kod autoryzacji do aplikacji.
  5. Aplikacja wykonuje następujące czynności:
    1. Wymienia kod autoryzacji do tokenu identyfikatora, tokenu dostępu i tokenu odświeżania.
    2. Odczytuje oświadczenia tokenu identyfikatora.
    3. Przechowuje tokeny w pamięci podręcznej w pamięci do późniejszego użycia.

Omówienie rejestracji aplikacji

Aby umożliwić aplikacji logowanie się przy użyciu usługi Azure AD B2C i wywoływanie internetowego interfejsu API, zarejestruj dwie aplikacje w katalogu Azure AD B2C:

  • Rejestracja aplikacji mobilnej umożliwia aplikacji logowanie się przy użyciu usługi Azure AD B2C. Podczas rejestracji aplikacji określ identyfikator URI przekierowania. Identyfikator URI przekierowania to punkt końcowy, do którego użytkownicy są przekierowywani przez Azure AD B2C po uwierzytelnieniu w usłudze Azure AD B2C. Proces rejestracji aplikacji generuje identyfikator aplikacji, znany również jako identyfikator klienta, który jednoznacznie identyfikuje aplikację mobilną (na przykład identyfikator aplikacji: 1).

  • Rejestracja internetowego interfejsu API umożliwia aplikacji wywoływanie chronionego internetowego interfejsu API. Rejestracja uwidacznia uprawnienia internetowego interfejsu API (zakresy). Proces rejestracji aplikacji generuje identyfikator aplikacji, który jednoznacznie identyfikuje internetowy interfejs API (na przykład identyfikator aplikacji: 2). Przyznaj aplikacji mobilnej (identyfikator aplikacji: 1) uprawnienia do zakresów internetowego interfejsu API (identyfikator aplikacji: 2).

Rejestracja i architektura aplikacji przedstawiono na następujących diagramach:

Diagram aplikacji mobilnej z rejestracjami i tokenami wywołań internetowego interfejsu API.

Wywoływanie do internetowego interfejsu API

Po zakończeniu uwierzytelniania użytkownicy wchodzą w interakcję z aplikacją, która wywołuje chroniony internetowy interfejs API. Internetowy interfejs API używa uwierzytelniania tokenu elementu nośnego . Token elementu nośnego to token dostępu uzyskany przez aplikację z Azure AD B2C. Aplikacja przekazuje token w nagłówku autoryzacji żądania HTTPS.

Authorization: Bearer <access token>

Jeśli zakres tokenu dostępu nie jest zgodny z zakresami internetowego interfejsu API, biblioteka uwierzytelniania uzyskuje nowy token dostępu z prawidłowymi zakresami.

Przepływ wylogowania

Przepływ wylogowania obejmuje następujące kroki:

  1. W aplikacji użytkownicy wyloguj się.
  2. Aplikacja czyści obiekty sesji, a biblioteka uwierzytelniania czyści pamięć podręczną tokenów.
  3. Aplikacja przenosi użytkowników do punktu końcowego wylogowania Azure AD B2C, aby zakończyć sesję Azure AD B2C.
  4. Użytkownicy są przekierowywani z powrotem do aplikacji.

Wymagania wstępne

Komputer z systemem:

Krok 1. Konfigurowanie przepływu użytkownika

Gdy użytkownicy próbują zalogować się do aplikacji, aplikacja uruchamia żądanie uwierzytelnienia do punktu końcowego autoryzacji za pośrednictwem przepływu użytkownika. Przepływ użytkownika definiuje i kontroluje środowisko użytkownika. Po zakończeniu przepływu użytkownika przez użytkowników Azure AD B2C generuje token, a następnie przekierowuje użytkowników z powrotem do aplikacji.

Jeśli jeszcze tego nie zrobiono, utwórz przepływ użytkownika lub zasady niestandardowe. Powtórz kroki, aby utworzyć trzy oddzielne przepływy użytkownika w następujący sposób:

  • Połączony przepływ logowania i tworzenia konta użytkownika, taki jak susi. Ten przepływ użytkownika obsługuje również środowisko Nie pamiętam hasła .
  • Przepływ użytkownika do edycji profilu , taki jak edit_profile.
  • Przepływ użytkownika resetowania hasła , taki jak reset_password.

Azure AD B2C poprzedza B2C_1_ nazwę przepływu użytkownika. Na przykład, susi staje się B2C_1_susi.

Krok 2. Rejestrowanie aplikacji mobilnych

Utwórz aplikację mobilną i rejestrację aplikacji internetowego interfejsu API oraz określ zakresy internetowego interfejsu API.

Krok 2.1. Rejestrowanie aplikacji internetowego interfejsu API

Aby utworzyć rejestrację aplikacji internetowego interfejsu API (identyfikator aplikacji: 2), wykonaj następujące kroki:

  1. Zaloguj się do Azure portal.

  2. Upewnij się, że używasz katalogu zawierającego dzierżawę usługi Azure AD B2C. Wybierz ikonę Katalogi i subskrypcje na pasku narzędzi portalu.

  3. W ustawieniach portalu | Strona Katalogi i subskrypcje, znajdź katalog Azure AD B2C na liście Nazwa katalogu, a następnie wybierz pozycję Przełącz.

  4. W Azure Portal wyszukaj i wybierz pozycję Azure AD B2C.

  5. Wybierz Rejestracje aplikacji, a następnie wybierz pozycję Nowa rejestracja.

  6. W polu Nazwa wprowadź nazwę aplikacji (na przykład my-api1). Pozostaw wartości domyślne dla identyfikatora URI przekierowania i obsługiwanych typów kont.

  7. Wybierz pozycję Zarejestruj.

  8. Po zakończeniu rejestracji aplikacji wybierz pozycję Przegląd.

  9. Zarejestruj wartość identyfikatora aplikacji (klienta) do późniejszego użycia podczas konfigurowania aplikacji internetowej.

    Zrzut ekranu przedstawiający sposób uzyskiwania internetowego identyfikatora I aplikacji P.

Krok 2.2. Konfigurowanie zakresów aplikacji internetowego interfejsu API

  1. Wybierz utworzoną aplikację my-api1 (identyfikator aplikacji: 2), aby otworzyć stronę Przegląd .

  2. W obszarze Zarządzanie wybierz pozycję Uwidaczniaj interfejs API.

  3. Obok pozycji Identyfikator URI identyfikatora aplikacji wybierz link Ustaw . Zastąp wartość domyślną (GUID) unikatową nazwą (na przykład tasks-api), a następnie wybierz pozycję Zapisz.

    Gdy aplikacja internetowa żąda tokenu dostępu dla internetowego interfejsu API, powinien dodać ten identyfikator URI jako prefiks dla każdego zakresu zdefiniowanego dla interfejsu API.

  4. W obszarze Zakresy zdefiniowane przez ten interfejs API wybierz pozycję Dodaj zakres.

  5. Aby utworzyć zakres definiujący dostęp do odczytu do interfejsu API:

    1. W polu Nazwa zakresu wprowadź wartość tasks.read.
    2. W przypadku Administracja nazwy wyświetlanej zgody wprowadź odczyt dostępu do interfejsu API zadań.
    3. Aby uzyskać Administracja opis zgody, wprowadź zezwalanie na dostęp do odczytu do interfejsu API zadań.
  6. Wybierz pozycję Dodaj zakres.

  7. Wybierz pozycję Dodaj zakres, a następnie dodaj zakres definiujący dostęp do zapisu do interfejsu API:

    1. W polu Nazwa zakresu wprowadź ciąg tasks.write.
    2. W przypadku Administracja nazwa wyświetlana zgody wprowadź ciąg Write access to tasks API (Dostęp do zapisu do interfejsu API zadań).
    3. Aby uzyskać Administracja opis zgody, wprowadź zezwalanie na dostęp do zapisu do interfejsu API zadań.
  8. Wybierz pozycję Dodaj zakres.

Krok 2.3. Rejestrowanie aplikacji mobilnej

Aby utworzyć rejestrację aplikacji mobilnej, wykonaj następujące czynności:

  1. Zaloguj się do Azure portal.
  2. Wybierz Rejestracje aplikacji, a następnie wybierz pozycję Nowa rejestracja.
  3. W obszarze Nazwa wprowadź nazwę aplikacji (na przykład iOs-app1).
  4. W obszarze Obsługiwane typy kont wybierz pozycję Konta w dowolnym dostawcy tożsamości lub katalogu organizacyjnym (w celu uwierzytelniania użytkowników za pomocą przepływów użytkownika).
  5. W obszarze Identyfikator URI przekierowania wybierz pozycję Klient publiczny/natywny (komputer przenośny&), a następnie w polu Adres URL wprowadź .msauth.com.microsoft.identitysample.MSALiOS://auth
  6. Wybierz pozycję Zarejestruj.
  7. Po zakończeniu rejestracji aplikacji wybierz pozycję Przegląd.
  8. Rejestruj identyfikator aplikacji (klienta) do późniejszego użycia podczas konfigurowania aplikacji mobilnej. Zrzut ekranu przedstawiający identyfikator aplikacji mobilnej.

Krok 2.4. Udzielanie uprawnień aplikacji mobilnej dla internetowego interfejsu API

Aby udzielić aplikacji (identyfikator aplikacji: 1) uprawnień, wykonaj następujące kroki:

  1. Wybierz pozycję Rejestracje aplikacji, a następnie wybierz utworzoną aplikację (identyfikator aplikacji: 1).

  2. W obszarze Zarządzanie wybierz pozycję Uprawnienia interfejsu API.

  3. W obszarze Skonfigurowane uprawnienia wybierz pozycję Dodaj uprawnienie.

  4. Wybierz kartę Moje interfejsy API .

  5. Wybierz interfejs API (identyfikator aplikacji: 2), do którego ma zostać udzielony dostęp aplikacji internetowej. Na przykład wprowadź my-api1.

  6. W obszarze Uprawnienie rozwiń węzeł zadania, a następnie wybierz zdefiniowane wcześniej zakresy (na przykład tasks.read i tasks.write).

  7. Wybierz pozycję Dodaj uprawnienia.

  8. Wybierz pozycję Udziel zgody administratora dla < nazwy >dzierżawy.

  9. Wybierz pozycję Tak.

  10. Wybierz pozycję Odśwież, a następnie sprawdź, czy wartość Udzielono dla ... jest wyświetlana w obszarze Stan dla obu zakresów.

  11. Z listy Skonfigurowane uprawnienia wybierz zakres, a następnie skopiuj pełną nazwę zakresu.

    Zrzut ekranu przedstawiający okienko skonfigurowanych uprawnień z informacją o udzieleniu uprawnień dostępu do odczytu.

Krok 3. Konfigurowanie przykładowego internetowego interfejsu API

Ten przykład uzyskuje token dostępu z odpowiednimi zakresami, których aplikacja mobilna może używać dla internetowego interfejsu API. Aby wywołać internetowy interfejs API z kodu, wykonaj następujące czynności:

  1. Użyj istniejącego internetowego interfejsu API lub utwórz nowy. Aby uzyskać więcej informacji, zobacz Włączanie uwierzytelniania we własnym internetowym interfejsie API przy użyciu usługi Azure AD B2C.
  2. Zmień przykładowy kod, aby wywołać internetowy interfejs API.
  3. Po skonfigurowaniu internetowego interfejsu API skopiuj identyfikator URI internetowego punktu końcowego interfejsu API. W następnych krokach użyjesz internetowego punktu końcowego interfejsu API.

Porada

Jeśli nie masz internetowego interfejsu API, nadal możesz uruchomić ten przykład. W takim przypadku aplikacja zwraca token dostępu, ale nie będzie mógł wywołać internetowego interfejsu API.

Krok 4. Pobieranie przykładu aplikacji mobilnej dla systemu iOS

  1. Pobierz plik .zip lub sklonuj przykładową aplikację internetową z repozytorium GitHub.

    git clone https://github.com/Azure-Samples/active-directory-b2c-ios-swift-native-msal
    
  2. Zainstaluj bibliotekę MSAL za pomocą narzędzia CocoaPods . W oknie terminalu przejdź do folderu głównego projektu. Ten folder zawiera plik podfile . Uruchom następujące polecenie:

    pod install
    
  3. Otwórz obszar roboczy za pomocą MSALiOS.xcworkspace programu Xcode.

Krok 5. Konfigurowanie przykładowej aplikacji mobilnej

Otwórz plik ViewController.swift . Elementy ViewController członkowskie klasy zawierają informacje o dostawcy tożsamości usługi Azure AD B2C. Aplikacja mobilna używa tych informacji do ustanawiania relacji zaufania z usługą Azure AD B2C, logowania użytkowników i wyprzedań, uzyskiwania tokenów i weryfikowania ich.

Zaktualizuj następujące elementy członkowskie klasy:

Klucz Wartość
kTenantName Pełna nazwa dzierżawy usługi Azure AD B2C (na przykład contoso.onmicrosoft.com).
kAuthorityHostName Pierwsza część nazwy dzierżawy usługi Azure AD B2C (na przykład contoso.b2clogin.com).
kClientID Identyfikator aplikacji mobilnej z kroku 2.3.
kRedirectUri Identyfikator URI przekierowania aplikacji mobilnej z kroku 2.3. msauth.com.microsoft.identitysample.MSALiOS://auth
kSignupOrSigninPolicy Przepływ użytkownika rejestracji lub logowania lub zasady niestandardowe utworzone w kroku 1.
kEditProfilePolicy Edytowanie przepływu użytkownika profilu lub zasad niestandardowych utworzonych w kroku 1.
kGraphURI (Opcjonalnie) Internetowy punkt końcowy interfejsu API utworzony w kroku 3 (na przykład https://contoso.azurewebsites.net/hello).
kScopes Zakresy internetowego interfejsu API utworzone w kroku 2.4.

Krok 6. Uruchamianie i testowanie aplikacji mobilnej

  1. Skompiluj i uruchom projekt za pomocą symulatora połączonego urządzenia z systemem iOS.

  2. Wybierz pozycję Zaloguj się, a następnie zarejestruj się lub zaloguj się przy użyciu konta lokalnego lub społecznościowego usługi Azure AD B2C.

    Zrzut ekranu przedstawiający sposób uruchamiania przepływu logowania.

  3. Po pomyślnym uwierzytelnieniu na pasku nawigacyjnym zobaczysz nazwę wyświetlaną.

    Zrzut ekranu przedstawiający token dostępu Azure AD B2C i identyfikator użytkownika.

Następne kroki

Instrukcje: