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
- Xcode.
- Jeśli jeszcze tego nie zrobiono, postępuj zgodnie z instrukcjami w artykule Samouczek: rejestrowanie i konfigurowanie aplikacji mobilnej systemu iOS (Swift) oraz rejestrowanie aplikacji w dzierżawie zewnętrznej. Upewnij się, że wykonasz następujące kroki:
- Rejestrowanie aplikacji.
- Dodaj adres URL przekierowania platformy.
- Włącz przepływ klienta publicznego.
- Delegowane uprawnienie do programu Microsoft Graph.
- Projekt systemu iOS (Swift).
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:
- Otwórz projekt systemu iOS w środowisku Xcode.
- Wybierz pozycję Dodaj zależności pakietu... z menu Plik .
- 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:
Otwórz ustawienia projektu. W sekcji Tożsamość wprowadź identyfikator pakietu.
Kliknij prawym przyciskiem myszy plik Info.plist i wybierz pozycję Otwórz jako>kod źródłowy.
W węźle głównym dict zastąp element
Enter_the_bundle_Id_Here
identyfikatorem pakietu użytym w portalu. Zwróć uwagę namsauth.
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:
Zaimportuj bibliotekę MSAL do kontrolera widoku, dodając
import MSAL
w górnej częściViewController
klasy.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ąpienieMSALPublicClientApplication
klasy , iwebViewParameters
, w którym jest przechowywane wystąpienieMSALWebviewParameters
klasy .MSALPublicClientApplication
jest klasą dostarczaną przez bibliotekę MSAL do obsługi publicznych aplikacji klienckich. JestMSALWebviewParameters
to klasa dostarczana przez bibliotekę MSAL, która definiuje parametry służące do konfigurowania widoku internetowego używanego podczas procesu uwierzytelniania.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.
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 skonfigurowanegoMSALPublicClientApplication
elementu . Jeśli podczas procesu wystąpią jakiekolwiek błędy, zgłasza błąd.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_Here
zastą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 tocontoso.onmicrosoft.com
, użyj poleceniacontoso
. 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:
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.
Otwórz plik Configuration.swift :
- Zaktualizuj wartość
kAuthority
właściwości na https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here. ZastąpEnter_the_Custom_Domain_Here
ciąg domeną niestandardowego adresu URL iEnter_the_Tenant_ID_Here
identyfikatorem dzierżawy. Jeśli nie masz identyfikatora dzierżawy, dowiedz się, jak odczytywać szczegóły dzierżawy.
- Zaktualizuj wartość
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)