Compartir a través de


Fase 3: integración del SDK de Intune en la aplicación de iOS

Nota:

Esta guía se divide en varias fases distintas. Para empezar, revise Planear la integración.

Goals de fase

  • Descargue el SDK de Intune App.
  • Obtenga información sobre los archivos que se incluyen en el SDK de la aplicación de Intune.
  • Haga referencia al SDK de Intune App en la aplicación.
  • Confirme que el SDK de la aplicación de Intune está correctamente incluido en la compilación.
  • Registre nuevas cuentas para la administración de MAM después de autenticarse con MSAL.
  • Para quitar datos corporativos, anule el registro de cuentas al cerrar la sesión.
  • (Recomendado) Incorporación del inicio de sesión de MAM en la aplicación.

Requisitos previos

  • Necesita un equipo macOS, que tenga instalado Xcode 14.0 o posterior.

  • La aplicación debe tener como destino iOS 14.0 o posterior.

  • Revise los términos de licencia de Intune App SDK para iOS. Imprima y conserve una copia de los términos de licencia de los registros. Al descargar y usar el SDK de Intune App para iOS, acepta dichos términos de licencia. Si no los acepta, no use el software.

  • Descargue los archivos del SDK de Intune App para iOS en GitHub.

Qué hay en el repositorio del SDK

  • IntuneMAMSwift.xcframework: el marco dinámico del SDK de aplicaciones de Intune. Se recomienda vincular este marco a la aplicación o extensiones para habilitar Intune administración de aplicaciones cliente. Sin embargo, es posible que algunos desarrolladores prefieran las ventajas de rendimiento del marco estático (IntuneMAMStatic.xcframework). Véalo a continuación.

  • IntuneMAMStatic.xcframework: el marco estático del SDK de aplicaciones de Intune. Los desarrolladores pueden optar por vincular el marco estático en lugar del marco dinámico. Dado que el código ejecutable de un marco estático se inserta directamente en el binario de aplicación o extensión en tiempo de compilación, hay algunas ventajas de rendimiento en tiempo de inicio para usar la biblioteca estática. Sin embargo, si la aplicación incluye extensiones, vincular el marco estático a la aplicación y las extensiones da como resultado un tamaño de agrupación de aplicaciones mayor, ya que el código ejecutable se inserta en cada binario de aplicación o extensión. Por el contrario, al usar el marco dinámico, las aplicaciones y extensiones pueden compartir el mismo Intune binario del SDK, lo que da como resultado un tamaño de aplicación más pequeño.

  • IntuneMAMSwiftStub.xcframework: el marco de código auxiliar swift del SDK de Intune aplicación. Este marco es una dependencia necesaria de IntuneMAMSwift.xcframework e IntuneMAMStatic.xcframework que las aplicaciones o extensiones deben vincular.

  • IntuneMAMConfigurator: herramienta que se usa para configurar info.plist de la aplicación o extensión con los cambios mínimos necesarios para la administración de Intune. En función de la funcionalidad de la aplicación o la extensión, es posible que deba realizar más cambios manuales en Info.plist.

  • libIntuneMAMSwift.xcframework: biblioteca estática Intune App SDK. Esta variante de Intune SDK de MAM para iOS está en desuso y se quitará en una actualización futura. Se recomienda no vincular la biblioteca estática y, en su lugar, vincular la aplicación o las extensiones al marco dinámico (IntuneMAMSwift.xcframework) o al marco estático (IntuneMAMStatic.xcframework) mencionado anteriormente.

  • IntuneMAMResources.bundle: agrupación de recursos que contiene recursos en los que se basa el SDK. El paquete de recursos solo es necesario para las aplicaciones que integran la biblioteca estática en desuso (libIntuneMAMSwift.xcframework) y se quitará en una actualización futura.

Funcionamiento del SDK de Intune App

El objetivo del SDK de Intune App para iOS es agregar funcionalidades de administración a las aplicaciones de iOS con cambios mínimos en el código. Cuanto menos cambie el código, menos tiempo de comercialización, pero sin afectar a la coherencia y estabilidad de la aplicación móvil.

Flujo de proceso

En el diagrama siguiente se proporciona el flujo de procesos Intune App SDK para iOS:

Diagrama arquitectónico de alto nivel para Microsoft Intune.

Compilación del SDK en la aplicación móvil

Importante

Intune publica periódicamente las actualizaciones del SDK de Intune App. Compruebe periódicamente el SDK de aplicaciones de Intune para iOS para ver si hay actualizaciones e incorpore en el ciclo de lanzamiento de desarrollo de software para asegurarse de que las aplicaciones admiten la configuración de directiva de protección de aplicaciones más reciente.

Para habilitar el SDK de Intune App, siga estos pasos:

  1. Vincular o IntuneMAMSwift.xcframeworkIntuneMAMStatic.xcframework al destino: arrastre la agrupación xcframework a la lista Marcos, Bibliotecas y Contenido incrustado del destino del proyecto. Repita estos pasos para IntuneMAMSwiftStub.xcframework. En la aplicación principal, seleccione "Insertar & inicio de sesión" en la columna "Insertar" para ambas xcframeworks agregadas. En el caso de las extensiones, seleccione "No insertar".

    Intune App SDK para iOS Framework: Xcode Frameworks, Libraries y Embedded Content sample

  2. Agregue estos marcos de iOS al proyecto:

    • 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. Habilite el uso compartido de cadenas de claves (si aún no está habilitado) eligiendo Funcionalidades en cada destino de proyecto y habilitando el modificador Uso compartido de llaves . El uso compartido de llaves es necesario para que continúe con el paso siguiente.

    Nota:

    El perfil de aprovisionamiento debe admitir nuevos valores de uso compartido de cadenas de claves. Los grupos de acceso de cadena de claves deben admitir un carácter comodín. Para comprobarlo, abra el archivo .mobileprovision en un editor de texto, busque la cadena de claves-access-groups y asegúrese de que tiene un carácter comodín. Por ejemplo:

    <key>keychain-access-groups</key>
    <array>
    <string>YOURBUNDLESEEDID.*</string>
    </array>
    
  4. Después de habilitar el uso compartido de cadenas de claves, siga los pasos para crear un grupo de acceso independiente en el que el SDK de Intune App almacenará sus datos. Puede crear un grupo de acceso de cadena de claves mediante la interfaz de usuario o mediante el archivo de derechos. Si usa la interfaz de usuario para crear el grupo de acceso a la cadena de claves, asegúrese de seguir estos pasos:

    1. Si la aplicación móvil no tiene ningún grupo de acceso de cadena de claves definido, agregue el identificador de agrupación de la aplicación como primer grupo.

    2. Agregue el grupo com.microsoft.intune.mam de cadenas de claves compartidas a los grupos de acceso existentes. El SDK de Intune App usa este grupo de acceso para almacenar datos.

    3. Agregue com.microsoft.adalcache a los grupos de acceso existentes.

      Intune App SDK para iOS: uso compartido de cadenas de claves

    4. Si va a editar el archivo de derechos directamente, en lugar de usar la interfaz de usuario de Xcode mostrada anteriormente para crear los grupos de acceso de cadena de claves, anteponga los grupos de acceso de cadena de claves con $(AppIdentifierPrefix) (Xcode controla esto automáticamente). Por ejemplo:

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

      Nota:

      Un archivo de derechos es un archivo XML que es único para la aplicación móvil. Se usa para especificar permisos y funcionalidades especiales en la aplicación de iOS. Si la aplicación no tenía previamente un archivo de derechos, la habilitación del uso compartido de cadenas de claves (paso 3) debería haber provocado que Xcode generara uno para la aplicación. Asegúrese de que el identificador de agrupación de la aplicación es la primera entrada de la lista.

  5. Incluya cada protocolo al UIApplication canOpenURL que pasa la aplicación en la LSApplicationQueriesSchemes matriz del archivo Info.plist de la aplicación. Para cada protocolo enumerado en esta matriz, también debe agregarse una copia del protocolo anexado -intunemam a la matriz. Además, http-intunemam, https-intunemam, , microsoft-edge-http-intunemam, microsoft-edge-https-intunemam, smart-ns, zips, lacoonsecurity, wandera, , lookoutwork-ase, skycure, betteractiveshield, , smsec, mvisionmobile, scmxy intunemam-mtd se deben agregar a la matriz. Si la aplicación usa el protocolo mailto: , ms-outlook-intunemam también debe agregarse a la matriz. Asegúrese de guardar los cambios antes de continuar con el paso siguiente.

    Si la aplicación se queda sin espacio en su lista LSApplicationQueriesSchemes, puede quitar los esquemas "-intunemam" para las aplicaciones que también se sabe que implementan Intune SDK de MAM. Cuando la aplicación quita "scheme-intunemam" de la lista LSApplicationQueriesSchemes, canOpenURL() puede devolver respuestas incorrectas para esos esquemas. Para solucionar este problema, la aplicación debe llamar en su lugar a [IntuneMAMPolicy isURLAllowed:url isKnownManagedAppScheme:YES] ese esquema. Esta llamada devuelve NO si la directiva impide que se abra la dirección URL. Si devuelve true, la aplicación puede llamar a canOpenURL() con una identidad vacía para determinar si se puede abrir la dirección URL. Por ejemplo:

    BOOL __block canOpen = NO;
    if([policy isURLAllowed:urlForKnownManagedApp isKnownManagedAppScheme:YES])
    {
        [[IntuneMAMPolicyManager instance] setCurrentThreadAccountId:"" forScope:^{
        canOpen = [[UIApplication sharedApplication] canOpenURL:urlForKnownManagedApp];
        }];
    }
    
  6. Si la aplicación ya no usa FaceID, asegúrese de que la clave Info.plist de NSFaceIDUsageDescription esté configurada con un mensaje predeterminado. Este paso es necesario para que iOS pueda informar al usuario de cómo piensa usar FaceID la aplicación. Una configuración de directiva de protección de aplicaciones Intune permite que FaceID se use como método para el acceso a la aplicación cuando lo configura el administrador de TI.

  7. Use la herramienta IntuneMAMConfigurator que se incluye en el repositorio del SDK para finalizar la configuración de Info.plist de la aplicación. La herramienta tiene tres parámetros:

    Propiedad Cómo utilizarlo
    -Yo <Path to the input plist>
    - e <Path to the entitlements file>
    - o (Opcional) <Path to the output plist>

    Si no se especifica el parámetro '-o', el archivo de entrada se modificará en contexto. La herramienta es idempotente y debe volver a ejecutarse cada vez que se hayan realizado cambios en info.plist o derechos de la aplicación. También debe descargar y ejecutar la versión más reciente de la herramienta al actualizar el SDK de Intune, en caso de que los requisitos de configuración de Info.plist hayan cambiado en la versión más reciente.

Configuración de compilación de Xcode

La aplicación debe tener "Strip Swift Symbols" (STRIP_SWIFT_SYMBOLS) y "Enable Bitcode" (ENABLE_BITCODE) establecido en NO.

Integración de una extensión de proveedor de archivos

Las extensiones del proveedor de archivos tienen ciertos requisitos de memoria que podrían dificultar la integración del SDK completo. Para que sea más fácil, hay una biblioteca libIntuneMAMSwiftFileProvider.xcframework estática que es una versión eliminada del SDK específicamente para las extensiones del proveedor de archivos. Tenga en cuenta que esto es para la parte que no es de la interfaz de usuario de la extensión FileProvider. Tendrá que integrar el SDK completo en la extensión de interfaz de usuario del proveedor de archivos.

Para integrar una de estas bibliotecas con la extensión proveedor de archivos, siga los pasos para integrar el SDK como una biblioteca estática, como se muestra anteriormente. Asegúrese de incluir ContainingAppBundleId la configuración.

Integración de una extensión del proveedor de archivos no replicado

La aplicación usa un proveedor de archivos no replicado si implementa el protocolo NSFileProviderExtension. Todos los proveedores de archivos creados antes de iOS 16.0 no se replican.

En - startProvidingItemAtURL:completionHandler: compruebe si debe cifrar archivos mediante [[Instancia de IntuneMAMPolicy]shouldFileProviderEncryptFiles]]. Use encryptFile:forAccountId: API en IntuneMAMFileProtectionManager para el cifrado de archivos real. Además, comparta una copia del archivo cuando se requiera el cifrado, ya que no desea almacenar una copia cifrada del archivo en el almacenamiento en la nube.

En - importDocumentAtURL:toParentItemIdentifier:completionHandler: compruebe si el archivo está cifrado mediante isFileEncrytped: API en IntuneMAMFileProtectionManager. Si, a continuación, lo descifra mediante decryptFile:toCopyPath: API de IntuneMAMFileProtectionManager. En las aplicaciones de varias identidades, compruebe también la API canReceiveSharedFile: en IntuneMAMPolicy del propietario de destino para ver si el propietario puede recibir el archivo.

Integración de una extensión del proveedor de archivos replicados

La aplicación usa un proveedor de archivos replicados si implementa el protocolo NSFileProviderReplicatedExtension (agregado en iOS 16.0).

En - fetchContentsForItemWithIdentifier:version:request:completionHandler: compruebe si debe cifrar los archivos mediante [[Instancia de IntuneMAMPolicy]shouldFileProviderEncryptFiles]]. Use encryptFile:forAccountId: API en IntuneMAMFileProtectionManager para el cifrado de archivos real. Además, comparta una copia del archivo cuando se requiera el cifrado, ya que no desea almacenar una copia cifrada del archivo en el almacenamiento en la nube.

En - createItemBasedOnTemplate:fields:contents:options:request:completionHandler: compruebe si el archivo está cifrado mediante isFileEncrypted: API en IntuneMAMFileProtectionManager. Si, a continuación, lo descifra mediante decryptFile:toCopyPath: API de IntuneMAMFileProtectionManager. En las aplicaciones de varias identidades, compruebe también la API canReceiveSharedFile: en IntuneMAMPolicy del propietario de destino para ver si el propietario puede recibir el archivo.

En cualquier lugar donde el proveedor de archivos replicado cree y pase un NSFileProviderItem al sistema, llame a la API protectFileProviderItem:forAccountId: de IntuneMAMFileProtectionManager con la identidad del propietario del elemento. En función de dónde se cree y persista el objeto NSFileProviderItem dentro de la extensión, es posible que tenga que hacerlo en cada uno de los métodos de protocolo de NSFileProviderReplicatedExtension.

Configuración de la configuración del SDK de Intune App

Puede usar el diccionario IntuneMAMSettings en el archivo Info.plist de la aplicación para configurar y configurar el SDK de Intune App. Si el diccionario IntuneMAMSettings no se ve en el archivo Info.plist, debe crearlo.

En el diccionario IntuneMAMSettings, puede definir las siguientes opciones admitidas para configurar el SDK de aplicación de Intune.

Es posible que algunas de estas configuraciones se hayan tratado en secciones anteriores y otras no se apliquen a todas las aplicaciones.

Configuración Tipo Definición ¿Necesario?
ADALClientId Cadena Identificador de cliente Microsoft Entra de la aplicación. Necesario para todas las aplicaciones.
ADALAuthority Cadena La entidad de Microsoft Entra de la aplicación en uso. Debe usar su propio entorno donde se hayan configurado Microsoft Entra cuentas. Para obtener más información, consulte Opciones de configuración de la aplicación. Obligatorio si la aplicación es una aplicación de línea de negocio personalizada creada para su uso dentro de una sola organización o Microsoft Entra inquilino. Si este valor no está presente, se usa la entidad de Microsoft Entra común (que solo se admite para aplicaciones multiinquilino).
ADALRedirectUri Cadena El URI de redireccionamiento Microsoft Entra de la aplicación. ADALRedirectUri o ADALRedirectScheme son necesarios para todas las aplicaciones.
ADALRedirectScheme Cadena Esquema de redireccionamiento de Microsoft Entra ID de la aplicación. Esto se puede usar en lugar de ADALRedirectUri si el URI de redireccionamiento de la aplicación tiene el formato scheme://bundle_id. ADALRedirectUri o ADALRedirectScheme son necesarios para todas las aplicaciones.
ADALLogOverrideDisabled Booleano Especifica si el SDK enrutará todos los registros de MSAL (incluidas las llamadas de MSAL desde la aplicación, si existe) a su propio archivo de registro. El valor predeterminado es NO. Establezca en SÍ si la aplicación establecerá su propia devolución de llamada de registro de MSAL. Opcional.
ADALCacheKeychainGroupOverride Cadena Especifica el grupo de cadenas de claves que se va a usar para la caché de MSAL, en lugar de "com.microsoft.adalcache". Tenga en cuenta que esto no tiene el prefijo app-id. Se agregará como prefijo a la cadena proporcionada en tiempo de ejecución. Opcional.
AppGroupIdentifiers Matriz de cadenas Matriz de grupos de aplicaciones de la sección entitlements com.apple.security.application-groups de la aplicación. Obligatorio si la aplicación usa grupos de aplicaciones.
ContainingAppBundleId Cadena Especifica el identificador de agrupación de la aplicación contenedora de la extensión. Necesario para las extensiones de iOS.
AutoEnrollOnLaunch Booleano Especifica si la aplicación debe intentar inscribirse automáticamente al iniciarse si se detecta una identidad administrada existente y aún no lo ha hecho. El valor predeterminado es NO.

Notas: Si no se encuentra ninguna identidad administrada o no hay ningún token válido para la identidad disponible en la memoria caché de MSAL, el intento de inscripción producirá un error silenciosamente sin solicitar credenciales, a menos que la aplicación también haya establecido MAMPolicyRequired en SÍ.
Opcional. El valor predeterminado es no.
MAMPolicyRequired Booleano Especifica si se bloqueará el inicio de la aplicación si la aplicación no tiene una directiva de protección de aplicaciones Intune. El valor predeterminado es NO.

Notas: Las aplicaciones no se pueden enviar al App Store con MAMPolicyRequired establecido en SÍ. Al establecer MAMPolicyRequired en SÍ, AutoEnrollOnLaunch también debe establecerse en SÍ.
Opcional. El valor predeterminado es no.
MAMPolicyWarnAbsent Booleano Especifica si la aplicación advertirá al usuario durante el inicio si la aplicación no tiene una directiva de protección de aplicaciones Intune.

Nota: Los usuarios seguirán teniendo permiso para usar la aplicación sin directiva después de descartar la advertencia.
Opcional. El valor predeterminado es no.
MultiIdentity Booleano Especifica si la aplicación es compatible con varias identidades. Opcional. El valor predeterminado es no.
SafariViewControllerBlockedOverride Booleano Deshabilita los enlaces SafariViewController de Intune para habilitar la autenticación de MSAL a través de SFSafariViewController, SFAuthSession o ASWebAuthSession.

Nota: La propiedad de botón de actividad SFSafariViewControllerConfiguration no es compatible con el controlador de vista safari administrado de Intune. Un botón de actividad configurado solo aparecerá en SafariViewController si la vista no está administrada y SafariViewControllerBlockedOverride está establecido en sí.
Opcional. El valor predeterminado es no. ADVERTENCIA: puede provocar pérdida de datos si se usa de forma incorrecta. Habilite solo si es absolutamente necesario. Para obtener más información, consulte Consideraciones especiales al usar MSAL para la autenticación iniciada por la aplicación.
SplashIconFile
SplashIconFile~ipad
Cadena Especifica el archivo de icono de presentación (inicio) de Intune. Opcional.
SplashDuration Número Cantidad mínima de tiempo, en segundos, que se mostrará la pantalla de inicio de Intune al iniciar la aplicación. El valor predeterminado es 1.5. Opcional.
BackgroundColor Cadena Especifica el color de fondo de los componentes de interfaz de usuario del SDK de Intune. Acepta una cadena RGB hexadecimal en forma de #XXXXXX, donde X puede oscilar entre 0-9 o A-F. Es posible que se omita el signo de libra. Opcional. El valor predeterminado es el color de fondo del sistema, que puede variar entre las versiones de iOS y según la configuración del modo oscuro de iOS.
ForegroundColor Cadena Especifica el color de primer plano de los componentes de interfaz de usuario del SDK de Intune, como el color de texto. Acepta una cadena RGB hexadecimal en forma de #XXXXXX, donde X puede oscilar entre 0-9 o A-F. Es posible que se omita el signo de libra. Opcional. El valor predeterminado es el color de la etiqueta del sistema, que puede variar entre las versiones de iOS y según la configuración del modo oscuro de iOS.
AccentColor Cadena Especifica el color de énfasis de los componentes de interfaz de usuario del SDK de Intune, como el color de texto del botón y el color de resaltado del cuadro pin. Acepta una cadena RGB hexadecimal en forma de #XXXXXX, donde X puede oscilar entre 0-9 o A-F. Es posible que se omita el signo de libra. Opcional. El valor predeterminado es azul del sistema.
SecondaryBackgroundColor Cadena Especifica el color de fondo secundario para las pantallas MTD. Acepta una cadena RGB hexadecimal en forma de #XXXXXX, donde X puede oscilar entre 0-9 o A-F. Es posible que se omita el signo de libra. Opcional. El valor predeterminado es blanco.
SecondaryForegroundColor Cadena Especifica el color de primer plano secundario para las pantallas MTD, como el color de nota al pie. Acepta una cadena RGB hexadecimal en forma de #XXXXXX, donde X puede oscilar entre 0-9 o A-F. Es posible que se omita el signo de libra. Opcional. El valor predeterminado es gris.
SupportsDarkMode Booleano Especifica si la combinación de colores de la interfaz de usuario del SDK de Intune debe observar la configuración del modo oscuro del sistema, si no se ha establecido ningún valor explícito para BackgroundColor/ForegroundColor/AccentColor Opcional. El valor predeterminado es sí.
MAMTelemetryDisabled Booleano Especifica si el SDK no enviará datos de telemetría a su back-end. Opcional. El valor predeterminado es no.
MAMTelemetryUsePPE Booleano Especifica si el SDK de MAM enviará datos al back-end de telemetría de PPE. Úselo al probar las aplicaciones con Intune directiva para que los datos de telemetría de prueba no se combinen con los datos del cliente. Opcional. El valor predeterminado es no.
MaxFileProtectionLevel Cadena Permite que la aplicación especifique el máximo NSFileProtectionType que puede admitir. Este valor invalidará la directiva enviada por el servicio si el nivel es mayor que el que puede admitir la aplicación. Valores posibles: NSFileProtectionComplete, NSFileProtectionCompleteUnlessOpen, NSFileProtectionCompleteUntilFirstUserAuthentication, NSFileProtectionNone. Aviso: Con el nivel de protección de archivos más alto (NSFileProtectionComplete), solo se puede acceder a los archivos protegidos mientras el dispositivo está desbloqueado. 10 segundos después de bloquear el dispositivo, la aplicación perderá el acceso a los archivos protegidos. En algunos casos, esto puede provocar la pérdida de acceso a componentes internos (como bases de datos MySQL), lo que provoca un comportamiento inesperado. Se recomienda que las aplicaciones que presentan elementos de interfaz de usuario de pantalla de bloqueo establezcan este valor en NSFileProtectionCompleteUntilFirstUserAuthentication. Opcional. Valores predeterminados de NSFileProtectionComplete.
OpenInActionExtension Booleano Establézcalo en SÍ para abrir en extensiones de acción. Para obtener más información, vea la sección Uso compartido de datos a través de UIActivityViewController .
WebViewHandledURLSchemes Matriz de cadenas Especifica los esquemas de dirección URL que controla WebView de la aplicación. Obligatorio si la aplicación usa un WebView que controla las direcciones URL a través de vínculos o JavaScript.
DocumentBrowserFileCachePath Cadena Si la UIDocumentBrowserViewController aplicación usa para examinar archivos de varios proveedores de archivos, puede establecer esta ruta de acceso en relación con el directorio principal del espacio aislado de la aplicación para que el SDK de Intune pueda colocar archivos administrados descifrados en esa carpeta. Opcional. El valor predeterminado es el /Documents/ directorio .
VerboseLoggingEnabled Booleano Si se establece en SÍ, Intune iniciará sesión en modo detallado. Opcional. El valor predeterminado es NO
FinishLaunchingAtStartup Booleano Si la aplicación usa [BGTaskScheduler registerForTaskWithIdentifier:] , esta configuración debe establecerse en SÍ. Opcional. El valor predeterminado es NO
ValuesToScrubFromLogging Matriz de cadenas Especifica los valores de configuración de la aplicación que se deben borrar de los registros. Como alternativa, a la propiedad valuesToScrubFromLogging de la clase IntuneMAMSettings se le puede proporcionar una matriz de cadenas para el mismo comportamiento. Opcional.

Recepción de la directiva de protección de aplicaciones

Información general

Para recibir Intune directiva de protección de aplicaciones, las aplicaciones deben iniciar una solicitud de inscripción con el servicio Intune MAM. Las aplicaciones se pueden configurar en el centro de administración de Intune para recibir la directiva de protección de aplicaciones con o sin inscripción de dispositivos. Administración de aplicaciones móviles (MAM), permite que las aplicaciones se administren mediante Intune sin necesidad de que el dispositivo se inscriba en Intune administración de dispositivos móviles (MDM). En ambos casos, es necesario inscribirse con el servicio Intune MAM para recibir la directiva.

Importante

El SDK de aplicaciones de Intune para iOS usa claves de cifrado de 256 bits cuando las directivas de Protección de aplicaciones habilitan el cifrado. Todas las aplicaciones tendrán que tener una versión actual del SDK para permitir el uso compartido de datos protegidos.

Aplicaciones que ya usan ADAL o MSAL

Nota:

Autenticación de Azure AD Library (ADAL) y Azure AD Graph API quedarán en desuso. Para obtener más información, consulte Actualizar las aplicaciones para que usen la Biblioteca de autenticación de Microsoft (MSAL) y la API de Microsoft Graph.

Las aplicaciones que ya usan MSAL deben llamar al registerAndEnrollAccountId método en la IntuneMAMEnrollmentManager instancia después de que el usuario se haya autenticado correctamente:

/*
 *  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;

Al iniciar sesión correctamente, MSAL devuelve el resultado en el objeto MSALResult. Use tenantProfile.identifier en MSALResult como parámetro accountId para la API anterior.

Al llamar al registerAndEnrollAccountId método , el SDK registrará la cuenta de usuario e intentará inscribir la aplicación en nombre de esta cuenta. Si se produce un error en la inscripción por cualquier motivo, el SDK volverá a intentar la inscripción automáticamente 24 horas más tarde. Con fines de depuración, la aplicación puede recibir notificaciones, a través de un delegado, sobre los resultados de las solicitudes de inscripción.

Una vez invocada esta API, la aplicación puede seguir funcionando con normalidad. Si la inscripción se realiza correctamente, el SDK notificará al usuario que se requiere un reinicio de la aplicación. En ese momento, el usuario puede reiniciar inmediatamente la aplicación.

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

Aplicaciones que no usan ADAL o MSAL

Las aplicaciones que no inician sesión en el usuario mediante ADAL o MSAL pueden seguir recibiendo la directiva de protección de aplicaciones del servicio Intune MAM llamando a la API para que el SDK controle esa autenticación. Las aplicaciones deben usar esta técnica cuando no han autenticado a un usuario con Microsoft Entra ID, pero todavía necesitan recuperar la directiva de protección de aplicaciones para ayudar a proteger los datos. Un ejemplo es si se usa otro servicio de autenticación para el inicio de sesión de la aplicación o si la aplicación no admite el inicio de sesión en absoluto. Para ello, la aplicación puede llamar al loginAndEnrollAccount método en la IntuneMAMEnrollmentManager instancia de :

/**
 *  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;

Al llamar a este método, el SDK solicitará al usuario credenciales si no se encuentra ningún token existente. A continuación, el SDK intentará inscribir la aplicación con el servicio MAM de Intune en nombre de la cuenta de usuario proporcionada. Se puede llamar al método con "nil" como identidad. En ese caso, el SDK se inscribirá con el usuario administrado existente en el dispositivo (en el caso de MDM) o solicitará al usuario un nombre de usuario si no se encuentra ningún usuario existente.

Si se produce un error en la inscripción, la aplicación debería considerar la posibilidad de volver a llamar a esta API en un momento futuro, en función de los detalles del error. La aplicación puede recibir notificaciones, a través de un delegado, sobre los resultados de las solicitudes de inscripción.

Una vez invocada esta API, la aplicación puede seguir funcionando con normalidad. Si la inscripción se realiza correctamente, el SDK notificará al usuario que se requiere un reinicio de la aplicación. Una vez administrada la aplicación, el valor del identificador de objeto Entra debe consultarse mediante enrolledAccountId en IntuneMAMEnrollmentManager. Úselo para todas las API del SDK de MAM que la aplicación usa para esta cuenta inscrita.

Ejemplo:

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

Permitir Intune controlar la autenticación y la inscripción en el inicio

Si quieres que el SDK de Intune controle toda la autenticación con ADAL/MSAL y la inscripción antes de que la aplicación termine de iniciarse, y la aplicación siempre requiere directiva de APLICACIÓN, no tienes que usar loginAndEnrollAccount la API. Simplemente puede establecer las dos opciones siguientes en SÍ en el diccionario IntuneMAMSettings en info.plist de la aplicación.

Configuración Tipo Definición
AutoEnrollOnLaunch Booleano Especifica si la aplicación debe intentar inscribirse automáticamente al iniciarse si se detecta una identidad administrada existente y aún no lo ha hecho. El valor predeterminado es NO.

Nota: Si no se encuentra ninguna identidad administrada o no hay ningún token válido para la identidad disponible en la memoria caché de ADAL/MSAL, el intento de inscripción producirá un error silencioso sin solicitar credenciales, a menos que la aplicación también haya establecido MAMPolicyRequired en SÍ.
MAMPolicyRequired Booleano Especifica si se bloqueará el inicio de la aplicación si la aplicación no tiene una directiva de protección de aplicaciones Intune. El valor predeterminado es NO.

Nota: Las aplicaciones no se pueden enviar al App Store con MAMPolicyRequired establecido en SÍ. Al establecer MAMPolicyRequired en SÍ, AutoEnrollOnLaunch también debe establecerse en SÍ.

Si eliges esta opción para tu aplicación, no tienes que controlar el reinicio de la aplicación después de la inscripción.

Anulación del registro de cuentas de usuario

Antes de que un usuario haya iniciado sesión en una aplicación, la aplicación debe anular el registro del usuario del SDK. Esto garantizará lo siguiente:

  1. Los reintentos de inscripción ya no se producirán para la cuenta del usuario.

  2. Protección de aplicaciones directiva se quitará.

  3. Los datos corporativos se eliminan si la aplicación inicia un borrado selectivo (opcional).

Antes de que el usuario haya iniciado sesión, la aplicación debe llamar al método siguiente en la IntuneMAMEnrollmentManager instancia:

/*
 *  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;

Se debe llamar a este método antes de eliminar los tokens de Microsoft Entra de la cuenta de usuario. El SDK necesita los tokens de Microsoft Entra de la cuenta de usuario para realizar solicitudes específicas al servicio Intune MAM en nombre del usuario.

Si la aplicación eliminará los datos corporativos del usuario por su cuenta, la doWipe marca se puede establecer en false. De lo contrario, la aplicación puede hacer que el SDK inicie un borrado selectivo. Esto da como resultado una llamada al delegado de borrado selectivo de la aplicación.

Ejemplo:

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

Notificaciones de estado, resultado y depuración

La aplicación puede recibir notificaciones de estado, resultado y depuración sobre las siguientes solicitudes al servicio MAM de Intune:

  • Solicitudes de inscripción
  • Solicitudes de actualización de directivas
  • Solicitudes de anulación de inscripción

Las notificaciones se presentan a través de métodos delegados en 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;

Estos métodos delegados devuelven un IntuneMAMEnrollmentStatus objeto que tiene la siguiente información:

  • AccountId (id. de objeto) de la cuenta asociada a la solicitud
  • La identidad (UPN) de la cuenta asociada a la solicitud
  • Código de estado que indica el resultado de la solicitud
  • Cadena de error con una descripción del código de estado
  • Objeto NSError . Este objeto se define en IntuneMAMEnrollmentStatus.h, junto con los códigos de estado específicos que se pueden devolver.

Código de ejemplo

A continuación se muestran implementaciones de ejemplo de los métodos delegados:

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

Reinicio de la aplicación

Cuando una aplicación recibe directivas MAM por primera vez, debe reiniciarse para aplicar los enlaces necesarios. Para notificar a la aplicación que es necesario reiniciar, el SDK proporciona un método delegado en IntuneMAMPolicyDelegate.h.

 - (BOOL) restartApplication

El valor devuelto de este método indica al SDK si la aplicación debe controlar el reinicio necesario:

  • Si se devuelve true, la aplicación debe controlar el reinicio.

  • Si se devuelve false, el SDK reiniciará la aplicación una vez devuelto este método. El SDK muestra inmediatamente un cuadro de diálogo que indica al usuario que reinicie la aplicación.

Nota:

Las aplicaciones maui de .NET no requieren un reinicio.

Criterios de salida

Después de configurar el complemento de compilación o de integrar la herramienta de línea de comandos en el proceso de compilación, compruebe que se ejecuta correctamente:

  • Asegúrese de que la compilación se compila y compila correctamente.
  • Inicie la aplicación compilada, inicie sesión con un usuario Microsoft Entra que no tenga como destino la directiva de Protección de aplicaciones y confirme que la aplicación funciona según lo previsto.
  • Cierre la sesión y repita esta prueba con un usuario Microsoft Entra que tenga como destino la directiva de Protección de aplicaciones y confirme que la aplicación se administra ahora mediante Intune y se reinicia.

En este momento de la integración, la aplicación ahora puede recibir y aplicar la directiva de Protección de aplicaciones. Ejecute las siguientes pruebas para validar la integración.

Primera prueba de aplicación de directiva

Ejecute primero la siguiente prueba para familiarizarse con la experiencia completa del usuario final de la aplicación de directivas dentro de la aplicación:

  1. Cree una directiva de protección de aplicaciones de iOS en el centro de administración de Microsoft Intune. Para esta prueba, configure la directiva:
    • En Requisitos de acceso, deje la configuración predeterminada. En concreto, "PIN para el acceso" debe ser "Requerir".
  2. Asegúrese de que la directiva de Protección de aplicaciones está destinada a la aplicación. Es posible que tenga que agregar manualmente el identificador de agrupación de la aplicación en el Asistente para la creación de directivas.
  3. Asigne la directiva de Protección de aplicaciones a un grupo de usuarios que contenga la cuenta de prueba.
  4. Instale la aplicación.
  5. Inicie sesión en la aplicación con la cuenta de prueba destinada a la directiva de Protección de aplicaciones.
  6. Confirme que se le solicita una pantalla administrada Intune y confirme que la solicitud reinicia la aplicación. Esta pantalla indica que el SDK recupera correctamente la directiva de esta cuenta.
  7. Cree un PIN cuando se le pida que establezca un PIN de aplicación.
  8. Cierre la sesión de la cuenta administrada de la aplicación.
  9. Navegue por la aplicación y confirme que la aplicación funciona según lo esperado si es posible sin iniciar sesión.

Esta lista de pasos es una prueba *sin sistema operativo para confirmar que la aplicación registra correctamente la cuenta, registra la devolución de llamada de autenticación y anula el registro de la cuenta. Ejecute las siguientes pruebas para validar más exhaustivamente cómo modifican el comportamiento de la aplicación otras configuraciones de directiva de Protección de aplicaciones.

Pasos siguientes

Después de completar todos los criterios de salida, continúe con La fase 4: Características de participación de la aplicación.