Démarrage rapide : Connecter des utilisateurs et appeler Microsoft Graph à partir d’une application iOS ou macOS
Dans ce guide de démarrage rapide, vous téléchargez et exécutez un exemple de code qui montre comment une application iOS ou macOS native peut connecter des utilisateurs et obtenir un jeton d’accès pour appeler l’API Microsoft Graph.
Le guide de démarrage rapide s’applique aux applications iOS et macOS. Certaines étapes sont nécessaires uniquement pour les applications iOS et seront indiquées comme telles.
Conditions préalables
- Un compte Azure avec un abonnement actif. Créer un compte gratuitement.
- XCode 10+
- iOS 10+
- macOS 10.12+
Fonctionnement de l’exemple
Inscrire votre application de démarrage rapide
Pour inscrire votre application et ajouter manuellement les informations d’inscription de l’application à votre solution, procédez comme suit :
- Connectez-vous au centre d’administration de Microsoft Entra au minimum en tant que Développeur d’application.
- Si vous avez accès à plusieurs locataires, utilisez l’icône Paramètres
dans le menu supérieur pour basculer vers le locataire dans lequel vous souhaitez inscrire l’application à partir du menu Répertoires + abonnements.
- Accédez à Identité>Applications>Inscriptions d’applications.
- Sélectionnez Nouvel enregistrement.
- Entrez un nom pour votre application. Les utilisateurs de votre application peuvent voir ce nom et vous pouvez le modifier ultérieurement.
- Sélectionnez Inscription.
- Sous Gérer, sélectionnez Authentification>Ajouter une plateforme>iOS.
- Entrez l’identificateur de bundle pour votre application. L’identificateur de bundle est une chaîne unique qui identifie de manière unique votre application, par exemple
com.<yourname>.identitysample.MSALMacOS
. Notez la valeur que vous utilisez. Notez que la configuration iOS s’applique également aux applications macOS. - Sélectionnez Configurer et enregistrez les détails de la configuration MSAL pour une utilisation ultérieure dans ce guide de démarrage rapide.
- Sélectionnez Terminé.
Étape 2 : Télécharger l’exemple de projet
Étape 3 : Installer les dépendances
- Extrayez le fichier zip.
- Dans une fenêtre de terminal, accédez au dossier avec l’exemple de code téléchargé et exécutez
pod install
pour installer la dernière bibliothèque MSAL.
Étape 4 : Configurer votre projet
Si vous avez sélectionné l’option 1 ci-dessus, vous pouvez ignorer ces étapes.
Ouvrez le projet dans XCode.
Modifiez ViewController.swift et remplacez la ligne commençant par « let kClientID » par l’extrait de code suivant. N’oubliez pas de mettre à jour la valeur de
kClientID
avec l’ID client que vous avez enregistré lorsque vous avez inscrit votre application précédemment dans ce guide de démarrage rapide :let kClientID = "Enter_the_Application_Id_Here"
Si vous créez une application pour les clouds nationaux Microsoft Entra, remplacez la ligne commençant par « let kGraphEndpoint » et « let kAuthority » par des points de terminaison appropriés. Pour l’accès global, utilisez les valeurs par défaut :
let kGraphEndpoint = "https://graph.microsoft.com/" let kAuthority = "https://login.microsoftonline.com/common"
D’autres points de terminaison sont documentés ici. Par exemple, pour exécuter le démarrage rapide avec "Microsoft Entra Germany", utilisez ce qui suit :
let kGraphEndpoint = "https://graph.microsoft.de/" let kAuthority = "https://login.microsoftonline.de/common"
Ouvrez les paramètres du projet. Dans la section Identité, entrez l’identificateur de l’offre groupée.
Cliquez avec le bouton droit sur Info.plist, puis sélectionnez Ouvrir en tant que code source>.
Sous le nœud racine dict, remplacez
Enter_the_bundle_Id_Here
par l’ID de l’offre groupée que vous avez utilisé dans le portail. Notez le préfixemsauth.
dans la chaîne.<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>msauth.Enter_the_Bundle_Id_Here</string> </array> </dict> </array>
Générez et exécutez l’application !
Plus d’informations
Lisez ces sections pour en savoir plus sur ce guide de démarrage rapide.
Obtenir MSAL
MSAL (MSAL.framework) est la bibliothèque utilisée pour connecter des utilisateurs et demander des jetons utilisés pour accéder à une API protégée par la plateforme d’identités Microsoft. Vous pouvez ajouter MSAL à votre application à l’aide du processus suivant :
$ vi Podfile
Ajoutez les éléments suivants à ce podfile (avec la cible de votre projet) :
use_frameworks!
target 'MSALiOS' do
pod 'MSAL'
end
Commande Exécuter l’installation de CocoaPods :
pod install
Initialiser MSAL
Vous pouvez ajouter la référence pour MSAL en ajoutant le code suivant :
import MSAL
Ensuite, initialisez MSAL à l’aide du code suivant :
let authority = try MSALAADAuthority(url: URL(string: kAuthority)!)
let msalConfiguration = MSALPublicClientApplicationConfig(clientId: kClientID, redirectUri: nil, authority: authority)
self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)
Où: | Description |
---|---|
clientId |
L’ID d’application de l’application inscrite dans portal.azure.com |
authority |
Plateforme d’identités Microsoft. Dans la plupart des cas, cela sera https://login.microsoftonline.com/common |
redirectUri |
URI de redirection de l'application. Vous pouvez passer « nil » pour utiliser la valeur par défaut ou votre URI de redirection personnalisé. |
Pour iOS uniquement, exigences d’application supplémentaires
Votre application doit également comporter ce qui suit dans la propriété AppDelegate
. Cela permet au Kit de développement logiciel (SDK) MSAL de gérer la réponse des jetons de l’application broker Auth lorsque vous effectuez l’authentification.
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
return MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String)
}
Remarque
Sur iOS 13+, si vous adoptez UISceneDelegate
au lieu de UIApplicationDelegate
, placez ce code dans le rappel scene:openURLContexts:
à la place (consultez la documentation Apple).
Si vous prenez en charge à la fois UISceneDelegate et UIApplicationDelegate pour assurer la compatibilité avec une version plus ancienne d’iOS, le rappel MSAL doit être placé aux deux endroits.
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
guard let urlContext = URLContexts.first else {
return
}
let url = urlContext.url
let sourceApp = urlContext.options.sourceApplication
MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: sourceApp)
}
Enfin, votre application doit avoir une entrée LSApplicationQueriesSchemes
dans votre Info.plist en même temps que le CFBundleURLTypes
. L'exemple est fourni avec ceci inclus.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>msauthv2</string>
<string>msauthv3</string>
</array>
Connexion des utilisateurs et demandes de jetons
MSAL a deux méthodes utilisées pour acquérir des jetons : acquireToken
et acquireTokenSilent
.
acquireToken : Obtenir un jeton de manière interactive
Certaines situations nécessitent que les utilisateurs interagissent avec la plateforme d’identités Microsoft. Dans ce cas, l’utilisateur final peut être tenu de sélectionner son compte, d’entrer ses informations d’identification ou de donner son consentement aux autorisations de votre application. Par exemple
- La première fois que les utilisateurs se connectent à l’application
- Si un utilisateur réinitialise son mot de passe, il doit entrer ses informations d’identification
- Lorsque votre application demande l’accès à une ressource pour la première fois
- Lorsque l'authentification multifacteur ou d'autres stratégies d'accès conditionnel sont requises
let parameters = MSALInteractiveTokenParameters(scopes: kScopes, webviewParameters: self.webViewParamaters!)
self.applicationContext!.acquireToken(with: parameters) { (result, error) in /* Add your handling logic */}
Où: | Description |
---|---|
scopes |
Contient les étendues demandées (autrement dit, [ "user.read" ] pour Microsoft Graph ou [ "<Application ID URL>/scope" ] pour les API web personnalisées (api://<Application ID>/access_as_user )) |
acquireTokenSilent : Obtenir un jeton d’accès en mode silencieux
Les applications ne doivent pas exiger que leurs utilisateurs se connectent chaque fois qu’ils demandent un jeton. Si l’utilisateur s’est déjà connecté, cette méthode permet aux applications de demander des jetons en mode silencieux.
self.applicationContext!.getCurrentAccount(with: nil) { (currentAccount, previousAccount, error) in
guard let account = currentAccount else {
return
}
let silentParams = MSALSilentTokenParameters(scopes: self.kScopes, account: account)
self.applicationContext!.acquireTokenSilent(with: silentParams) { (result, error) in /* Add your handling logic */}
}
Où: | Description |
---|---|
scopes |
Contient les étendues demandées (autrement dit, [ "user.read" ] pour Microsoft Graph ou [ "<Application ID URL>/scope" ] pour les API web personnalisées (api://<Application ID>/access_as_user )) |
account |
Le compte pour lequel un jeton est demandé. Ce guide de démarrage rapide concerne une application de compte unique. Si vous souhaitez créer une application multicompte, vous devez définir une logique permettant d’identifier le compte à utiliser pour les demandes de jetons à l’aide de accountsFromDeviceForParameters:completionBlock: et de transmettre le accountIdentifier correct. |
Aide et support
Si vous avez besoin d’aide, souhaitez signaler un problème ou pour en savoir plus sur vos options de support, consultez Aide et support pour les développeurs.
Étapes suivantes
Passez au didacticiel pas à pas dans lequel vous créez une application iOS ou macOS qui obtient un jeton d’accès à partir de la plateforme d’identités Microsoft et l’utilise pour appeler l’API Microsoft Graph.