Partager via


Tutoriel : Préparer votre application iOS (Swift) pour l’authentification

S’applique à :Cercle vert avec un symbole de coche blanche. Locataires de main-d’œuvre Cercle vert avec un symbole de coche blanche. Locataires externes (en savoir plus)

Il s’agit du deuxième tutoriel de la série de tutoriels qui montre comment ajouter microsoft Authentication Library (MSAL) pour iOS et macOS à votre application iOS Swift.

Avant de commencer, utilisez le sélecteur Choisir un type de locataire en haut de cette page pour sélectionner un type de locataire. Microsoft Entra ID fournit deux configurations de locataire : employés et externe. Une configuration de tenant de main-d’œuvre est destinée à vos employés, applications internes et autres ressources organisationnelles. Le locataire externe est destiné à vos applications accessibles par des clients.

Dans ce tutoriel, vous allez :

  • Ajoutez l’infrastructure MSAL à une application iOS (Swift).
  • Créez une instance du Kit de développement logiciel (SDK).
  • Configurez les paramètres du projet Xcode.

Conditions préalables

  • Inscrivez une nouvelle application web cliente dans le Centre d’administration Microsoft Entra, configurée pour les comptes dans n’importe quel annuaire organisationnel et comptes Microsoft personnels. Pour plus d’informations, reportez-vous à l'enregistrement d'une application. Enregistrez les valeurs suivantes à partir de la page Vue d’ensemble de l’application pour une utilisation ultérieure :
    • ID d’application (client)
    • ID d’annuaire (locataire)
  • Xcode.
  • Projet iOS (Swift).

Ajouter une URL de redirection de plateforme

Pour spécifier votre type d’application à votre inscription d’application, procédez comme suit :

  1. Sous Gérer, sélectionnez Authentification>Ajouter une plateforme>iOS/macOS.
  2. Entrez l’ID de bundle de votre projet. Si vous avez téléchargé l’exemple de code, l’ID de bundle est com.microsoft.identitysample.MSALiOS. Si vous créez votre propre projet, sélectionnez-le dans Xcode et ouvrez l’onglet Général. L’identificateur de bundle apparaît dans la section Identité.
  3. Sélectionnez Configurer et enregistrez la Configuration MSAL qui apparaît dans la page Configuration MSAL pour pouvoir l’entrer plus tard quand vous devrez configurer votre application.
  4. Cliquez sur Terminé.

Ajouter l’infrastructure MSAL à une application iOS (Swift)

Choisissez l’une des méthodes suivantes pour installer la bibliothèque MSAL dans votre application :

CocoaPods

  1. Si vous utilisez CocoaPods, installez MSAL en commençant par créer un fichier vide nommé podfile dans le même dossier que le fichier .xcodeproj de votre projet. Ajoutez l’élément suivant à podfile :

    use_frameworks!
    
    target '<your-target-here>' do
       pod 'MSAL'
    end
    
  2. Remplacez <your-target-here> par le nom de votre projet.

  3. Dans une fenêtre de terminal, accédez au dossier qui contient le podfile que vous avez créé et exécutez pod install pour installer la bibliothèque MSAL.

  4. Fermez Xcode et ouvrez <your project name>.xcworkspace pour recharger le projet dans Xcode.

Carthage

Si vous utilisez Carthage, installez MSAL en l’ajoutant à votre Cartfile :

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

À partir d’une fenêtre de terminal, dans le même répertoire que le Cartfile mis à jour, exécutez la commande suivante pour que Carthage mette à jour les dépendances dans votre projet.

iOS :

carthage update --platform iOS

macOS :

carthage update --platform macOS

Manuellement

Vous pouvez également utiliser Git Submodule ou consulter la dernière version pour l’utiliser comme framework dans votre application.

Ajouter l'enregistrement de l'application

Ensuite, nous ajoutons l’enregistrement de votre application à votre code.

Tout d’abord, ajoutez l’instruction import suivante en haut du fichier ViewController.swift et AppDelegate.swift ou SceneDelegate.swift :

import MSAL

Ensuite, ajoutez le code suivant à ViewController.swift avant 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?

La seule valeur que vous devez modifier est celle qui est attribuée à kClientID comme ID d’application. Cette valeur fait partie des données de configuration MSAL que vous avez enregistrées lors de l'étape du début de ce didacticiel pour enregistrer l'application.

Créer une instance du Kit de développement logiciel (SDK)

Pour créer une instance MSAL dans votre projet, procédez comme suit :

Ajoutez la méthode ViewController à la classe 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()
    }

Toujours dans la classe ViewController et après la méthode initMSAL, ajoutez la méthode initWebViewParams :

Code iOS :

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

Code macOS :

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

Configurer les paramètres d’un projet Xcode

Ajoutez un nouveau groupe de trousseaux à votre projet Signature et fonctionnalités. Le groupe de trousseaux doit être com.microsoft.adalcache sur iOS et com.microsoft.identity.universalstorage sur macOS.

Interface utilisateur Xcode affichant comment le groupe de trousseaux doit être configuré.

Pour iOS uniquement, configurer des schémas d’URL

Lors de cette étape, vous allez inscrire CFBundleURLSchemes afin que l’utilisateur puisse être redirigé vers l’application après la connexion. Notez que LSApplicationQueriesSchemes permet également à votre application d’utiliser Microsoft Authenticator.

Dans Xcode, ouvrez Info.plist en tant que fichier de code source et ajoutez ce qui suit dans la section <dict>. Remplacez [BUNDLE_ID] par la valeur que vous avez utilisée précédemment. Si vous avez téléchargé le code, l’identificateur de bundle est com.microsoft.identitysample.MSALiOS. Si vous créez votre propre projet, sélectionnez-le dans Xcode et ouvrez l’onglet Général. L’identificateur de bundle apparaît dans la section Identité.

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

Pour macOS uniquement, configurer App Sandbox

  1. Accédez à vos paramètres de projet Xcode >onglet Capacités>App Sandbox.
  2. Cochez la case Connexions sortantes (client) .

Étapes suivantes

Il s’agit du deuxième tutoriel de la série de tutoriels qui montre comment ajouter microsoft Authentication Library (MSAL) pour iOS et macOS à votre application iOS Swift.

Avant de commencer, utilisez le sélecteur Choisir un type de locataire en haut de cette page pour sélectionner un type de locataire. Microsoft Entra ID fournit deux configurations de locataire : employés et externe. Une configuration de tenant de main-d’œuvre est destinée à vos employés, applications internes et autres ressources organisationnelles. Le locataire externe est destiné à vos applications accessibles par des clients.

Dans ce tutoriel, vous ;

  • Ajoutez l’infrastructure MSAL à une application iOS (Swift).
  • Créez une instance du Kit de développement logiciel (SDK).

Conditions préalables

  • Inscrivez une nouvelle application web cliente dans le Centre d’administration Microsoft Entra, configurée pour les comptes dans n’importe quel annuaire organisationnel et comptes Microsoft personnels. Pour plus d’informations, reportez-vous à l'enregistrement d'une application. Enregistrez les valeurs suivantes à partir de la page Vue d’ensemble de l’application pour une utilisation ultérieure :
    • ID d’application (client)
    • ID d’annuaire (locataire)
  • Xcode.
  • Projet iOS (Swift).

Ajouter une URL de redirection de plateforme

Pour spécifier votre type d’application à votre inscription d’application, procédez comme suit :

  1. Sous Gérer, sélectionnez Authentification>Ajouter une plateforme>iOS/macOS.
  2. Entrez l’ID de bundle de votre projet. Si vous avez téléchargé l’exemple de code, l’ID de bundle est com.microsoft.identitysample.MSALiOS. Si vous créez votre propre projet, sélectionnez-le dans Xcode et ouvrez l’onglet Général. L’identificateur de bundle apparaît dans la section Identité.
  3. Sélectionnez Configurer et enregistrez la Configuration MSAL qui apparaît dans la page Configuration MSAL pour pouvoir l’entrer plus tard quand vous devrez configurer votre application.
  4. Cliquez sur Terminé.

Activer le flux de client public

Pour identifier votre application en tant que client public, procédez comme suit :

  1. Sous Gérer, sélectionnez Authentification.

  2. Sous Paramètres avancés, pour Autoriser les flux clients publics, sélectionnez Oui.

  3. Cliquez sur Enregistrer pour enregistrer vos modifications.

Ajouter l’infrastructure MSAL à une application iOS (Swift)

Le Kit de développement logiciel (SDK) d’authentification MSAL est utilisé pour intégrer l’authentification dans vos applications à l’aide d’OAuth2 standard et d’OpenID Connect. Il vous permet de connecter des utilisateurs ou des applications avec des identités Microsoft. Pour ajouter MSAL à votre projet iOS (Swift), procédez comme suit :

  1. Ouvrez votre projet iOS dans Xcode.
  2. Sélectionnez Ajouter des dépendances de package... dans le menu Fichier .
  3. Entrez https://github.com/AzureAD/microsoft-authentication-library-for-objc en tant qu’URL du package et choisissez Ajouter un package

Mettre à jour l’identificateur de bundle

Dans l’écosystème Apple, un identificateur bundle est un identificateur unique pour une application. Pour mettre à jour l’identificateur de bundle dans votre projet, procédez comme suit :

  1. Ouvrez les paramètres du projet. Dans la section Identité, entrez l'identification du lot.

  2. Cliquez avec le bouton droit sur Info.plist, puis sélectionnez Ouvrir en tant que code source>.

  3. Sous le nœud racine dict, remplacez Enter_the_bundle_Id_Here par l'identifiant du bundle que vous avez utilisé dans le portail. Notez le préfixe msauth. dans la chaîne.

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

Créer une instance du Kit de développement logiciel (SDK)

Pour créer une instance MSAL dans votre projet, procédez comme suit :

  1. Importez la bibliothèque MSAL dans votre contrôleur de vue en ajoutant import MSAL en haut de votre ViewController classe.

  2. Ajoutez une applicationContext variable membre à votre classe ViewController en ajoutant le code suivant juste avant la viewDidLoad() fonction :

    var applicationContext : MSALPublicClientApplication?
    var webViewParameters : MSALWebviewParameters?
    

    Le code déclare deux variables : applicationContext, qui stocke une instance de MSALPublicClientApplication, et webViewParameters, qui stocke une instance de MSALWebviewParameters. MSALPublicClientApplication est une classe fournie par MSAL pour la gestion des applications clientes publiques. Il MSALWebviewParameters s’agit d’une classe fournie par MSAL qui définit les paramètres de configuration de la vue web utilisée pendant le processus d’authentification.

  3. Ajoutez le code suivant à la fonction d’affichage viewDidLoad() :

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

    Le code tente d’initialiser MSAL, en gérant les erreurs qui se produisent pendant le processus. Si une erreur se produit, elle met à jour la journalisation avec les détails de l’erreur.

  4. Ajoutez le code suivant pour créer une fonction initMSAL() qui initialise 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)
    }
    

    Ce code initialise MSAL pour iOS. Il tente d’abord de créer une URL pour l’autorité à l’aide de la chaîne Configuration.kAuthority fournie. Si elle réussit, elle crée un objet d’autorité MSAL basé sur cette URL. Ensuite, il configure le MSALPublicClientApplication avec l'ID client, l'URI de redirection et l'autorité donnés. Si toutes les configurations sont correctement configurées, elle initialise le contexte d’application avec le paramètre configuré MSALPublicClientApplication. Si des erreurs se produisent pendant le processus, une erreur est générée.

  5. Créez un fichier Configuration.swift et ajoutez les configurations suivantes :

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

    Ce code de configuration Swift définit une classe nommée Configuration et est marquée avec @objcMembers. Il inclut des constantes statiques pour différents paramètres de configuration liés à une configuration d’authentification. Ces paramètres incluent le sous-domaine du locataire, l'identifiant client, l'URI de redirection, le point de terminaison d'API protégé et les étendues. Ces constantes de configuration doivent être mises à jour avec les valeurs appropriées propres à la configuration de l’application.

    Trouvez l’espace réservé :

    • Enter_the_Application_Id_Here et remplacez-le par l’ID d’application (client) de l’application inscrite précédemment.
    • Enter_the_Redirect_URI_Here et remplacez-la par la valeur de kRedirectUri dans le fichier de configuration MSAL que vous avez téléchargé précédemment lorsque vous avez ajouté l’URL de redirection de la plateforme.
    • Enter_the_Protected_API_Scopes_Here et remplacez-le par les portées enregistrées précédemment. Si vous n’avez enregistré aucune étendue, vous pouvez laisser cette liste d’étendues vide.
    • Enter_the_Tenant_Subdomain_Here et remplacez-le par le sous-domaine du répertoire (locataire). Par exemple, si le domaine principal de votre locataire est contoso.onmicrosoft.com, utilisez contoso. Si vous ne connaissez pas votre sous-domaine de locataire, découvrez comment lire les détails de votre locataire.

Utiliser un domaine d’URL personnalisé (facultatif)

Utilisez un domaine personnalisé pour personnaliser entièrement l’URL d’authentification. Du point de vue de l’utilisateur, les utilisateurs restent sur votre domaine pendant le processus d’authentification, au lieu d’être redirigés vers ciamlogin.com nom de domaine.

Procédez comme suit pour utiliser un domaine personnalisé :

  1. Utilisez les étapes décrites dans Activer les domaines d’URL personnalisés pour les applications dans les locataires externes afin d’activer le domaine d’URL personnalisé pour votre locataire externe.

  2. Ouvrez le fichier Configuration.swift :

    1. Mettez à jour la valeur de la kAuthority propriété sur https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here. Remplacez Enter_the_Custom_Domain_Here par votre domaine d’URL personnalisé et Enter_the_Tenant_ID_Here par votre ID de locataire. Si vous n’avez pas votre identifiant de locataire, apprenez comment consulter les détails de votre locataire.

Après avoir apporté les modifications à votre fichier Configuration.swift , si votre domaine d’URL personnalisé est login.contoso.com, et que votre ID de locataire est aaaabbbb-0000-cccc-1111-dddd222eeee, votre fichier doit ressembler à l’extrait de code suivant :

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

Étapes suivantes