Sdílet prostřednictvím


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

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

  1. 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
    
  2. Nahraďte <your-target-here> názvem projektu.

  3. 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.

  4. 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.

uživatelské rozhraní Xcode zobrazující způsob nastavení skupiny řetězce klíčů

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.

  1. Přejděte na kartu Nastavení projektu Xcode >Možnosti>Sandbox aplikace
  2. 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:

  1. Otevřete projekt iOS v Xcode.
  2. V nabídce Soubor vyberte Přidat závislosti balíčků....
  3. 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:

  1. Otevřete nastavení projektu. V části Identita zadejte identifikátor sady.

  2. Klikněte pravým tlačítkem na Info.plist a vyberte Otevřít jako>zdrojového kódu .

  3. 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ředpony msauth. 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:

  1. Naimportujte knihovnu MSAL do kontroleru zobrazení přidáním import MSAL v horní části třídy ViewController.

  2. Přidejte do třídy ViewController applicationContext členské proměnné přidáním následujícího kódu těsně před funkci viewDidLoad():

    var applicationContext : MSALPublicClientApplication?
    var webViewParameters : MSALWebviewParameters?
    

    Kód deklaruje dvě proměnné: applicationContext, která ukládá instanci MSALPublicClientApplicationa webViewParameters, která ukládá instanci MSALWebviewParameters. 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í.

  3. 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ě.

  4. 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ým MSALPublicClientApplication. Pokud během procesu dojde k nějakým chybám, vyvolá to chybu.

  5. 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 tenanta contoso.onmicrosoft.com, použijte contoso. Pokud subdoménu tenanta neznáte, přečtěte si, jak přečíst podrobnosti o tenantovi.

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:

  1. 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.

  2. Otevřete soubor Configuration.swift.

    1. Aktualizujte hodnotu vlastnosti kAuthority na https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here. Nahraďte Enter_the_Custom_Domain_Here vlastní doménou URL a Enter_the_Tenant_ID_Here ID tenanta. Pokud nemáte ID tenanta, naučte se, jak zjistit podrobnosti o tenantovi.

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"
    
    }

Další kroky