Partager via


Étape 3 : intégration du SDK Intune à votre application iOS

Remarque

Ce guide est divisé en plusieurs étapes distinctes. Commencez par consulter Planifier l’intégration.

Goals de phase

  • Téléchargez le Kit de développement logiciel (SDK) Intune App.
  • Découvrez les fichiers inclus dans le Kit de développement logiciel (SDK) Intune App.
  • Référencez le KIT de développement logiciel (SDK) Intune App dans votre application.
  • Vérifiez que le KIT de développement logiciel (SDK) Intune App est correctement inclus dans votre build.
  • Inscrivez de nouveaux comptes pour la gestion MAM après l’authentification auprès de MSAL.
  • Pour supprimer des données d’entreprise, annulez l’inscription des comptes lors de la déconnexion
  • (Recommandé) Incorporez la connexion MAM dans votre application.

Configuration requise

  • Vous avez besoin d’un ordinateur macOS sur lequel Xcode 14.0 ou version ultérieure est installé.

  • Votre application doit être ciblée pour iOS 14.0 ou version ultérieure.

  • Passez en revue les termes du contrat de licence Intune App SDK pour iOS. Imprimez et conservez une copie des termes du contrat de licence pour vos enregistrements. En téléchargeant et en utilisant le SDK d’application Intune pour iOS, vous acceptez ces termes du contrat de licence. Si vous ne les acceptez pas, n’utilisez pas le logiciel.

  • Téléchargez les fichiers du SDK d’application Intune pour iOS sur GitHub.

Qu’est-ce qui se trouve dans le référentiel sdk ?

  • IntuneMAMSwift.xcframework : framework dynamique du SDK d’application Intune. Il est recommandé de lier cette infrastructure à votre application/extensions pour activer Intune gestion des applications clientes. Toutefois, certains développeurs peuvent préférer les avantages en matière de performances de l’infrastructure statique (IntuneMAMStatic.xcframework). Voir ci-dessous.

  • IntuneMAMStatic.xcframework : framework statique du SDK d’application Intune. Les développeurs peuvent choisir de lier l’infrastructure statique au lieu de l’infrastructure dynamique. Étant donné que le code exécutable d’une infrastructure statique est incorporé directement dans le binaire d’application/d’extension au moment de la génération, l’utilisation de la bibliothèque statique présente des avantages en matière de performances au moment du lancement. Toutefois, si votre application inclut des extensions, la liaison de l’infrastructure statique à l’application et aux extensions entraîne une plus grande taille d’ensemble d’applications, car le code exécutable est incorporé dans chaque binaire d’application/extension. En revanche, lors de l’utilisation de l’infrastructure dynamique, les applications et les extensions peuvent partager le même Intune binaire du SDK, ce qui réduit la taille de l’application.

  • IntuneMAMSwiftStub.xcframework : framework Swift Stub du SDK d’application Intune. Cette infrastructure est une dépendance obligatoire d’IntuneMAMSwift.xcframework et d’IntuneMAMStatic.xcframework que les applications/extensions doivent lier.

  • IntuneMAMConfigurator : outil utilisé pour configurer info.plist de l’application ou de l’extension avec les modifications minimales requises pour la gestion des Intune. Selon les fonctionnalités de votre application ou extension, vous devrez peut-être apporter des modifications manuelles à Info.plist.

  • libIntuneMAMSwift.xcframework : bibliothèque statique du SDK d’application Intune. Cette variante du kit de développement logiciel (SDK) iOS Intune MAM est déconseillée et sera supprimée dans une prochaine mise à jour. Il est recommandé de ne pas lier la bibliothèque statique, mais plutôt de lier votre application/extensions à l’infrastructure dynamique (IntuneMAMSwift.xcframework) ou statique (IntuneMAMStatic.xcframework) mentionnée précédemment.

  • IntuneMAMResources.bundle : offre groupée de ressources qui contient des ressources sur lesquelles le SDK s’appuie. L’offre groupée de ressources est requise uniquement pour les applications qui intègrent la bibliothèque statique déconseillée (libIntuneMAMSwift.xcframework) et sera supprimée dans une prochaine mise à jour.

Fonctionnement du Kit de développement logiciel (SDK) Intune App

L’objectif du SDK d’application Intune pour iOS est d’ajouter des fonctionnalités de gestion aux applications iOS avec des modifications de code minimales. Moins le code change, moins le temps de mise sur le marché est réduit, mais sans affecter la cohérence et la stabilité de votre application mobile.

Flux de processus

Le diagramme suivant fournit le flux de processus du SDK d’application Intune pour iOS :

Diagramme architectural de haut niveau pour Microsoft Intune.

Créer le KIT de développement logiciel (SDK) dans votre application mobile

Importante

Intune publie régulièrement des mises à jour du Kit de développement logiciel (SDK) Intune App. Vous case activée régulièrement le KIT de développement logiciel (SDK) d’application Intune pour iOS pour les mises à jour et l’intégrer à votre cycle de publication de développement logiciel pour vous assurer que vos applications prennent en charge les derniers paramètres de stratégie de protection des applications.

Pour activer le Kit de développement logiciel (SDK) Intune App, procédez comme suit :

  1. IntuneMAMSwift.xcframework Lier ou IntuneMAMStatic.xcframework à votre cible : faites glisser le bundle xcframework vers la liste Frameworks, Bibliothèques et Contenu incorporé de la cible du projet. Répétez ces étapes pour IntuneMAMSwiftStub.xcframework. Pour votre application main, sélectionnez « Incorporer & connexion » dans la colonne « Incorporer » pour les deux xcframeworks ajoutés. Pour toutes les extensions, sélectionnez « Ne pas incorporer ».

    Intune App SDK iOS Framework : Exemples de frameworks, bibliothèques et contenu incorporé Xcode

  2. Ajoutez ces frameworks iOS au projet :

    • MessageUI.framework
    • Security.framework
    • CoreServices.framework
    • SystemConfiguration.framework
    • libsqlite3.tbd
    • libc++.tbd
    • ImageIO.framework
    • LocalAuthentication.framework
    • AudioToolbox.framework
    • QuartzCore.framework
    • WebKit.framework
    • MetricKit.framework
  3. Activez le partage keychain (s’il n’est pas déjà activé) en choisissant Fonctionnalités dans chaque cible de projet et en activant le commutateur Partage de trousseau. Le partage de trousseau est nécessaire pour passer à l’étape suivante.

    Remarque

    Votre profil d’approvisionnement doit prendre en charge de nouvelles valeurs de partage keychain. Les groupes d’accès keychain doivent prendre en charge un caractère générique. Vous pouvez case activée cela en ouvrant le fichier .mobileprovision dans un éditeur de texte, en recherchant keychain-access-groups et en veillant à disposer d’un caractère générique. Par exemple :

    <key>keychain-access-groups</key>
    <array>
    <string>YOURBUNDLESEEDID.*</string>
    </array>
    
  4. Après avoir activé le partage keychain, suivez les étapes pour créer un groupe d’accès distinct dans lequel le SDK Intune App stockera ses données. Vous pouvez créer un groupe d’accès keychain à l’aide de l’interface utilisateur ou du fichier de droits. Si vous utilisez l’interface utilisateur pour créer le groupe d’accès keychain, veillez à effectuer les étapes suivantes :

    1. Si aucun groupe d’accès keychain n’est défini pour votre application mobile, ajoutez l’ID de bundle de l’application en tant que premier groupe.

    2. Ajoutez le groupe com.microsoft.intune.mam keychain partagé à vos groupes d’accès existants. Le SDK d’application Intune utilise ce groupe d’accès pour stocker des données.

    3. Ajoutez com.microsoft.adalcache à vos groupes d’accès existants.

      SDK d’application Intune iOS : partage keychain

    4. Si vous modifiez directement le fichier de droits, au lieu d’utiliser l’interface utilisateur Xcode ci-dessus pour créer les groupes d’accès keychain, ajoutez les groupes d’accès keychain avec $(AppIdentifierPrefix) (Xcode gère cela automatiquement). Par exemple :

      • $(AppIdentifierPrefix)com.microsoft.intune.mam
      • $(AppIdentifierPrefix)com.microsoft.adalcache

      Remarque

      Un fichier de droits est un fichier XML unique à votre application mobile. Il est utilisé pour spécifier des autorisations et des fonctionnalités spéciales dans votre application iOS. Si votre application ne disposait pas auparavant d’un fichier de droits, l’activation du partage keychain (étape 3) aurait dû entraîner la génération par Xcode d’un fichier pour votre application. Vérifiez que l’ID de bundle de l’application est la première entrée de la liste.

  5. Incluez chaque protocole auquel votre application passe dans UIApplication canOpenURL le LSApplicationQueriesSchemes tableau du fichier Info.plist de votre application. Pour chaque protocole répertorié dans ce tableau, une copie du protocole ajouté avec -intunemam doit également être ajoutée au tableau. En outre, , http-intunemam, microsoft-edge-http-intunemam, , smart-nsmicrosoft-edge-https-intunemam, zips, lacoonsecurity, wanderalookoutwork-ase, skycure, mvisionmobilebetteractiveshieldsmsecscmxet intunemam-mtd doivent être ajoutés au tableau. https-intunemam Si votre application utilise le protocole mailto :, ms-outlook-intunemam doit également être ajoutée au tableau. Veillez à enregistrer vos modifications avant de passer à l’étape suivante.

    Si l’application manque d’espace dans sa liste LSApplicationQueriesSchemes, elle peut supprimer les schémas « -intunemam » pour les applications qui sont connues pour implémenter également le sdk gam Intune. Lorsque l’application supprime « scheme-intunemam » de la liste LSApplicationQueriesSchemes, canOpenURL() peut retourner des réponses incorrectes pour ces schémas. Pour résoudre ce problème, l’application doit plutôt appeler [IntuneMAMPolicy isURLAllowed:url isKnownManagedAppScheme:YES] pour ce schéma. Cet appel retourne NO si la stratégie bloque l’ouverture de l’URL. Si elle retourne true, l’application peut appeler canOpenURL() avec une identité vide pour déterminer si l’URL peut être ouverte. Par exemple :

    BOOL __block canOpen = NO;
    if([policy isURLAllowed:urlForKnownManagedApp isKnownManagedAppScheme:YES])
    {
        [[IntuneMAMPolicyManager instance] setCurrentThreadAccountId:"" forScope:^{
        canOpen = [[UIApplication sharedApplication] canOpenURL:urlForKnownManagedApp];
        }];
    }
    
  6. Si votre application n’utilise pas déjà FaceID, vérifiez que la clé NSFaceIDUsageDescription Info.plist est configurée avec un message par défaut. Cette étape est nécessaire pour qu’iOS puisse indiquer à l’utilisateur comment l’application envisage d’utiliser FaceID. Un paramètre de stratégie de protection des applications Intune permet d’utiliser FaceID comme méthode d’accès aux applications lorsqu’il est configuré par l’administrateur informatique.

  7. Utilisez l’outil IntuneMAMConfigurator inclus dans le dépôt sdk pour terminer la configuration d’Info.plist de votre application. L’outil a trois paramètres :

    Propriété Comment l’utiliser
    -Je <Path to the input plist>
    - e <Path to the entitlements file>
    - o (Facultatif) <Path to the output plist>

    Si le paramètre « -o » n’est pas spécifié, le fichier d’entrée est modifié sur place. L’outil est idempotent et doit être réexécuté chaque fois que des modifications ont été apportées à Info.plist ou à des droits d’utilisation de l’application. Vous devez également télécharger et exécuter la dernière version de l’outil lors de la mise à jour du Kit de développement logiciel (SDK) Intune, au cas où les exigences de configuration d’Info.plist auraient changé dans la dernière version.

Paramètres de build Xcode

L’application doit avoir à la fois « Supprimer les symboles Swift » (STRIP_SWIFT_SYMBOLS) et « Activer le code binaire » (ENABLE_BITCODE) définis sur NON.

Intégration d’une extension de fournisseur de fichiers

Les extensions de fournisseur de fichiers ont certaines exigences en mémoire qui peuvent compliquer l’intégration du Kit de développement logiciel (SDK) complet. Pour faciliter la tâche, il existe une bibliothèque libIntuneMAMSwiftFileProvider.xcframework statique qui est une version simplifiée du Kit de développement logiciel (SDK) spécifiquement pour les extensions de fournisseur de fichiers. Notez qu’il s’agit de la partie non-interface utilisateur de l’extension FileProvider. Vous devez intégrer le KIT de développement logiciel (SDK) complet dans l’extension d’interface utilisateur du fournisseur de fichiers.

Pour intégrer l’une de ces bibliothèques à votre extension de fournisseur de fichiers, suivez les étapes d’intégration du Kit de développement logiciel (SDK) en tant que bibliothèque statique, comme indiqué ci-dessus. Veillez à inclure le ContainingAppBundleId paramètre.

Intégration d’une extension de fournisseur de fichiers non répliquée

Votre application utilise un fournisseur de fichiers non répliqué si elle implémente le protocole NSFileProviderExtension. Tous les fournisseurs de fichiers créés avant iOS 16.0 ne sont pas répliqués.

Dans - startProvidingItemAtURL :completionHandler : case activée si vous devez chiffrer des fichiers à l’aide de [[IntuneMAMPolicy instance]shouldFileProviderEncryptFiles]]. Utilisez l’API encryptFile :forAccountId : dans IntuneMAMFileProtectionManager pour le chiffrement de fichier réel. Partagez également une copie du fichier lorsque le chiffrement est requis, car vous ne souhaitez pas stocker une copie chiffrée du fichier dans votre stockage cloud.

Dans - importDocumentAtURL :toParentItemIdentifier :completionHandler : case activée si le fichier est chiffré à l’aide de l’API isFileEncrytped : dans IntuneMAMFileProtectionManager. Si c’est le cas, déchiffrez-le à l’aide decryptFile :toCopyPath : API d’IntuneMAMFileProtectionManager. Dans les applications multi-identités, case activée également l’API canReceiveSharedFile : dans la stratégie IntuneMAMPolicy du propriétaire de destination pour voir si le propriétaire peut recevoir le fichier.

Intégration d’une extension de fournisseur de fichiers répliqué

Votre application utilise un fournisseur de fichiers répliqué si elle implémente le protocole NSFileProviderReplicatedExtension (ajouté dans iOS 16.0).

Dans - fetchContentsForItemWithIdentifier :version :request :completionHandler : case activée si vous devez chiffrer des fichiers à l’aide de [[IntuneMAMPolicy instance]shouldFileProviderEncryptFileFiles]]. Utilisez l’API encryptFile :forAccountId : dans IntuneMAMFileProtectionManager pour le chiffrement de fichier réel. Partagez également une copie du fichier lorsque le chiffrement est requis, car vous ne souhaitez pas stocker une copie chiffrée du fichier dans votre stockage cloud.

Dans - createItemBasedOnTemplate :fields :contents :options :request :completionHandler : case activée si le fichier est chiffré à l’aide de l’API isFileEncrypted : dans IntuneMAMFileProtectionManager. Si c’est le cas, déchiffrez-le à l’aide decryptFile :toCopyPath : API d’IntuneMAMFileProtectionManager. Dans les applications multi-identités, case activée également l’API canReceiveSharedFile : dans la stratégie IntuneMAMPolicy du propriétaire de destination pour voir si le propriétaire peut recevoir le fichier.

Partout où le fournisseur de fichiers répliqué crée et passe un NSFileProviderItem au système, appelez l’API protectFileProviderItem :forAccountId : d’IntuneMAMFileProtectionManager avec l’identité du propriétaire de l’élément. Selon l’emplacement où l’objet NSFileProviderItem est créé et conservé dans votre extension, vous devrez peut-être le faire dans chacune des méthodes de protocole de NSFileProviderReplicatedExtension.

Configurer les paramètres du KIT de développement logiciel (SDK) de l’application Intune

Vous pouvez utiliser le dictionnaire IntuneMAMSettings dans le fichier Info.plist de l’application pour configurer et configurer le SDK d’application Intune. Si le dictionnaire IntuneMAMSettings n’est pas visible dans votre fichier Info.plist, vous devez le créer.

Sous le dictionnaire IntuneMAMSettings, vous pouvez définir les paramètres pris en charge suivants pour configurer le Kit de développement logiciel (SDK) Intune App.

Certains de ces paramètres ont peut-être été abordés dans les sections précédentes, et d’autres ne s’appliquent pas à toutes les applications.

Setting Type Définition Obligatoire ?
ADALClientId String Identificateur client Microsoft Entra de l’application. Obligatoire pour toutes les applications.
ADALAuthority String Autorité de Microsoft Entra de l’application en cours d’utilisation. Vous devez utiliser votre propre environnement où Microsoft Entra comptes ont été configurés. Pour plus d’informations, consultez Options de configuration d’application. Obligatoire si l’application est une application métier personnalisée conçue pour une utilisation au sein d’un seul locataire organization/Microsoft Entra. Si cette valeur est absente, l’autorité de Microsoft Entra commune est utilisée (qui n’est prise en charge que pour les applications multilocataires).
ADALRedirectUri String URI de redirection Microsoft Entra de l’application. ADALRedirectUri ou ADALRedirectScheme est requis pour toutes les applications.
ADALRedirectScheme String Schéma de redirection Microsoft Entra ID de l’application. Cela peut être utilisé à la place d’ADALRedirectUri si l’URI de redirection de l’application est au format scheme://bundle_id. ADALRedirectUri ou ADALRedirectScheme est requis pour toutes les applications.
ADALLogOverrideDisabled Boolean Spécifie si le SDK acheminera tous les journaux MSAL (y compris les appels MSAL de l’application, le cas échéant) vers son propre fichier journal. La valeur par défaut est NO. Définissez sur OUI si l’application définit son propre rappel de journal MSAL. Optional.
ADALCacheKeychainGroupOverride String Spécifie le groupe keychain à utiliser pour le cache MSAL, au lieu de « com.microsoft.adalcache ». Notez qu’il n’a pas le préfixe app-id. Il sera préfixé à la chaîne fournie au moment de l’exécution. Optional.
AppGroupIdentifiers Tableau de chaînes Tableau de groupes d’applications de la section com.apple.security.application-groups des droits de l’application. Obligatoire si l’application utilise des groupes d’applications.
ContainingAppBundleId String Spécifie l’ID de bundle de l’application contenant l’extension. Obligatoire pour les extensions iOS.
AutoEnrollOnLaunch Boolean Spécifie si l’application doit tenter de s’inscrire automatiquement au lancement si une identité managée existante est détectée et qu’elle ne l’a pas encore fait. La valeur par défaut est NO.

Remarques : Si aucune identité managée n’est trouvée ou qu’aucun jeton valide pour l’identité n’est disponible dans le cache MSAL, la tentative d’inscription échoue en mode silencieux sans demander d’informations d’identification, sauf si l’application a également défini MAMPolicyRequired sur OUI.
Optional. La valeur par défaut est non.
MAMPolicyRequired Boolean Spécifie si le démarrage de l’application n’est pas bloqué si l’application n’a pas de stratégie de protection des applications Intune. La valeur par défaut est NO.

Remarques : Les applications ne peuvent pas être envoyées au App Store avec MAMPolicyRequired défini sur OUI. Lorsque vous définissez MAMPolicyRequired sur OUI, AutoEnrollOnLaunch doit également être défini sur OUI.
Optional. La valeur par défaut est non.
MAMPolicyWarnAbsent Boolean Spécifie si l’application avertit l’utilisateur lors du lancement si l’application n’a pas de stratégie de protection des applications Intune.

Remarque : les utilisateurs sont toujours autorisés à utiliser l’application sans stratégie après avoir ignoré l’avertissement.
Optional. La valeur par défaut est non.
MultiIdentity Boolean Spécifie si l’application prend en charge les identités multiples. Optional. La valeur par défaut est non.
SafariViewControllerBlockedOverride Boolean Désactive les hooks SafariViewController de Intune pour activer l’authentification MSAL via SFSafariViewController, SFAuthSession ou ASWebAuthSession.

Remarque : la propriété du bouton d’activité SFSafariViewControllerConfiguration n’est pas prise en charge par le contrôleur d’affichage Safari géré de Intune. Un bouton d’activité configuré s’affiche uniquement dans safariViewController si l’affichage n’est pas géré et que safariViewControllerBlockedOverride est défini sur oui.
Optional. La valeur par défaut est non. AVERTISSEMENT : peut entraîner une fuite de données en cas d’utilisation incorrecte. Activez uniquement si cela est absolument nécessaire. Pour plus d’informations, consultez Considérations spéciales lors de l’utilisation de MSAL pour l’authentification lancée par l’application.
SplashIconFile
SplashIconFile~ipad
String Spécifie le fichier d’icône de démarrage (démarrage) Intune. Optional.
SplashDuration Nombre Durée minimale, en secondes, pendant laquelle l’écran de démarrage Intune s’affiche au lancement de l’application. La valeur par défaut est 1.5. Optional.
BackgroundColor String Spécifie la couleur d’arrière-plan des composants d’interface utilisateur du SDK Intune. Accepte une chaîne RVB hexadécimale sous la forme de #XXXXXX, où X peut être comprise entre 0 et 9 ou A-F. Le signe dièse peut être omis. Optional. Par défaut, la couleur d’arrière-plan du système peut varier selon les versions d’iOS et selon le paramètre mode sombre iOS.
ForegroundColor String Spécifie la couleur de premier plan pour les composants d’interface utilisateur du SDK Intune, comme la couleur du texte. Accepte une chaîne RVB hexadécimale sous la forme de #XXXXXX, où X peut être comprise entre 0 et 9 ou A-F. Le signe dièse peut être omis. Optional. Par défaut, la couleur de l’étiquette système peut varier selon les versions d’iOS et selon le paramètre Mode sombre iOS.
AccentColor String Spécifie la couleur d’accentuation des composants d’interface utilisateur du KIT de développement logiciel (SDK) Intune, comme la couleur du texte du bouton et la couleur de surbrillance de la zone de code confidentiel. Accepte une chaîne RVB hexadécimale sous la forme de #XXXXXX, où X peut être comprise entre 0 et 9 ou A-F. Le signe dièse peut être omis. Optional. La valeur par défaut est bleu système.
SecondaryBackgroundColor String Spécifie la couleur d’arrière-plan secondaire pour les écrans MTD. Accepte une chaîne RVB hexadécimale sous la forme de #XXXXXX, où X peut être comprise entre 0 et 9 ou A-F. Le signe dièse peut être omis. Optional. La valeur par défaut est blanc.
SecondaryForegroundColor String Spécifie la couleur de premier plan secondaire pour les écrans MTD, comme la couleur de la note de bas de page. Accepte une chaîne RVB hexadécimale sous la forme de #XXXXXX, où X peut être comprise entre 0 et 9 ou A-F. Le signe dièse peut être omis. Optional. La valeur par défaut est gris.
SupportsDarkMode Boolean Spécifie si le jeu de couleurs de l’interface utilisateur du sdk Intune doit respecter le paramètre du mode sombre système, si aucune valeur explicite n’a été définie pour BackgroundColor/ForegroundColor/AccentColor Optional. La valeur par défaut est Oui.
MAMTelemetryDisabled Boolean Spécifie si le Kit de développement logiciel (SDK) n’envoie pas de données de télémétrie à son back-end. Optional. La valeur par défaut est non.
MAMTelemetryUsePPE Boolean Spécifie si le SDK MAM envoie des données au back-end de télémétrie PPE. Utilisez-la lors du test de vos applications avec Intune stratégie afin que les données de télémétrie de test ne se mélangent pas aux données client. Optional. La valeur par défaut est non.
MaxFileProtectionLevel String Permet à l’application de spécifier le maximum NSFileProtectionType qu’elle peut prendre en charge. Cette valeur remplace la stratégie envoyée par le service si le niveau est supérieur à ce que l’application peut prendre en charge. Valeurs possibles : NSFileProtectionComplete, NSFileProtectionCompleteUnlessOpen, NSFileProtectionCompleteUntilFirstUserAuthentication, NSFileProtectionNone. Remarque : avec le niveau de protection de fichier le plus élevé (NSFileProtectionComplete), les fichiers protégés ne sont accessibles que lorsque l’appareil est déverrouillé. 10 secondes après le verrouillage de l’appareil, l’application perd l’accès aux fichiers protégés. Dans certains cas, cela peut entraîner une perte d’accès aux composants internes (tels que les bases de données MySQL), ce qui peut entraîner un comportement inattendu. Il est recommandé que les applications qui présentent des éléments d’interface utilisateur d’écran de verrouillage définissent cette valeur sur NSFileProtectionCompleteUntilFirstUserAuthentication. Optional. La valeur par défaut est NSFileProtectionComplete.
OpenInActionExtension Boolean Définissez sur OUI pour les extensions Ouvrir en action. Pour plus d’informations, consultez la section Partage de données via UIActivityViewController .
WebViewHandledURLSchemes Tableau de chaînes Spécifie les schémas d’URL gérés par le WebView de votre application. Obligatoire si votre application utilise un WebView qui gère les URL via des liens et/ou JavaScript.
DocumentBrowserFileCachePath String Si votre application utilise pour parcourir les UIDocumentBrowserViewController fichiers de différents fournisseurs de fichiers, vous pouvez définir ce chemin d’accès par rapport au répertoire de base dans le bac à sable de l’application afin que le SDK Intune puisse supprimer les fichiers managés déchiffrés dans ce dossier. Optional. La valeur par défaut est le /Documents/ répertoire .
VerboseLoggingEnabled Boolean Si la valeur est OUI, Intune se connecte en mode détaillé. Optional. La valeur par défaut est NO
FinishLaunchingAtStartup Boolean Si l’application utilise [BGTaskScheduler registerForTaskWithIdentifier:] , ce paramètre doit être défini sur OUI. Optional. La valeur par défaut est NO
ValuesToScrubFromLogging Tableau de chaînes Spécifie les valeurs de configuration de l’application qui doivent être nettoyées à partir des journaux. Vous pouvez également attribuer à la propriété valuesToScrubFromLogging de la classe IntuneMAMSettings un tableau de chaînes pour le même comportement. Optional.

Recevoir la stratégie de protection des applications

Vue d’ensemble

Pour recevoir Intune stratégie de protection des applications, les applications doivent lancer une demande d’inscription auprès du service GAM Intune. Les applications peuvent être configurées dans le centre d’administration Intune pour recevoir la stratégie de protection des applications avec ou sans inscription d’appareil. La gestion des applications mobiles (MAM) permet aux applications d’être gérées par Intune sans que l’appareil ait besoin d’être inscrit dans Intune gestion des appareils mobiles (GPM). Dans les deux cas, l’inscription auprès du service GAM Intune est nécessaire pour recevoir la stratégie.

Importante

Le SDK d’application Intune pour iOS utilise des clés de chiffrement 256 bits lorsque le chiffrement est activé par les stratégies de protection des applications. Toutes les applications devront disposer d’une version actuelle du Kit de développement logiciel (SDK) pour autoriser le partage de données protégées.

Applications qui utilisent déjà ADAL ou MSAL

Remarque

Azure AD Authentication Library (ADAL) et azure AD API Graph seront déconseillés. Pour plus d’informations, consultez Mettre à jour vos applications afin d’utiliser la bibliothèque d’authentification Microsoft (MSAL) et l’API Microsoft Graph.

Les applications qui utilisent déjà MSAL doivent appeler la registerAndEnrollAccountId méthode sur le IntuneMAMEnrollmentManager instance une fois que l’utilisateur a été correctement authentifié :

/*
 *  This method will add the account to the list of registered accounts.
 *  An enrollment request will immediately be started.
 *  @param accountId The Entra object ID of the account to be registered with the SDK
 */

(void)registerAndEnrollAccountId:(NSString *_Nonnull)accountId;

En cas de connexion réussie, MSAL renvoie le résultat dans l’objet MSALResult. Utilisez tenantProfile.identifier dans MSALResult comme paramètre accountId pour l’API ci-dessus.

En appelant la registerAndEnrollAccountId méthode , le SDK inscrit le compte d’utilisateur et tente d’inscrire l’application pour le compte de ce compte. Si l’inscription échoue pour une raison quelconque, le Kit de développement logiciel (SDK) retentera automatiquement l’inscription 24 heures plus tard. À des fins de débogage, l’application peut recevoir des notifications, via un délégué, sur les résultats des demandes d’inscription.

Une fois cette API appelée, l’application peut continuer à fonctionner normalement. Si l’inscription réussit, le Kit de développement logiciel (SDK) informe l’utilisateur qu’un redémarrage de l’application est nécessaire. À ce moment-là, l’utilisateur peut redémarrer immédiatement l’application.

[[IntuneMAMEnrollmentManager instance] registerAndEnrollAccountId:@"3ec2c00f-b125-4519-acf0-302ac3761822"];

Applications qui n’utilisent pas ADAL ou MSAL

Les applications qui ne connectent pas l’utilisateur à l’aide d’ADAL ou MSAL peuvent toujours recevoir la stratégie de protection des applications du service GAM Intune en appelant l’API pour que le SDK gère cette authentification. Les applications doivent utiliser cette technique lorsqu’elles n’ont pas authentifié un utilisateur avec Microsoft Entra ID, mais qu’elles doivent quand même récupérer la stratégie de protection des applications pour protéger les données. Par exemple, si un autre service d’authentification est utilisé pour la connexion à l’application, ou si l’application ne prend pas du tout en charge la connexion. Pour ce faire, l’application peut appeler la loginAndEnrollAccount méthode sur le IntuneMAMEnrollmentManager instance :

/**
 *  Creates an enrollment request which is started immediately.
 *  If no token can be retrieved for the identity, the user will be prompted
 *  to enter their credentials, after which enrollment will be retried.
 *  @param identity The UPN of the account to be logged in and enrolled.
 */
 (void)loginAndEnrollAccount: (NSString *)identity;

En appelant cette méthode, le Kit de développement logiciel (SDK) invite l’utilisateur à fournir des informations d’identification si aucun jeton existant n’est trouvé. Le Kit de développement logiciel (SDK) tente ensuite d’inscrire l’application auprès du service GAM Intune pour le compte d’utilisateur fourni. La méthode peut être appelée avec « nil » comme identité. Dans ce cas, le Kit de développement logiciel (SDK) s’inscrit auprès de l’utilisateur managé existant sur l’appareil (dans le cas de la gestion des appareils mobiles) ou invite l’utilisateur à entrer un nom d’utilisateur si aucun utilisateur existant n’est trouvé.

Si l’inscription échoue, l’application doit envisager d’appeler à nouveau cette API à un moment ultérieur, en fonction des détails de l’échec. L’application peut recevoir des notifications, via un délégué, sur les résultats de toutes les demandes d’inscription.

Une fois cette API appelée, l’application peut continuer à fonctionner normalement. Si l’inscription réussit, le Kit de développement logiciel (SDK) informe l’utilisateur qu’un redémarrage de l’application est nécessaire. Une fois l’application gérée, la valeur de l’ID d’objet Entra doit être interrogée à l’aide enrolledAccountId de dans .IntuneMAMEnrollmentManager Utilisez-la pour toutes les API du KIT de développement logiciel (SDK) GAM que l’application utilise pour ce compte inscrit.

Exemple :

[[IntuneMAMEnrollmentManager instance] loginAndEnrollAccount:@"user@foo.com"];

Laisser Intune gérer l’authentification et l’inscription au lancement

Si vous souhaitez que le SDK Intune gère toute l’authentification avec ADAL/MSAL et l’inscription avant la fin du lancement de votre application, et que votre application nécessite toujours une stratégie d’application, vous n’avez pas besoin d’utiliser loginAndEnrollAccount l’API. Vous pouvez simplement définir les deux paramètres ci-dessous sur OUI dans le dictionnaire IntuneMAMSettings dans info.plist de l’application.

Setting Type Définition
AutoEnrollOnLaunch Boolean Spécifie si l’application doit tenter de s’inscrire automatiquement au lancement si une identité managée existante est détectée et qu’elle ne l’a pas encore fait. La valeur par défaut est NO.

Remarque : Si aucune identité managée n’est trouvée ou qu’aucun jeton valide pour l’identité n’est disponible dans le cache ADAL/MSAL, la tentative d’inscription échoue en mode silencieux sans demander d’informations d’identification, sauf si l’application a également défini MAMPolicyRequired sur OUI.
MAMPolicyRequired Boolean Spécifie si le démarrage de l’application n’est pas bloqué si l’application n’a pas de stratégie de protection des applications Intune. La valeur par défaut est NO.

Remarque : Les applications ne peuvent pas être envoyées au App Store avec MAMPolicyRequired défini sur OUI. Lorsque vous définissez MAMPolicyRequired sur OUI, AutoEnrollOnLaunch doit également être défini sur OUI.

Si vous choisissez cette option pour votre application, vous n’avez pas à gérer le redémarrage de votre application après l’inscription.

Désinscrire les comptes d’utilisateur

Avant qu’un utilisateur ne soit déconnecté d’une application, l’application doit annuler l’inscription de l’utilisateur à partir du KIT de développement logiciel (SDK). Cela garantit les points suivants :

  1. Les nouvelles tentatives d’inscription ne se produisent plus pour le compte de l’utilisateur.

  2. Protection d'applications stratégie sera supprimée.

  3. Toutes les données d’entreprise sont supprimées si l’application lance une réinitialisation sélective (facultatif).

Avant que l’utilisateur ne soit déconnecté, l’application doit appeler la méthode suivante sur le IntuneMAMEnrollmentManager instance :

/*
 *  This method will remove the provided account from the list of
 *  registered accounts.  Once removed, if the account has enrolled
 *  the application, the account will be un-enrolled.
 *  @note In the case where an un-enroll is required, this method will block
 *  until the Intune APP AAD token is acquired, then return.  This method must be called before  
 *  the user is removed from the application (so that required AAD tokens are not purged
 *  before this method is called).
 *  @param accountId The object ID of the account to be removed.
 *  @param doWipe  If YES, a selective wipe if the account is un-enrolled
 */
(void)deRegisterAndUnenrollAccountId:(NSString *)accountId withWipe:(BOOL)doWipe;

Cette méthode doit être appelée avant que les jetons Microsoft Entra du compte d’utilisateur soient supprimés. Le Kit de développement logiciel (SDK) a besoin du ou des jetons Microsoft Entra du compte d’utilisateur pour effectuer des requêtes spécifiques au service GAM Intune pour le compte de l’utilisateur.

Si l’application supprime les données d’entreprise de l’utilisateur seule, l’indicateur doWipe peut être défini sur false. Dans le cas contraire, le SDK peut lancer une réinitialisation sélective de l’application. Cela entraîne un appel au délégué de réinitialisation sélective de l’application.

Exemple :

[[IntuneMAMEnrollmentManager instance] deRegisterAndUnenrollAccountId:@"3ec2c00f-b125-4519-acf0-302ac3761822" withWipe:YES];

Notifications d’état, de résultat et de débogage

L’application peut recevoir des notifications de status, de résultat et de débogage concernant les requêtes suivantes adressées au service GAM Intune :

  • Demandes d’inscription
  • Demandes de mise à jour de stratégie
  • Demandes de désinscription

Les notifications sont présentées via des méthodes déléguées dans IntuneMAMEnrollmentDelegate.h:

/**
 *  Called when an enrollment request operation is completed.
 * @param status status object containing debug information
 */

(void)enrollmentRequestWithStatus:(IntuneMAMEnrollmentStatus *)status;

/**
 *  Called when a MAM policy request operation is completed.
 *  @param status status object containing debug information
 */
(void)policyRequestWithStatus:(IntuneMAMEnrollmentStatus *)status;

/**
 *  Called when a un-enroll request operation is completed.
 *  @Note: when a user is un-enrolled, the user is also de-registered with the SDK
 *  @param status status object containing debug information
 */

(void)unenrollRequestWithStatus:(IntuneMAMEnrollmentStatus *)status;

Ces méthodes déléguées retournent un IntuneMAMEnrollmentStatus objet qui contient les informations suivantes :

  • AccountId (ID d’objet) du compte associé à la demande
  • L’identité (UPN) du compte associé à la demande
  • Code status qui indique le résultat de la requête
  • Chaîne d’erreur avec une description du code status
  • Objet NSError . Cet objet est défini dans IntuneMAMEnrollmentStatus.h, ainsi que les codes status spécifiques qui peuvent être retournés.

Exemple de code

Voici des exemples d’implémentation des méthodes déléguées :

- (void)enrollmentRequestWithStatus:(IntuneMAMEnrollmentStatus*)status
{
    NSLog(@"enrollment result for identity %@ with status code %ld", status.accountId, (unsigned long)status.statusCode);
    NSLog(@"Debug Message: %@", status.errorString);
}

- (void)policyRequestWithStatus:(IntuneMAMEnrollmentStatus*)status
{
    NSLog(@"policy check-in result for identity %@ with status code %ld", status.accountId, (unsigned long)status.statusCode);
    NSLog(@"Debug Message: %@", status.errorString);
}

- (void)unenrollRequestWithStatus:(IntuneMAMEnrollmentStatus*)status
{
    NSLog(@"un-enroll result for identity %@ with status code %ld", status.accountId, (unsigned long)status.statusCode);
    NSLog(@"Debug Message: %@", status.errorString);
}

Redémarrage de l’application

Lorsqu’une application reçoit des stratégies GAM pour la première fois, elle doit redémarrer pour appliquer les hooks requis. Pour informer l’application qu’un redémarrage doit se produire, le SDK fournit une méthode déléguée dans IntuneMAMPolicyDelegate.h.

 - (BOOL) restartApplication

La valeur de retour de cette méthode indique au SDK si l’application doit gérer le redémarrage requis :

  • Si true est retourné, l’application doit gérer le redémarrage.

  • Si false est retourné, le KIT de développement logiciel (SDK) redémarre l’application après le retour de cette méthode. Le Kit de développement logiciel (SDK) affiche immédiatement une boîte de dialogue qui indique à l’utilisateur de redémarrer l’application.

Remarque

Les applications .NET MAUI ne nécessitent pas de redémarrage.

Critères de sortie

Une fois que vous avez configuré le plug-in de build ou intégré l’outil en ligne de commande dans votre processus de génération, vérifiez qu’il s’exécute correctement :

  • Assurez-vous que votre build est compilée et générée correctement.
  • Lancez votre application compilée, connectez-vous avec un utilisateur Microsoft Entra qui n’est pas ciblé par la stratégie de protection des applications et vérifiez que l’application fonctionne comme prévu.
  • Déconnectez-vous et répétez ce test avec un utilisateur Microsoft Entra ciblé par la stratégie de protection des applications et vérifiez que l’application est désormais gérée par Intune et redémarrée.

À ce stade de l’intégration, votre application peut désormais recevoir et appliquer la stratégie de protection des applications. Exécutez les tests suivants pour valider l’intégration.

Premier test d’application de stratégie

Exécutez d’abord le test suivant pour vous familiariser avec l’expérience utilisateur final complète de l’application de stratégie au sein de votre application :

  1. Créez une stratégie de protection des applications iOS dans le centre d’administration Microsoft Intune. Pour ce test, configurez la stratégie :
    • Sous Exigences d’accès, conservez les paramètres par défaut. En particulier, « CODE CONFIDENTIEL pour Access » doit être « Exiger ».
  2. Vérifiez que la stratégie de protection des applications est ciblée sur votre application. Vous devrez peut-être ajouter manuellement l’ID de bundle de l’application dans l’Assistant création de stratégie.
  3. Affectez la stratégie de protection des applications à un groupe d’utilisateurs contenant votre compte de test.
  4. Installez votre application.
  5. Connectez-vous à votre application avec votre compte de test ciblé avec la stratégie de protection des applications.
  6. Vérifiez que vous êtes invité à entrer un Intune écran géré et que l’invite redémarre l’application. Cet écran indique que le Kit de développement logiciel (SDK) récupère correctement la stratégie pour ce compte.
  7. Créez un code confidentiel lorsque vous êtes invité à définir un code confidentiel d’application.
  8. Déconnectez le compte managé de votre application.
  9. Parcourez votre application et vérifiez que votre application fonctionne comme prévu si possible sans vous connecter.

Cette liste d’étapes est un test *strict minimum pour vérifier que votre application inscrit correctement le compte, inscrit le rappel d’authentification et annule l’inscription du compte. Exécutez les tests suivants pour valider de manière plus approfondie la façon dont les autres paramètres de stratégie de protection des applications modifient le comportement de votre application.

Étapes suivantes

Une fois que vous avez terminé tous les critères de sortie, passez à l’Étape 4 : Fonctionnalités de participation aux applications.