SDK de aplicación de Intune para iOS: protección de aplicaciones Soporte técnico de CA (opcional)

Protección de aplicaciones: el acceso condicional bloquea el acceso a los tokens de servidor hasta que Intune haya confirmado que se ha aplicado la directiva de protección de aplicaciones. Esta característica requiere cambios en los flujos de agregar usuarios. Una vez que un cliente habilita la CA de protección de aplicaciones, las aplicaciones del inquilino de ese cliente que accedan a recursos protegidos no podrán adquirir un token de acceso a menos que admitan esta característica.

Nota:

Esta guía se divide en varias etapas distintas. Comience por revisar la Etapa 1: Planifique la integración.

Fase 6: Protección de aplicaciones Soporte técnico de CA

Objetivos de la etapa

  • Obtenga información sobre las distintas API que se pueden usar para admitir la protección de aplicaciones. Acceso condicional en la aplicación iOS
  • Integrar la protección de aplicaciones Acceso condicional a la aplicación y a los usuarios.
  • Pruebe la integración anterior con la aplicación y los usuarios.

Dependencias

Además del SDK de Intune, necesita estos dos componentes para habilitar App Protection CA en la aplicación.

  1. Aplicación de autenticación de iOS
  2. Biblioteca de autenticación MSAL 1.0 o posterior

Flujo de corrección de MAM-CA

Diagrama del flujo de corrección de MAM-CA.

Flujo del proceso de cumplimiento de MAM

Diagrama del flujo del proceso de cumplimiento de MAM.

Nuevas API

La mayoría de las nuevas API se pueden encontrar en IntuneMAMComplianceManager.h. La aplicación debe tener en cuenta tres diferencias en el comportamiento que se explican a continuación.

Comportamiento nuevo Descripción
Aplicación → ADAL/MSAL: Adquirir token Cuando una aplicación intenta adquirir un token, debe prepararse para recibir un ERROR_SERVER_PROTECTION_POLICY_REQUIRED. La aplicación puede recibir este error durante su flujo inicial de adición de cuenta o al acceder a un token más adelante en el ciclo de vida de la aplicación. Cuando la aplicación recibe este error, no se le concederá un token de acceso y debe corregirse para recuperar los datos del servidor.
SDK de → Intune de aplicación: Llamada a remediateComplianceForIdentity Cuando una aplicación recibe una ERROR_SERVER_PROTECTION_POLICY_REQUIRED de ADAL o MSALErrorServerProtectionPoliciesRequired de MSAL, debe llamar a [[IntuneMAMComplianceManager instance] remediateComplianceForIdentity] para permitir Intune inscriba la aplicación y aplique la directiva. Es posible que la aplicación se reinicie durante esta llamada. Si la aplicación necesita guardar el estado antes de reiniciarse, puede hacerlo en el método restartApplication delegate en IntuneMAMPolicyDelegate.

remediateComplianceForIdentity proporciona todas las funciones de registerAndEnrollAccount y loginAndEnrollAccount. Por lo tanto, la aplicación no necesita usar ninguna de estas API anteriores.
Intune → App: Delegar notificación de corrección Una vez que Intune ha recuperado y aplicado las directivas, notifica a la aplicación el resultado mediante el protocolo IntuneMAMComplianceDelegate. Consulte IntuneMAMComplianceStatus en IntuneComplianceManager.h para obtener información sobre cómo la aplicación debe controlar cada error. En todos los casos, excepto IntuneMAMComplianceCompliant, el usuario no tendrá un token de acceso válido.

Si la aplicación ya tiene contenido administrado y no puede entrar en un estado compatible, la aplicación debe llamar al borrado selectivo para quitar cualquier contenido corporativo.

Si no podemos alcanzar un estado compatible, la aplicación debe mostrar localizados el mensaje de error y la cadena de título proporcionados por withErrorMessage y andErrorTitle.

Ejemplo del método hasComplianceStatus de IntuneMAMComplianceDelegate

(void) accountId:(NSString*_Nonnull) accountId hasComplianceStatus:(IntuneMAMComplianceStatus) status withErrorMessage:(NSString*_Nonnull) errMsg andErrorTitle:(NSString*_Nonnull) errTitle
{
    switch(status)
    {
        case IntuneMAMComplianceCompliant:
        {
            /*
            Handle successful compliance
            */
            break;
        }
        case IntuneMAMComplianceNotCompliant:
        case IntuneMAMComplianceNetworkFailure:
        case IntuneMAMComplianceUserCancelled:
        case IntuneMAMComplianceServiceFailure:
        {
            UIAlertController* alert = [UIAlertController alertControllerWithTitle:errTitle
            message:errMsg
            preferredStyle:UIAlertControllerStyleAlert];
            UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
            handler:^(UIAlertAction * action) {exit(0);}];
            [alert addAction:defaultAction];
            dispatch_async(dispatch_get_main_queue(), ^{
            [self presentViewController:alert animated:YES completion:nil];
            });
            break;
        }
        case IntuneMAMComplianceInteractionRequired:
        {
            [[IntuneMAMComplianceManager instance] remediateComplianceForAccountId:accountId silent:NO];
            break;
        }
    }
}
func accountId(_ accountId: String, hasComplianceStatus status: IntuneMAMComplianceStatus, withErrorMessage errMsg: String, andErrorTitle errTitle: String) {
        switch status {
        case .compliant:
           //Handle successful compliance
        case .notCompliant, .networkFailure,.serviceFailure,.userCancelled:
            DispatchQueue.main.async {
              let alert = UIAlertController(title: errTitle, message: errMsg, preferredStyle: .alert)
                alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { action in
                    exit(0)
                }))
                self.present(alert, animated: true, completion: nil)
            }
        case .interactionRequired:
            IntuneMAMComplianceManager.instance().remediateCompliance(forAccountId: accountId, silent: false)
   }

MSAL/ADAL

Las aplicaciones deben indicar su compatibilidad con la CA de protección de aplicaciones agregando la variable de funcionalidades de cliente a su configuración de MSAL/ADAL. Se requieren los siguientes valores: claims = {"access_token":{"xms_cc":{"values":["protapp"]}}}

Referencia de la clase MSALPublicClientApplicationConfig (azuread.github.io)

    MSALAADAuthority *authority = [[MSALAADAuthority alloc] initWithURL:[[NSURL alloc] initWithString:IntuneMAMSettings.aadAuthorityUriOverride] error:&msalError];
    MSALPublicClientApplicationConfig *config = [[MSALPublicClientApplicationConfig alloc]
                                                 initWithClientId:IntuneMAMSettings.aadClientIdOverride
                                                 redirectUri:IntuneMAMSettings.aadRedirectUriOverride
                                                 authority:authority];

    /*
     IF YOU'RE IMPLEMENTING CA IN YOUR APP, PLEASE PAY ATTENTION TO THE FOLLOWING...
    */
    // This is needed for CA!
    // This line adds an option to the MSAL token request so that MSAL knows that CA may be active
    // Without this, MSAL won't know that CA could be activated
    // In the event that CA is activated and this line isn't in place, the auth flow will fail

    config.clientApplicationCapabilities = @[@"protapp"];
guard let authorityURL = URL(string: kAuthority) else {
            print("Unable to create authority URL")
            return
        }
         let authority = try MSALAADAuthority(url: authorityURL)
         let msalConfiguration = MSALPublicClientApplicationConfig(clientId: kClientID,redirectUri: kRedirectUri,
                                                                  authority: authority)
        msalConfiguration.clientApplicationCapabilities = ["ProtApp"]
        self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)

Para capturar el id. de objeto de Microsoft Entra para el parámetro accountId de las API de corrección de cumplimiento del SDK de MAM, debe realizar los siguientes pasos:

  • En primer lugar, obtenga homeAccountId de userInfo[MSALHomeAccountIdKey] dentro del objeto MSALError enviado por MSAL cuando informa ERROR_SERVER_PROTECTION_POLICY_REQUIRED a la aplicación.
  • Este homeAccountId tiene el formato ObjectId.TenantId. Extraiga el valor de ObjectId dividiendo la cadena en el "." y, a continuación, use ese valor para el parámetro accountId en la API de corrección remediateComplianceForAccountId.

Criterios de salida

Configuración de un usuario de prueba para la CA de protección de aplicaciones

  1. Inicie sesión con sus credenciales de administrador en https://portal.azure.com.
  2. Seleccione Microsoft Entra IDAcceso>condicional>Crear nueva directiva. Crear una nueva directiva de acceso condicional.
  3. Configure la directiva de acceso condicional estableciendo los siguientes elementos:
    • Rellenando el campo Nombre .
    • Habilitación de la directiva.
    • Asignar la directiva a un usuario o grupo.
  4. Asignar aplicaciones en la nube. Seleccione Incluir>todas las aplicaciones en la nube. Como indica la advertencia, tenga cuidado de no configurar incorrectamente esta configuración. Por ejemplo, si excluyes todas las aplicaciones en la nube, te bloqueas a ti mismo de la consola.
  5. Para conceder controles de acceso, seleccione Controles >de accesoConceder acceso>Requerir la directiva de protección de aplicaciones.
  6. Cuando haya terminado de configurar la directiva, seleccione Crear para guardar la directiva y aplicarla.
  7. Habilite la directiva.
  8. También debe asegurarse de que los usuarios sean de destino para las directivas de MAM.

Casos de prueba

Caso de prueba Procedimiento de prueba Resultado esperado
MAM-CA siempre se ha aplicado Asegúrese de que el usuario es el destino tanto de la directiva de CA como de MAM de protección de aplicaciones antes de inscribirse en la aplicación. Compruebe que la aplicación controla los casos de corrección descritos anteriormente y que la aplicación puede obtener un token de acceso.
MAM-CA se aplicó después de que el usuario se inscribiera El usuario ya debería haber iniciado sesión en la aplicación, pero no está dirigido a la CA de protección de aplicaciones. Diríjase al usuario para la CA de protección de aplicaciones en la consola y compruebe que maneja correctamente la corrección de MAM
Incumplimiento de MAM-CA Configurar una directiva de CA de protección de aplicaciones, pero no asignar una directiva MAM. El usuario no debe poder adquirir un token de acceso. Esto es útil para probar cómo la aplicación controla los casos de error IntuneMAMComplianceStatus.

Pasos siguientes

Una vez que haya completado todos los criterios de salida anteriores, la aplicación se ha integrado correctamente con el soporte de CA de protección de aplicaciones. La sección siguiente, Fase 7: Las características de vista web pueden ser necesarias o no, en función del soporte de directiva de protección de aplicaciones deseado de la aplicación.