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.

V tomto kurzu budete;

  • 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 kurzu: Registrace a konfigurace mobilní aplikace pro iOS (Swift) a registrace aplikace v 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.
    • 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íčku...
  3. Zadejte https://github.com/AzureAD/microsoft-authentication-library-for-objc jako adresu URL balíčku 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 Soubor Info.plist a vyberte Otevřít jako>zdrojový kód.

  3. V kořenovém uzlu diktování nahraďte Enter_the_bundle_Id_Here ID sady, které jste použili na portálu. msauth. Všimněte si předpony 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. Importujte knihovnu MSAL do kontroleru zobrazení přidáním import MSAL v horní části ViewController třídy.

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

    var applicationContext : MSALPublicClientApplication?
    var webViewParamaters : MSALWebviewParameters?
    

    Kód deklaruje dvě proměnné: applicationContext, která ukládá instanci MSALPublicClientApplication, a webViewParameters, která ukládá instanci MSALWebviewParameters. MSALPublicClientApplication je třída poskytovaná knihovnou MSAL pro zpracování veřejných klientských aplikací. Je MSALWebviewParameters 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 zobrazení viewDidLoad() 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ří initMSAL() funkci, 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 dané ID klienta, identifikátor URI přesměrování a autoritu. 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, dojde k chybě.

  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 pojmenovanou Configuration třídu a je označena znakem @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í API a obory. Tyto konstanty konfigurace by se měly aktualizovat odpovídajícími hodnotami specifickými pro nastavení aplikace.

    Vyhledejte zástupný symbol:

    • Enter_the_Application_Id_Here a nahraďte ho ID aplikace (klienta), kterou jste zaregistrovali dříve.
    • Enter_the_Redirect_URI_Here a nahraďte ji hodnotou kRedirectUri v konfiguračním souboru MSAL, který jste 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 si 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í místo přesměrování na ciamlogin.com název domény.

Pomocí následujících kroků použijte vlastní doménu:

  1. Pomocí kroků v části Povolit vlastní domény URL pro aplikace v externích tenantech povolte pro externího tenanta vlastní doménu URL.

  2. Otevřete soubor Configuration.swift :

    1. Aktualizujte hodnotu kAuthority vlastnosti na https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Herehodnotu . Nahraďte Enter_the_Custom_Domain_Here vlastní doménou URL a Enter_the_Tenant_ID_Here ID tenanta. Pokud nemáte ID tenanta, přečtěte si, jak si přečíst podrobnosti o tenantovi.

Po provedení změn v souboru Configuration.swift , pokud je vaše vlastní doména URL login.contoso.com a ID vašeho tenanta je aaaabbbbbb-0000-cccc-1111-dddd2222eeeeee, měl by váš soubor vypadat podobně jako v následujícím fragmentu 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

Kurz: Přihlášení uživatelů v mobilní aplikaci pro iOS (Swift)