Udostępnij za pośrednictwem


Samouczek: przygotowywanie aplikacji systemu iOS (Swift) do uwierzytelniania

Dotyczy: Zielony okrąg z białym symbolem znacznika wyboru. Dzierżawcy siły roboczej Zielony okrąg z białym symbolem znacznika wyboru. Dzierżawcy zewnętrzni (dowiedz się więcej)

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.

Przed rozpoczęciem użyj selektora Wybierz typ najemcy na górze tej strony, aby wybrać typ najemcy. Microsoft Entra ID udostępnia dwie konfiguracje dzierżawy, siła robocza i zewnętrzni. Konfiguracja tenantowa dla siły roboczej dotyczy twoich pracowników, aplikacji wewnętrznych i innych zasobów organizacyjnych. Najemca zewnętrzny jest przeznaczony dla aplikacji dla klientów.

W tym samouczku:

  • Dodaj strukturę MSAL do aplikacji systemu iOS (Swift).
  • Utwórz instancję zestawu SDK.
  • Skonfiguruj ustawienia projektu Xcode.

Warunki wstępne

  • Zarejestruj nową aplikację internetową klienta w centrum administracyjnym firmy Microsoft Entra, skonfigurowaną dla kont w dowolnym katalogu organizacyjnym i osobistych kontach Microsoft. Aby uzyskać więcej informacji, zobacz Rejestrowanie aplikacji . Zapisz następujące wartości na stronie Przegląd aplikacji do późniejszego użycia:
    • Identyfikator aplikacji (klienta)
    • Identyfikator katalogu (klienta)
  • Xcode .
  • Projekt systemu iOS (Swift).

Dodaj adres URL przekierowania platformy

Aby określić typ aplikacji do rejestracji aplikacji, wykonaj następujące kroki:

  1. W obszarze Zarządzajwybierz pozycję Uwierzytelnianie>Dodaj platformę>iOS/macOS.
  2. Wprowadź identyfikator pakietu projektu. Jeśli pobrano przykładowy kod, identyfikator pakietu to com.microsoft.identitysample.MSALiOS. Jeśli tworzysz własny projekt, wybierz projekt w środowisku Xcode i otwórz kartę Ogólne. Identyfikator pakietu zostanie wyświetlony w sekcji Identity.
  3. Wybierz Skonfiguruj i zapisz Konfigurację MSAL, która pojawi się na stronie Konfiguracja MSAL, aby móc ją wprowadzić podczas późniejszego konfigurowania aplikacji.
  4. Wybierz pozycję Gotowe.

Dodawanie platformy MSAL do aplikacji systemu iOS (Swift)

Wybierz jeden z następujących sposobów instalowania biblioteki MSAL w aplikacji:

CocoaPods (Orzechy kokosowe)

  1. Jeśli używasz CocoaPods, zainstaluj MSAL, tworząc najpierw pusty plik o nazwie podfile w tym samym folderze co plik .xcodeproj projektu. Dodaj następujące elementy do podfile:

    use_frameworks!
    
    target '<your-target-here>' do
       pod 'MSAL'
    end
    
  2. Zastąp <your-target-here> nazwą projektu.

  3. W oknie terminalu przejdź do folderu zawierającego plik podfile utworzony i uruchom pod install, aby zainstalować bibliotekę MSAL.

  4. Zamknij program Xcode i otwórz <your project name>.xcworkspace, aby ponownie załadować projekt w środowisku Xcode.

Kartagina

Jeśli używasz Carthage, zainstaluj MSAL, poprzez dodanie go do Cartfile:

github "AzureAD/microsoft-authentication-library-for-objc" "master"

W oknie terminalu w tym samym katalogu co zaktualizowany Cartfile, uruchom następujące polecenie, aby Carthage zaktualizował zależności w projekcie.

Ios:

carthage update --platform iOS

System operacyjny macOS:

carthage update --platform macOS

Ręcznie

Możesz również użyć modułu podrzędnego Git lub zapoznać się z najnowszą wersją, aby użyć jej jako struktury w aplikacji.

Dodaj rejestrację aplikacji

Następnie dodamy rejestrację aplikacji do kodu.

Najpierw dodaj następującą instrukcję importowania na początku pliku ViewController.swift i AppDelegate.swift lub SceneDelegate.swift:

import MSAL

Następnie dodaj następujący kod do ViewController.swift przed viewDidLoad():

// Update the below to your client ID. The below is for running the demo only
let kClientID = "Your_Application_Id_Here"
let kGraphEndpoint = "https://graph.microsoft.com/" // the Microsoft Graph endpoint
let kAuthority = "https://login.microsoftonline.com/common" // this authority allows a personal Microsoft account and a work or school account in any organization's Azure AD tenant to sign in

let kScopes: [String] = ["user.read"] // request permission to read the profile of the signed-in user

var accessToken = String()
var applicationContext : MSALPublicClientApplication?
var webViewParameters : MSALWebviewParameters?
var currentAccount: MSALAccount?

Jedyną wartością, którą zmieniasz, jest ta przypisana kClientID jako Twój identyfikator aplikacji . Ta wartość jest częścią danych konfiguracji MSAL, które zapisałeś w trakcie kroku na początku tego samouczka, aby zarejestrować aplikację.

Utwórz instancję SDK

Aby utworzyć instancję MSAL w swoim projekcie, postępuj zgodnie z poniższymi krokami:

Do klasy ViewController dodaj metodę initMSAL:

    func initMSAL() throws {

        guard let authorityURL = URL(string: kAuthority) else {
            self.updateLogging(text: "Unable to create authority URL")
            return
        }

        let authority = try MSALAADAuthority(url: authorityURL)

        let msalConfiguration = MSALPublicClientApplicationConfig(clientId: kClientID, redirectUri: nil, authority: authority)
        self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)
        self.initWebViewParams()
    }

Nadal w klasie ViewController i po metodzie initMSAL dodaj metodę initWebViewParams:

Kod systemu iOS:

func initWebViewParams() {
        self.webViewParameters = MSALWebviewParameters(authPresentationViewController: self)
    }

Kod systemu macOS:

func initWebViewParams() {
        self.webViewParameters = MSALWebviewParameters()
    }

Konfigurowanie ustawień projektu Xcode

Dodaj nową grupę breloków do projektu w sekcji Podpisywanie & Możliwości. Grupa pęku kluczy powinna być com.microsoft.adalcache w systemie iOS i com.microsoft.identity.universalstorage w systemie macOS.

interfejs użytkownika Xcode wyświetlający sposób konfigurowania grupy pęku kluczy.

Tylko w przypadku systemu iOS skonfiguruj schematy adresów URL

W tym kroku zarejestrujesz CFBundleURLSchemes, aby użytkownik mógł zostać przekierowany z powrotem do aplikacji po zalogowaniu. Dzięki temu LSApplicationQueriesSchemes umożliwia również aplikacji korzystanie z aplikacji Microsoft Authenticator.

W programie Xcode otwórz plik Info.plist jako plik kodu źródłowego i dodaj następujący kod w sekcji <dict>. Zastąp [BUNDLE_ID] wcześniej użytą wartością. Jeśli pobrano kod, identyfikator pakietu jest com.microsoft.identitysample.MSALiOS. Jeśli tworzysz własny projekt, wybierz projekt w środowisku Xcode i otwórz kartę Ogólne. Identyfikator pakietu zostanie wyświetlony w sekcji Identity.

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>msauth.[BUNDLE_ID]</string>
        </array>
    </dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>msauthv2</string>
    <string>msauthv3</string>
</array>

Tylko w przypadku systemu macOS skonfiguruj App Sandbox

  1. Przejdź do karty Ustawienia projektu Xcode >Funkcje>Piaskownica aplikacji
  2. Zaznacz pole wyboru Wychodzące połączenia (klient).

Następne kroki

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.

Przed rozpoczęciem użyj selektora Wybierz typ najemcy na górze tej strony, aby wybrać typ najemcy. Microsoft Entra ID udostępnia dwie konfiguracje dzierżawy, siła robocza i zewnętrzni. Konfiguracja tenantowa dla siły roboczej dotyczy twoich pracowników, aplikacji wewnętrznych i innych zasobów organizacyjnych. Najemca zewnętrzny jest przeznaczony dla aplikacji dla klientów.

W tym samouczku, ty;

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

Warunki wstępne

  • Zarejestruj nową aplikację internetową klienta w centrum administracyjnym firmy Microsoft Entra, skonfigurowaną dla kont w dowolnym katalogu organizacyjnym i osobistych kontach Microsoft. Aby uzyskać więcej informacji, zobacz Rejestrowanie aplikacji . Zapisz następujące wartości na stronie Przegląd aplikacji do późniejszego użycia:
    • Identyfikator aplikacji (klienta)
    • Identyfikator katalogu (klienta)
  • Xcode .
  • Projekt systemu iOS (Swift).

Dodaj adres URL przekierowania platformy

Aby określić typ aplikacji do rejestracji aplikacji, wykonaj następujące kroki:

  1. W obszarze Zarządzajwybierz pozycję Uwierzytelnianie>Dodaj platformę>iOS/macOS.
  2. Wprowadź identyfikator pakietu projektu. Jeśli pobrano przykładowy kod, identyfikator pakietu to com.microsoft.identitysample.MSALiOS. Jeśli tworzysz własny projekt, wybierz projekt w środowisku Xcode i otwórz kartę Ogólne. Identyfikator pakietu zostanie wyświetlony w sekcji Identity.
  3. Wybierz Skonfiguruj i zapisz Konfigurację MSAL, która pojawi się na stronie Konfiguracja MSAL, aby móc ją wprowadzić podczas późniejszego konfigurowania aplikacji.
  4. Wybierz pozycję Gotowe.

Włącz publiczny przepływ klienta

Aby zidentyfikować aplikację jako klienta publicznego, wykonaj następujące kroki:

  1. W obszarze Zarządzanie wybierz pozycję Uwierzytelnianie.

  2. W Ustawieniach Zaawansowanych dla opcji Zezwalaj na przepływy klientów publicznych wybierz opcję Tak.

  3. Wybierz Zapisz, aby zapisać zmiany.

Dodawanie platformy MSAL do aplikacji systemu iOS (Swift)

Biblioteka SDK uwierzytelniania 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 pakietów... 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 Identity 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 Enter_the_bundle_Id_Here identyfikatorem pakietu użytym w portalu. Zwróć uwagę na prefiks msauth. w ciągu tekstowym.

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

Utwórz instancję SDK

Aby utworzyć instancję MSAL w swoim projekcie, postępuj zgodnie z poniższymi krokami:

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

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

    var applicationContext : MSALPublicClientApplication?
    var webViewParameters : MSALWebviewParameters?
    

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

  3. Dodaj następujący kod do funkcji widoku 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 funkcję initMSAL(), 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 dla urzędu przy użyciu podanego ciągu Configuration.kAuthority. Jeśli się powiedzie, tworzy obiekt autorytetu MSAL na podstawie tego adresu URL. Następnie konfiguruje MSALPublicClientApplication przy użyciu danego identyfikatora klienta, identyfikatora URI przekierowania i autorytetu. Jeśli wszystkie konfiguracje są poprawnie skonfigurowane, inicjuje kontekst aplikacji za pomocą skonfigurowanego MSALPublicClientApplication. Jeśli podczas procesu wystąpią jakiekolwiek błędy, wyrzuca 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 @objcMembers. Zawiera ona stałe statyczne dla różnych parametrów konfiguracji związanych z konfiguracją uwierzytelniania. Te parametry obejmują poddomenę dzierżawcy , identyfikator klienta , identyfikator URI przekierowania , chroniony punkt końcowy API oraz 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_Here i zastąp go identyfikatorem aplikacji (klienta) aplikacji zarejestrowanej wcześniej.
    • Enter_the_Redirect_URI_Here i zastąp to wartością kRedirectUri w pliku konfiguracji MSAL, który pobrałeś wcześniej, gdy dodawałeś URL przekierowania platformy.
    • Enter_the_Protected_API_Scopes_Here i zastąp je zakresami zapisanymi wcześniej. 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). Na przykład, jeśli podstawowa domena najemcy to contoso.onmicrosoft.com, użyj contoso. Jeśli nie znasz swojej subdomeny najemcy, dowiedz się, jak sprawdzić szczegóły najemcy.

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ą na twojej domenie podczas procesu uwierzytelniania, a nie są przekierowywani na domenę ciamlogin.com.

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

  1. Wykonaj kroki opisane w Włączanie niestandardowych domen adresów URL dla aplikacji w dzierżawach zewnętrznych, które umożliwiają włączenie niestandardowej domeny adresu URL dla twojej dzierżawy zewnętrznej.

  2. Otwórz plik Configuration.swift:

    1. Zaktualizuj wartość właściwości kAuthority na https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here. Zastąp Enter_the_Custom_Domain_Here domeną własnego adresu URL i Enter_the_Tenant_ID_Here identyfikatorem dzierżawy. Jeśli nie masz identyfikatora najemcy, dowiedz się, jak uzyskać dostęp do danych swojego najemcy.

Po wprowadzeniu zmian w pliku Configuration.swift, jeśli domena niestandardowego adresu URL to login.contoso.com, a identyfikator dzierżawy to aaaabbbb-0000-cccc-1111-dddd2222eeee, 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