Condividi tramite


Esercitazione: preparare l'app iOS (Swift) per l'autenticazione

Questa è la seconda della serie di esercitazioni che illustra come aggiungere Microsoft Authentication Library (MSAL) per iOS e macOS all'app Swift.

In questa esercitazione, viene illustrato come:

  • Aggiungere il framework MSAL a un'app iOS (Swift).
  • Creare un'istanza dell'SDK.

Prerequisiti

  • Xcode.
  • Se non è già stato fatto, seguire le istruzioni contenute in Esercitazione: registrare e configurare l'app per dispositivi mobili iOS (Swift) e registrare un'app nel tenant esterno. Assicurarsi di completare i passaggi seguenti:
    • Registrare un'applicazione.
    • Aggiungere un URL di reindirizzamento della piattaforma.
    • Abilitare il flusso client pubblico.
    • Autorizzazione delegata per Microsoft Graph.
  • Progetto iOS (Swift).

Aggiungere il framework MSAL a un'app iOS (Swift)

L'SDK di autenticazione MSAL viene usato per integrare l'autenticazione nelle app tramite OAuth2 standard e OpenID Connect. Consente a utenti o app di accedere con identità Microsoft. Per aggiungere MSAL al progetto iOS (Swift), attenersi alla pro procedura seguente:

  1. Aprire il progetto iOS in Xcode.
  2. Selezionare Aggiungi dipendenze pacchetto... dal menu File.
  3. Immettere https://github.com/AzureAD/microsoft-authentication-library-for-objc come URL del pacchetto e scegliere Aggiungi pacchetto

Aggiornare l'identificatore del bundle

Nell'ecosistema Apple, un identificatore bundle è un identificatore univoco di un'applicazione. Per aggiornare l'identificatore bundle nel progetto, attenersi alla procedura seguente:

  1. Aprire le impostazioni del progetto. Nella sezione Identità, immettere l'Identificatore bundle.

  2. Fare clic con il pulsante destro del mouse su Info.plist e scegliere Apri come>Codice sorgente.

  3. Nel nodo radice dict sostituire Enter_the_bundle_Id_Here con il valore di ID bundle usato nel portale. Si noti il prefisso msauth. nella stringa.

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

Creare un'istanza dell'SDK

Per creare un'istanza MSAL nel progetto, attenersi alla procedura seguente:

  1. Importare la libreria MSAL nel controller di visualizzazione aggiungendo import MSAL nella parte superiore della classe ViewController.

  2. Aggiungere una variabile membro applicationContext alla classe ViewController aggiungendo il codice seguente subito prima della funzione viewDidLoad():

    var applicationContext : MSALPublicClientApplication?
    var webViewParamaters : MSALWebviewParameters?
    

    Il codice dichiara due variabili: applicationContext, che archivia un'istanza di MSALPublicClientApplication e webViewParameters, che archivia un'istanza di MSALWebviewParameters. MSALPublicClientApplication è una classe fornita da MSAL per la gestione delle applicazioni client pubbliche. MSALWebviewParameters è una classe fornita da MSAL che definisce i parametri per la configurazione della visualizzazione Web usata durante il processo di autenticazione.

  3. Aggiungere il codice seguente alla funzione viewDidLoad() di visualizzazione:

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

    Il codice tenta di inizializzare MSAL, gestendo eventuali errori che si verificano durante il processo. Se si verifica un errore, aggiorna la registrazione con i dettagli dell'errore.

  4. Aggiungere il codice seguente che crea la funzione initMSAL(), che inizializza 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)
    }
    

    Questo codice inizializza MSAL per iOS. Tenta prima di tutto di creare un URL per l'autorità usando la stringa Configuration.kAuthority fornita. In caso di esito positivo, crea un oggetto autorità MSAL basato su tale URL. Configura quindi MSALPublicClientApplication con l'ID client, l'URI di reindirizzamento e l'autorità specificati. Se tutte le configurazioni sono configurate correttamente, inizializza il contesto dell'applicazione con MSALPublicClientApplication di cui è stata eseguita la configurazione. Se si verificano problemi durante il processo, viene generato un errore.

  5. Creare il file Configuration.swift e aggiungere le configurazioni seguenti:

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

    Questo codice di configurazione Swift definisce una classe denominata Configuration ed è contrassegnata con @objcMembers. Include costanti statiche per vari parametri di configurazione correlati a un'installazione di autenticazione. Questi parametri includono il sottodominio tenant, ID client, URI di reindirizzamento, endpoint API protetto e ambiti. Queste costanti di configurazione devono essere aggiornate con valori appropriati specifici per l'installazione dell'applicazione.

    Individuare il segnaposto:

    • Enter_the_Application_Id_Here e sostituirlo con l'ID applicazione (client) dell’app registrata precedentemente.
    • Enter_the_Redirect_URI_Here e sostituirlo con il valore di kRedirectUri nel file di configurazione MSAL scaricato in precedenza quando è stato aggiunto l'URL di reindirizzamento della piattaforma.
    • Enter_the_Protected_API_Scopes_Here e sostituirlo con gli ambiti registrati in precedenza. Se non sono stati registrati ambiti, è possibile lasciare vuoto questo elenco di ambiti.
    • Enter_the_Tenant_Subdomain_Here e sostituirlo con il sottodominio della directory (tenant). Ad esempio, se il dominio primario del tenant è contoso.onmicrosoft.com, usare contoso. Se il sottodominio del tenant non è disponibile, vedere come leggere i dettagli del tenant.

Usare l'URL di dominio personalizzato (facoltativo)

Usare un dominio personalizzato per personalizzare completamente l'URL di autenticazione. Dal punto di vista dell'utente, gli utenti rimangono nel dominio durante il processo di autenticazione, anziché essere reindirizzati a ciamlogin.com nome di dominio.

Usare la procedura seguente per usare un dominio personalizzato:

  1. Usare la procedura descritta in Abilitare domini URL personalizzati per le app nei tenant esterni per abilitare l'URL di dominio personalizzato per il tenant esterno.

  2. Aprire il file Configuration.swift :

    1. Aggiornare il valore della kAuthority proprietà in https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here. Sostituire Enter_the_Custom_Domain_Here con l'URL del dominio personalizzato e Enter_the_Tenant_ID_Here con l'ID tenant. Se non si ha l'ID tenant, vedere come leggere i dettagli del tenant.

Dopo aver apportato le modifiche al file Configuration.swift , se l'URL del dominio personalizzato è login.contoso.com e l'ID tenant è aaaabbbb-0000-cccc-1111-dddd2222eeee, il file dovrebbe essere simile al frammento di codice seguente:

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

Passaggi successivi

Esercitazione: accesso degli utenti all'app per dispositivi mobili iOS (Swift)