Dela via


Självstudie: Förbereda din iOS-app (Swift) för autentisering

Det här är den andra självstudien i självstudieserien som visar hur du lägger till Microsoft Authentication Library (MSAL) för iOS och macOS i din iOS Swift-app.

Innan du börjar, använd väljaren Välj en klienttyp högst upp på den här sidan för att välja klienttyp. Microsoft Entra ID tillhandahåller två klientkonfigurationer, personal och externa. En klientkonfiguration för personal är avsedd för dina anställda, interna appar och andra organisationsresurser. En extern hyresgäst är avsedd för dina kundinriktade appar.

I den här handledningen kommer du att:

  • Lägg till MSAL-ramverket i en iOS-app (Swift).
  • Skapa SDK-instans.
  • Konfigurera Xcode-projektinställningar.

Förutsättningar

Lägga till MSAL-ramverket i en iOS-app (Swift)

Välj något av följande sätt att installera MSAL-biblioteket i din app:

CocoaPods

  1. Om du använder CocoaPodsinstallerar du MSAL genom att först skapa en tom fil med namnet podfile i samma mapp som projektets .xcodeproj fil. Lägg till följande i podfile:

    use_frameworks!
    
    target '<your-target-here>' do
       pod 'MSAL'
    end
    
  2. Ersätt <your-target-here> med namnet på projektet.

  3. I ett terminalfönster navigerar du till mappen som innehåller podfile du skapade och kör pod install för att installera MSAL-biblioteket.

  4. Stäng Xcode och öppna <your project name>.xcworkspace för att läsa in projektet igen i Xcode.

Karthago

Om du använder Carthageinstallerar du MSAL genom att lägga till den i din Cartfile:

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

Kör följande kommando i samma katalog som den uppdaterade Cartfilei ett terminalfönster för att låta Carthage uppdatera beroendena i projektet.

Ios:

carthage update --platform iOS

macOS:

carthage update --platform macOS

Manuellt

Du kan också använda Git-undermodulen eller kolla in den senaste versionen för att använda som ett ramverk i ditt program.

Lägg till appregistreringen

Därefter lägger vi till din appregistrering i koden.

Lägg först till följande importinstruktion överst i filen ViewController.swift och antingen AppDelegate.swift eller SceneDelegate.swift:

import MSAL

Lägg sedan till följande kod i ViewController.swift innan till 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?

Det enda värde som du ändrar är värdet som tilldelats kClientID att vara ditt program-ID. Det här värdet är en del av de MSAL-konfigurationsdata som du sparade under steget i början av den här självstudien för att registrera programmet.

Skapa SDK-instans

Följ dessa steg för att skapa MSAL-instansen i projektet:

Lägg till metoden initMSAL i klassen ViewController:

    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()
    }

Lägg till metoden initWebViewParams i klassen ViewController och efter metoden initMSAL:

iOS-kod:

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

macOS-kod:

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

Konfigurera Xcode-projektinställningar

Lägg till en ny nyckelringsgrupp i projektet signering & Capabilities. Nyckelringen ska vara com.microsoft.adalcache i iOS och com.microsoft.identity.universalstorage på macOS.

Xcode-användargränssnittet som visar hur nyckelringsgruppen ska konfigureras.

Endast för iOS konfigurerar du URL-scheman

I det här steget registrerar du CFBundleURLSchemes så att användaren kan omdirigeras tillbaka till appen efter inloggningen. Förresten gör LSApplicationQueriesSchemes också att din app kan använda Microsoft Authenticator.

I Xcode öppnar du Info.plist som en källkodsfil och lägger till följande i avsnittet <dict>. Ersätt [BUNDLE_ID] med det värde som du använde tidigare. Om du laddade ned koden är paketidentifieraren com.microsoft.identitysample.MSALiOS. Om du skapar ett eget projekt väljer du projektet i Xcode och öppnar fliken Allmänt. Paketidentifieraren visas i avsnittet 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>

Endast för macOS konfigurerar du appens sandbox-miljö

  1. Gå till dina Xcode-projektinställningar >flikenCapabilities>App Sandbox
  2. Markera kryssrutan för utgående anslutningar (klient) .

Nästa steg

Det här är den andra självstudien i självstudieserien som visar hur du lägger till Microsoft Authentication Library (MSAL) för iOS och macOS i din iOS Swift-app.

Innan du börjar använder du Välj en klienttyp väljare överst på den här sidan för att välja klienttyp. Microsoft Entra ID tillhandahåller två klientkonfigurationer, personal och externa. En klientkonfiguration för personal är avsedd för dina anställda, interna appar och andra organisationsresurser. En extern hyresgäst är för dina kundinriktade appar.

I den här handledningen kommer du att;

  • Lägg till MSAL-ramverket i en iOS-app (Swift).
  • Skapa SDK-instans.

Förutsättningar

  • Xcode.
  • Om du inte redan har gjort det, följ anvisningarna i Handledning: Registrera och konfigurera iOS-mobilapp (Swift) och registrera en app i din externa klient. Se till att du slutför följande steg:
    • Registrera en applikation.
    • Lägg till en URL för plattformsomdirigering.
    • Aktivera offentligt klientflöde.
    • Delegerad behörighet till Microsoft Graph.
  • iOS-projekt (Swift).

Lägga till MSAL-ramverket i en iOS-app (Swift)

MSAL-autentiserings-SDK används för att integrera autentisering i dina appar med standard-OAuth2 och OpenID Connect. Det gör att du kan logga in användare eller appar med Microsoft-identiteter. Följ dessa steg för att lägga till MSAL i ditt iOS-projekt (Swift):

  1. Öppna ditt iOS-projekt i Xcode.
  2. Välj Lägg till paketberoenden... från menyn Arkiv.
  3. Ange https://github.com/AzureAD/microsoft-authentication-library-for-objc som paket-URL och välj Lägg till paket

Uppdatera paketidentifieraren

I Apples ekosystem är en paketidentifierare en unik identifierare för ett program. Följ dessa steg för att uppdatera paketidentifieraren i projektet:

  1. Öppna projektinställningarna. I avsnittet Identity anger du Bundle Identifier.

  2. Högerklicka på Info.plist och välj Öppna som>Källkod.

  3. Under rotnoden för diktering ersätter du Enter_the_bundle_Id_Here med paket-ID som du använde i portalen. Observera msauth. prefixet i strängen.

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

Skapa SDK-instans

Följ dessa steg för att skapa MSAL-instansen i projektet:

  1. Importera MSAL-biblioteket till visningskontrollanten genom att lägga till import MSAL överst i klassen ViewController.

  2. Lägg till en applicationContext medlemsvariabel i klassen ViewController genom att lägga till följande kod precis före funktionen viewDidLoad():

    var applicationContext : MSALPublicClientApplication?
    var webViewParameters : MSALWebviewParameters?
    

    Koden deklarerar två variabler: applicationContext, som lagrar en instans av MSALPublicClientApplicationoch webViewParameters, som lagrar en instans av MSALWebviewParameters. MSALPublicClientApplication är en klass som tillhandahålls av MSAL för hantering av offentliga klientprogram. MSALWebviewParameters är en klass som tillhandahålls av MSAL och som definierar parametrar för att konfigurera webbvyn som används under autentiseringsprocessen.

  3. Lägg till följande kod i funktion viewDidLoad():

     do {
            try self.initMSAL()
        } catch let error {
            self.updateLogging(text: "Unable to create Application Context \(error)")
        }
    

    Koden försöker initiera MSAL och hantera eventuella fel som inträffar under processen. Om ett fel inträffar uppdateras loggningen med information om felet.

  4. Lägg till följande kod som skapar initMSAL() funktion som initierar 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)
    }
    

    Den här koden initierar MSAL för iOS. Den försöker först skapa en URL för myndigheten med hjälp av den angivna Configuration.kAuthority-strängen. Om det lyckas skapar det ett MSAL-utfärdarobjekt baserat på den URL:en. Sedan konfigureras MSALPublicClientApplication med det angivna klient-ID:t, omdirigerings-URI:n och auktoriteten. Om alla konfigurationer har konfigurerats korrekt initieras programkontexten med den konfigurerade MSALPublicClientApplication. Om det uppstår fel under processen genereras ett felmeddelande.

  5. Skapa filen Configuration.swift och lägg till följande konfigurationer:

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

    Den här Swift-konfigurationskoden definierar en klass med namnet Configuration och är markerad med @objcMembers. Den innehåller statiska konstanter för olika konfigurationsparametrar som är relaterade till en autentiseringskonfiguration. Dessa parametrar omfattar klientunderdomän, klient-ID, omdirigerings-URI, skyddade API-slutpunkteroch omfång. Dessa konfigurationskonstanter bör uppdateras med lämpliga värden som är specifika för programmets konfiguration.

    Hitta platshållaren:

    • Enter_the_Application_Id_Here och ersätt det med program-ID (klient)-ID:t för appen som du registrerade tidigare.
    • Enter_the_Redirect_URI_Here och ersätt det med värdet för kRedirectUri i MSAL-konfigurationsfilen som du laddade ned tidigare när du lade till omdirigerings-URL:en för plattformen.
    • Enter_the_Protected_API_Scopes_Here och ersätt den med de områden som registrerats tidigare. Om du inte har registrerat några omfång kan du lämna den här omfångslistan tom.
    • Enter_the_Tenant_Subdomain_Here och ersätt den med underdomänen Katalog (klientorganisation). Om din primära klientdomän till exempel är contoso.onmicrosoft.comanvänder du contoso. Om du inte känner till klientunderdomänen kan du lära dig hur du läsa klientinformationen.

Använda anpassad URL-domän (valfritt)

Använd en anpassad domän för att helt märka autentiserings-URL:en. Från ett användarperspektiv finns användarna kvar på din domän under autentiseringsprocessen, i stället för att omdirigeras till ciamlogin.com domännamn.

Använd följande steg för att använda en anpassad domän:

  1. Använd stegen i Aktivera anpassade URL-domäner för appar i externa klienter för att aktivera anpassad URL-domän för din externa klientorganisation.

  2. Öppna filen Configuration.swift:

    1. Uppdatera värdet för egenskapen kAuthority till https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here. Ersätt Enter_the_Custom_Domain_Here med din anpassade URL-domän och Enter_the_Tenant_ID_Here med ditt klient-ID. Om du inte har ditt klient-ID lär du dig att läsa klientinformationen.

När du har gjort ändringarna i filen Configuration.swift, om din anpassade URL-domän är login.contoso.comoch klient-ID:t är aaaabb-0000-cccc-1111-dddd222eeeebör filen se ut ungefär som följande kodfragment:

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

Nästa steg