Kurz: Příprava aplikace pro iOS (Swift) na ověřování
Toto je druhý kurz série kurzů, který ukazuje, jak přidat knihovnu Microsoft Authentication Library (MSAL) pro iOS a macOS do aplikace iOS Swift.
Než začnete, pomocí Zvolte typ tenanta selektor v horní části této stránky vyberte typ tenanta. Microsoft Entra ID poskytuje dvě konfigurace tenantů, pracovní síly a externí. Konfigurace tenanta pracovních sil je určená pro zaměstnance, interní aplikace a další organizační prostředky. Externí tenant je určený pro vaše aplikace určené pro zákazníky.
V tomto kurzu:
- Přidejte rozhraní MSAL do aplikace pro iOS (Swift).
- Vytvořte instanci sady SDK.
- Nakonfigurujte nastavení projektu Xcode.
Požadavky
- Xcode.
- Pokud jste to ještě neudělali, postupujte podle pokynů v Kurzu: Zaregistrujte a nakonfigurujte mobilní aplikaci pro iOS (Swift) a zaregistrujte aplikaci ve vašem externím tenantovi. Ujistěte se, že jste dokončili následující kroky:
- Zaregistrujte aplikaci.
- Přidejte adresu URL pro přesměrování platformy.
- Projekt iOS (Swift).
Přidání architektury MSAL do aplikace pro iOS (Swift)
Zvolte jeden z následujících způsobů instalace knihovny MSAL ve vaší aplikaci:
CocoaPods
Pokud používáte CocoaPods, nainstalujte
MSAL
tak, že nejprve vytvoříte prázdný soubor s názvem podfile ve stejné složce jako soubor .xcodeproj projektu. Do souboru podfile přidejte následující:use_frameworks! target '<your-target-here>' do pod 'MSAL' end
Nahraďte
<your-target-here>
názvem projektu.V okně terminálu přejděte do složky, která obsahuje soubor podfile jste vytvořili, a spuštěním
pod install
nainstalujte knihovnu MSAL.Zavřete Xcode, otevřete
<your project name>.xcworkspace
a poté znovu načtěte projekt v Xcode.
Kartágo
Pokud používáte Carthage , nainstalujte MSAL
tak, že ho přidáte do Cartfile :
github "AzureAD/microsoft-authentication-library-for-objc" "master"
V okně terminálu ve stejném adresáři jako aktualizovaný Cartfilespusťte následující příkaz, aby Carthage aktualizoval závislosti v projektu.
Ios:
carthage update --platform iOS
macOS:
carthage update --platform macOS
Ručně
Můžete také použít Git Submodule nebo si prohlédnout nejnovější verzi, která se má použít jako architektura ve vaší aplikaci.
Přidání registrace aplikace
Dále přidáme registraci vaší aplikace do kódu.
Nejprve přidejte následující příkaz importu do horní části souboru ViewController.swift a AppDelegate.swift nebo SceneDelegate.swift:
import MSAL
Dále do ViewController.swift před to viewDidLoad()
přidejte následující kód:
// 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?
Jedinou hodnotu, kterou upravíte, je hodnota přiřazená kClientID
, aby se stala vaším ID aplikace . Tato hodnota je součástí konfiguračních dat MSAL, která jste uložili během kroku na začátku tohoto kurzu pro registraci aplikace.
Vytvoření instance sady SDK
Pokud chcete v projektu vytvořit instanci MSAL, postupujte takto:
Do třídy ViewController
přidejte metodu 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()
}
Stále ve třídě ViewController
a za metodou initMSAL
přidejte metodu initWebViewParams
:
Kód iOS:
func initWebViewParams() {
self.webViewParameters = MSALWebviewParameters(authPresentationViewController: self)
}
Kód macOS:
func initWebViewParams() {
self.webViewParameters = MSALWebviewParameters()
}
Konfigurace nastavení projektu Xcode
Přidejte do projektu novou skupinu řetězce klíčů Podepisování & schopností. Skupina řetězce klíčů by měla být com.microsoft.adalcache
v iOSu a com.microsoft.identity.universalstorage
v systému macOS.
Pouze pro iOS nakonfigurujte schémata adres URL.
V tomto kroku zaregistrujete CFBundleURLSchemes
, aby se uživatel po přihlášení mohl přesměrovat zpět do aplikace. Mimochodem, LSApplicationQueriesSchemes
také umožňuje vaší aplikaci používat Microsoft Authenticator.
V Xcode otevřete Info.plist jako soubor zdrojového kódu a do části <dict>
přidejte následující kód. Nahraďte [BUNDLE_ID]
hodnotou, kterou jste použili dříve. Pokud jste kód stáhli, identifikátor sady je com.microsoft.identitysample.MSALiOS
. Pokud vytváříte vlastní projekt, vyberte projekt v Xcode a otevřete kartu Obecné. Identifikátor sady se zobrazí v části Identita.
<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>
Pouze pro macOS nastavte App Sandbox.
- Přejděte na kartu Nastavení projektu Xcode >Možnosti>Sandbox aplikace
- Zaškrtněte políčko Odchozí připojení (Klient).
Další kroky
Toto je druhý kurz série kurzů, který ukazuje, jak přidat knihovnu Microsoft Authentication Library (MSAL) pro iOS a macOS do aplikace iOS Swift.
Než začnete, pomocí výběru Vyberte typ nájemce v horní části této stránky vyberte typ nájemce. Microsoft Entra ID poskytuje dvě konfigurace tenantů, pro pracovní prostředí a pro externí použití. Konfigurace tenanta pracovních sil je určená pro zaměstnance, interní aplikace a další organizační prostředky. Externí tenant je určený pro vaše aplikace určené pro zákazníky.
V tomto kurzu se naučíte;
- Přidejte rozhraní MSAL do aplikace pro iOS (Swift).
- Vytvořte instanci sady SDK.
Požadavky
- Xcode.
- Pokud jste to ještě neudělali, postupujte podle pokynů v tutorialu: Registrace a konfigurace mobilní aplikace pro iOS (Swift) a zaregistrujte aplikaci ve vašem externím tenantovi. Ujistěte se, že jste dokončili následující kroky:
- Zaregistrujte aplikaci.
- Přidejte URL pro přesměrování na platformě.
- Povolte tok veřejného klienta.
- Delegovaná oprávnění k Microsoft Graphu
- Projekt iOS (Swift).
Přidání architektury MSAL do aplikace pro iOS (Swift)
Sada MSAL Authentication SDK se používá k integraci ověřování do vašich aplikací pomocí standardního OAuth2 a OpenID Connect. Umožňuje přihlásit se uživatelům nebo aplikacím pomocí identit Microsoftu. Pokud chcete do projektu iOS (Swift) přidat MSAL, postupujte takto:
- Otevřete projekt iOS v Xcode.
- V nabídce Soubor vyberte Přidat závislosti balíčků....
- Jako adresu URL balíčku zadejte
https://github.com/AzureAD/microsoft-authentication-library-for-objc
a zvolte Přidat balíček
Aktualizace identifikátoru sady
V ekosystému Apple je identifikátor sady jedinečným identifikátorem aplikace. Chcete-li aktualizovat identifikátor sady v projektu, postupujte takto:
Otevřete nastavení projektu. V části Identita zadejte identifikátor sady.
Klikněte pravým tlačítkem na Info.plist a vyberte Otevřít jako>zdrojového kódu .
V rámci kořenového uzlu ‚dict‘ nahraďte
Enter_the_bundle_Id_Here
s Bundle ID, které jste použili na portálu. Všimněte si předponymsauth.
v řetězci.<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>msauth.Enter_the_Bundle_Id_Here</string> </array> </dict> </array>
Vytvoření instance sady SDK
Pokud chcete v projektu vytvořit instanci MSAL, postupujte takto:
Naimportujte knihovnu MSAL do kontroleru zobrazení přidáním
import MSAL
v horní části třídyViewController
.Přidejte do třídy ViewController
applicationContext
členské proměnné přidáním následujícího kódu těsně před funkciviewDidLoad()
:var applicationContext : MSALPublicClientApplication? var webViewParameters : MSALWebviewParameters?
Kód deklaruje dvě proměnné:
applicationContext
, která ukládá instanciMSALPublicClientApplication
awebViewParameters
, která ukládá instanciMSALWebviewParameters
.MSALPublicClientApplication
je třída poskytovaná knihovnou MSAL pro zpracování veřejných klientských aplikací.MSALWebviewParameters
je třída poskytovaná knihovnou MSAL, která definuje parametry pro konfiguraci webového zobrazení používaného během procesu ověřování.Do funkce
viewDidLoad()
zobrazení přidejte následující kód:do { try self.initMSAL() } catch let error { self.updateLogging(text: "Unable to create Application Context \(error)") }
Kód se pokusí inicializovat knihovnu MSAL a zpracuje všechny chyby, ke kterým dochází během procesu. Pokud dojde k chybě, aktualizuje protokolování podrobnostmi o chybě.
Přidejte následující kód, který vytvoří funkci
initMSAL()
, která inicializuje knihovnu 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) }
Tento kód inicializuje knihovnu MSAL pro iOS. Nejprve se pokusí vytvořit adresu URL pro autoritu pomocí zadaného řetězce Configuration.kAuthority. V případě úspěchu vytvoří objekt autority MSAL na základě této adresy URL. Potom nakonfiguruje
MSALPublicClientApplication
s daným ID klienta, identifikátorem URI přesměrování a autoritou. Pokud jsou všechny konfigurace nastaveny správně, inicializuje kontext aplikace s nakonfigurovanýmMSALPublicClientApplication
. Pokud během procesu dojde k nějakým chybám, vyvolá to chybu.Vytvořte soubor Configuration.swift a přidejte následující konfigurace:
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" }
Tento konfigurační kód Swiftu definuje třídu s názvem
Configuration
a je označena@objcMembers
. Zahrnuje statické konstanty pro různé parametry konfigurace související s nastavením ověřování. Mezi tyto parametry patří subdoména tenanta, id klienta, identifikátor URI přesměrování, chráněný koncový bod rozhraní APIa rozsahy. Tyto konstanty konfigurace by se měly aktualizovat odpovídajícími hodnotami specifickými pro nastavení aplikace.Vyhledejte zástupný symbol:
- Nahraďte
Enter_the_Application_Id_Here
ID klienta aplikace aplikací, kterou jste zaregistrovali dříve. -
Enter_the_Redirect_URI_Here
a nahraďte ji hodnotou kRedirectUri v konfiguračním souboru MSAL, který jste si stáhli dříve při přidání adresy URL pro přesměrování platformy. -
Enter_the_Protected_API_Scopes_Here
a nahraďte ho obory zaznamenanými dříve. Pokud jste nezaznamenali žádné obory, můžete tento seznam oborů ponechat prázdný. -
Enter_the_Tenant_Subdomain_Here
a nahraďte ji subdoménou adresáře (tenanta). Pokud je například primární doména vašeho tenantacontoso.onmicrosoft.com
, použijtecontoso
. Pokud subdoménu tenanta neznáte, přečtěte si, jak přečíst podrobnosti o tenantovi.
- Nahraďte
Použití vlastní domény URL (volitelné)
Pomocí vlastní domény plně označte adresu URL ověřování. Z pohledu uživatele zůstanou uživatelé ve vaší doméně během procesu ověřování, a ne přesměrovávat na ciamlogin.com název domény.
Pomocí následujících kroků použijte vlastní doménu:
Pomocí kroků uvedených v "Povolení vlastních domén URL pro aplikace v externích tenantech" povolte vlastní doménu URL pro vašeho externího tenanta.
Otevřete soubor Configuration.swift.
- Aktualizujte hodnotu vlastnosti
kAuthority
na https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here. NahraďteEnter_the_Custom_Domain_Here
vlastní doménou URL aEnter_the_Tenant_ID_Here
ID tenanta. Pokud nemáte ID tenanta, naučte se, jak zjistit podrobnosti o tenantovi.
- Aktualizujte hodnotu vlastnosti
Po provedení změn v souboru Configuration.swift, pokud je vaše vlastní doména login.contoso.coma vaše ID tenanta je aaaabbbb-0000-cccc-1111-dddd2222eeee, měl by soubor vypadat podobně jako následující úryvek kódu:
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"
}