Udostępnij za pośrednictwem


Samouczek: przygotowywanie aplikacji systemu iOS (Swift) do uwierzytelniania

Jest to drugi samouczek z serii samouczków, który pokazuje, jak dodać bibliotekę Microsoft Authentication Library (MSAL) dla systemów iOS i macOS do aplikacji Swift dla systemu iOS.

W tym samouczku wykonasz następujące instrukcje:

  • Dodaj strukturę MSAL do aplikacji systemu iOS (Swift).
  • Utwórz wystąpienie zestawu SDK.

Wymagania wstępne

Dodawanie platformy MSAL do aplikacji systemu iOS (Swift)

Zestaw SDK uwierzytelniania biblioteki MSAL służy do integrowania uwierzytelniania z aplikacjami przy użyciu standardowych protokołów OAuth2 i OpenID Connect. Umożliwia ona logowanie użytkowników lub aplikacji przy użyciu tożsamości firmy Microsoft. Aby dodać bibliotekę MSAL do projektu systemu iOS (Swift), wykonaj następujące kroki:

  1. Otwórz projekt systemu iOS w środowisku Xcode.
  2. Wybierz pozycję Dodaj zależności pakietu... z menu Plik .
  3. Wprowadź https://github.com/AzureAD/microsoft-authentication-library-for-objc jako adres URL pakietu i wybierz pozycję Dodaj pakiet

Aktualizowanie identyfikatora pakietu

W ekosystemie firmy Apple identyfikator pakietu jest unikatowym identyfikatorem aplikacji. Aby zaktualizować identyfikator pakietu w projekcie, wykonaj następujące kroki:

  1. Otwórz ustawienia projektu. W sekcji Tożsamość wprowadź identyfikator pakietu.

  2. Kliknij prawym przyciskiem myszy plik Info.plist i wybierz pozycję Otwórz jako>kod źródłowy.

  3. W węźle głównym dict zastąp element Enter_the_bundle_Id_Here identyfikatorem pakietu użytym w portalu. Zwróć uwagę na msauth. prefiks w ciągu.

    <key>CFBundleURLTypes</key>
    <array>
       <dict>
          <key>CFBundleURLSchemes</key>
          <array>
             <string>msauth.Enter_the_Bundle_Id_Here</string>
          </array>
       </dict>
    </array>
    

Tworzenie wystąpienia zestawu SDK

Aby utworzyć wystąpienie biblioteki MSAL w projekcie, wykonaj następujące kroki:

  1. Zaimportuj bibliotekę MSAL do kontrolera widoku, dodając import MSAL w górnej części ViewController klasy.

  2. Dodaj zmienną składową applicationContext do klasy ViewController, dodając następujący kod tuż przed funkcją viewDidLoad() :

    var applicationContext : MSALPublicClientApplication?
    var webViewParamaters : MSALWebviewParameters?
    

    Kod deklaruje dwie zmienne: applicationContext, która przechowuje wystąpienie MSALPublicClientApplicationklasy , i webViewParameters, w którym jest przechowywane wystąpienie MSALWebviewParametersklasy . MSALPublicClientApplication jest klasą dostarczaną przez bibliotekę MSAL do obsługi publicznych aplikacji klienckich. Jest MSALWebviewParameters to klasa dostarczana przez bibliotekę MSAL, która definiuje parametry służące do konfigurowania widoku internetowego używanego podczas procesu uwierzytelniania.

  3. Dodaj następujący kod do funkcji view viewDidLoad() :

     do {
            try self.initMSAL()
        } catch let error {
            self.updateLogging(text: "Unable to create Application Context \(error)")
        }
    

    Kod próbuje zainicjować bibliotekę MSAL, obsługując wszelkie błędy występujące podczas procesu. Jeśli wystąpi błąd, aktualizuje on rejestrowanie ze szczegółami błędu.

  4. Dodaj następujący kod, który tworzy initMSAL() funkcję, która inicjuje bibliotekę MSAL:

        func initMSAL() throws {
    
        guard let authorityURL = URL(string: Configuration.kAuthority) else {
            self.updateLogging(text: "Unable to create authority URL")
            return
        }
    
        let authority = try MSALCIAMAuthority(url: authorityURL)
    
        let msalConfiguration = MSALPublicClientApplicationConfig(clientId: Configuration.kClientID,
                                                                  redirectUri: Configuration.kRedirectUri,
                                                                  authority: authority)
        self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)
    }
    

    Ten kod inicjuje bibliotekę MSAL dla systemu iOS. Najpierw próbuje utworzyć adres URL urzędu przy użyciu podanego ciągu Configuration.kAuthority . W przypadku pomyślnego utworzenia obiektu urzędu MSAL na podstawie tego adresu URL. Następnie konfiguruje element MSALPublicClientApplication przy użyciu danego identyfikatora klienta, identyfikatora URI przekierowania i urzędu. Jeśli wszystkie konfiguracje są poprawnie skonfigurowane, inicjuje kontekst aplikacji przy użyciu skonfigurowanego MSALPublicClientApplicationelementu . Jeśli podczas procesu wystąpią jakiekolwiek błędy, zgłasza błąd.

  5. Utwórz plik Configuration.swift i dodaj następujące konfiguracje:

    import Foundation
    
    @objcMembers
    class Configuration {
        static let kTenantSubdomain = "Enter_the_Tenant_Subdomain_Here"
    
        // Update the below to your client ID you received in the portal.
        static let kClientID = "Enter_the_Application_Id_Here"
        static let kRedirectUri = "Enter_the_Redirect_URI_Here"
        static let kProtectedAPIEndpoint = "Enter_the_Protected_API_Full_URL_Here"
        static let kScopes = ["Enter_the_Protected_API_Scopes_Here"]
    
        static let kAuthority = "https://\(kTenantSubdomain).ciamlogin.com"
    
    }
    

    Ten kod konfiguracji swift definiuje klasę o nazwie Configuration i jest oznaczony znakiem @objcMembers. Zawiera ona stałe statyczne dla różnych parametrów konfiguracji związanych z konfiguracją uwierzytelniania. Te parametry obejmują poddomenę dzierżawy, identyfikator klienta, identyfikator URI przekierowania, chroniony punkt końcowy interfejsu API i zakresy. Te stałe konfiguracji należy zaktualizować przy użyciu odpowiednich wartości specyficznych dla konfiguracji aplikacji.

    Znajdź symbol zastępczy:

    • Enter_the_Application_Id_Herezastąp ją identyfikatorem aplikacji (klienta) zarejestrowanej wcześniej aplikacji.
    • Enter_the_Redirect_URI_Here zastąp go wartością kRedirectUri w pobranym wcześniej pliku konfiguracji biblioteki MSAL podczas dodawania adresu URL przekierowania platformy.
    • Enter_the_Protected_API_Scopes_Here i zastąp go zarejestrowanymi wcześniej zakresami. Jeśli nie zarejestrowano żadnych zakresów, możesz pozostawić tę listę zakresów pustą.
    • Enter_the_Tenant_Subdomain_Here i zastąp ją poddomeną Katalog (dzierżawa). Jeśli na przykład domena podstawowa dzierżawy to contoso.onmicrosoft.com, użyj polecenia contoso. Jeśli nie znasz poddomeny dzierżawy, dowiedz się, jak odczytywać szczegóły dzierżawy.

Użyj niestandardowej domeny adresu URL (opcjonalnie)

Użyj domeny niestandardowej, aby w pełni oznaczyć adres URL uwierzytelniania. Z perspektywy użytkownika użytkownicy pozostają w domenie podczas procesu uwierzytelniania, a nie przekierowywani do ciamlogin.com nazwy domeny.

Aby użyć domeny niestandardowej, wykonaj następujące czynności:

  1. Wykonaj kroki opisane w temacie Włączanie niestandardowych domen url dla aplikacji w dzierżawach zewnętrznych, aby włączyć niestandardową domenę adresu URL dla dzierżawy zewnętrznej.

  2. Otwórz plik Configuration.swift :

    1. Zaktualizuj wartość kAuthority właściwości na https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here. Zastąp Enter_the_Custom_Domain_Here ciąg domeną niestandardowego adresu URL i Enter_the_Tenant_ID_Here identyfikatorem dzierżawy. Jeśli nie masz identyfikatora dzierżawy, dowiedz się, jak odczytywać szczegóły dzierżawy.

Po wprowadzeniu zmian w pliku Configuration.swift , jeśli domena niestandardowego adresu URL jest login.contoso.com, a identyfikator dzierżawy to aaaabbbb-0000-cccc-1111-dddd2222eeeee, plik powinien wyglądać podobnie do następującego fragmentu kodu:

    import Foundation

    @objcMembers
    class Configuration {
        static let kTenantSubdomain = "login.contoso.com"
        
        // Update the below to your client ID you received in the portal.
        static let kClientID = "Enter_the_Application_Id_Here"
        static let kRedirectUri = "Enter_the_Redirect_URI_Here"
        static let kProtectedAPIEndpoint = "Enter_the_Protected_API_Full_URL_Here"
        static let kScopes = ["Enter_the_Protected_API_Scopes_Here"]
        
        static let kAuthority = "https://\(kTenantSubdomain)/aaaabbbb-0000-cccc-1111-dddd2222eeee"
    
    }

Następne kroki

Samouczek: logowanie użytkowników w aplikacji mobilnej systemu iOS (Swift)