Compartilhar via


Intune SDK do Aplicativo para iOS – Suporte à AC de Proteção de Aplicativo (opcional)

O Acesso Condicional da Proteção de Aplicativo bloqueia o acesso a tokens de servidor até que Intune tenha confirmado que a política de proteção de aplicativo foi aplicada. Esse recurso requer alterações nos fluxos de usuário de adição. Depois que um cliente habilita a AC de Proteção de Aplicativo, os aplicativos no locatário desse cliente que acessam recursos protegidos não poderão adquirir um token de acesso, a menos que dêem suporte a esse recurso.

Observação

Este guia é dividido em vários estágios distintos. Comece examinando a Fase 1: Planeje a Integração.

Estágio 6: suporte à AC da Proteção de Aplicativos

Goals de estágio

  • Saiba mais sobre as diferentes APIs que podem ser usadas para dar suporte ao Acesso Condicional da Proteção de Aplicativo no aplicativo iOS
  • Integre o Acesso Condicional da Proteção de Aplicativo ao seu aplicativo e aos usuários.
  • Teste a integração acima com seu aplicativo e usuários.

Dependências

Além do SDK Intune, você precisa desses dois componentes para habilitar a AC de Proteção de Aplicativo em seu aplicativo.

  1. Aplicativo autenticador iOS
  2. Biblioteca de autenticação MSAL 1.0 ou superior

Fluxo de correção MAM-CA

Diagrama do fluxo de correção MAM-CA.

Novas APIs

A maioria das novas APIs pode ser encontrada no IntuneMAMComplianceManager.h. O aplicativo precisa estar ciente de três diferenças de comportamento explicadas abaixo.

Novo comportamento Descrição
Aplicativo → ADAL/MSAL: Adquirir token Quando um aplicativo tenta adquirir um token, ele deve estar preparado para receber um ERROR_SERVER_PROTECTION_POLICY_REQUIRED. O aplicativo pode receber esse erro durante o fluxo de adição de conta inicial ou ao acessar um token mais tarde no ciclo de vida do aplicativo. Quando o aplicativo receber esse erro, ele não receberá um token de acesso e precisará ser corrigido para recuperar os dados do servidor.
SDK do → Intune de aplicativo: remediar chamadaComplianceForIdentity Quando um aplicativo recebe um ERROR_SERVER_PROTECTION_POLICY_REQUIRED da ADAL ou MSALErrorServerProtectionPoliciesRequired do MSAL, ele deve chamar [[IntuneMAMComplianceManager instance] remediarComplianceForIdentity] para permitir que Intune registre o aplicativo e aplique a política. O aplicativo pode ser reiniciado durante essa chamada. Se o aplicativo precisar salvar o estado antes de reiniciar, ele poderá fazê-lo em restartApplication delegate method intuneMAMPolicyDelegate.

remediateComplianceForIdentity fornece toda a funcionalidade de registerAndEnrollAccount e loginAndEnrollAccount. Portanto, o aplicativo não precisa usar nenhuma dessas APIs mais antigas.
Aplicativo Intune →: Notificação de correção de delegado Depois que Intune tiver recuperado e aplicado políticas, ele notificará o aplicativo do resultado usando o protocolo IntuneMAMComplianceDelegate. Consulte IntuneMAMComplianceStatus no IntuneComplianceManager.h para obter informações sobre como o aplicativo deve lidar com cada erro. Em todos os casos, exceto IntuneMAMComplianceCompliant, o usuário não terá um token de acesso válido.

Se o aplicativo já tiver conteúdo gerenciado e não conseguir inserir um status em conformidade, o aplicativo deverá chamar apagamento seletivo para remover qualquer conteúdo corporativo.

Se não conseguirmos alcançar um estado compatível, o aplicativo deverá exibir a mensagem de erro e a cadeia de caracteres de título fornecidas por withErrorMessage e andErrorTitle.

Exemplo para o método hasComplianceStatus do 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

Os aplicativos precisam indicar suporte para a AC de Proteção de Aplicativo adicionando a variável de funcionalidades do cliente à configuração MSAL/ADAL. Os seguintes valores são necessários: declarações = {"access_token":{"xms_cc":{"values":["protapp"]}}}

Referência de classe 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 buscar a ID do objeto Entra para o parâmetro accountId das APIs de correção de conformidade do SDK do MAM, você precisa fazer o seguinte:

  • Primeiro, obtenha o homeAccountId de userInfo[MSALHomeAccountIdKey] no objeto MSALError enviado de volta pelo MSAL quando ele relata ERROR_SERVER_PROTECTION_POLICY_REQUIRED para o aplicativo.
  • Essa homeAccountId estará no formato ObjectId.TenantId. Extraia o valor ObjectId dividindo a cadeia de caracteres no '.' e use esse valor para o parâmetro accountId na correção da API de correçãoComplianceForAccountId.

Critérios de saída

Configurando um usuário de teste para a AC de Proteção de Aplicativo

  1. Faça logon com suas credenciais de administrador para https://portal.azure.com.
  2. Selecione Microsoft Entra ID>Security>Conditional Access>Nova política. Create uma nova política de acesso condicional.
  3. Configure a política de acesso condicional definindo os seguintes itens:
    • Preenchendo o campo Nome .
    • Habilitando a política.
    • Atribuindo a política a um usuário ou grupo.
  4. Atribuir aplicativos de nuvem. Selecione Incluir>Todos os aplicativos de nuvem. Como observa o aviso, tenha cuidado para não configurar incorretamente essa configuração. Por exemplo, se você excluísse todos os aplicativos de nuvem, você se bloquearia fora do console.
  5. Conceda controles de acesso selecionando Controles> de AcessoConceder Acesso>Exigir política de proteção de aplicativo.
  6. Quando terminar de configurar a política, selecione Create para salvar a política e aplicá-la.
  7. Habilitar a política.
  8. Você também precisa garantir que os usuários sejam direcionados para políticas de MAM.

Casos de teste

Caso de teste Como testar Resultado esperado
MAM-CA sempre aplicada Verifique se o usuário está direcionado para a política de AC e MAM da Proteção de Aplicativo antes de se registrar em seu aplicativo. Verifique se seu aplicativo manipula os casos de correção descritos acima e se o aplicativo pode obter um token de acesso.
MAM-CA aplicada após o usuário registrado O usuário já deve estar conectado ao aplicativo, mas não é direcionado para a AC de Proteção de Aplicativo. Direcione o usuário para a AC de Proteção de Aplicativo no console e verifique se você lida corretamente com a correção do MAM
Descumprimento do MAM-CA Configure uma política de AC de Proteção de Aplicativo, mas não atribua uma política de MAM. O usuário não deve ser capaz de adquirir um token de acesso. Isso é útil para testar como seu aplicativo lida com casos de erro do IntuneMAMComplianceStatus.

Próximas etapas

Depois de concluir todos os Critérios de Saída acima, seu aplicativo agora será integrado com êxito ao suporte à AC da Proteção de Aplicativo. A seção subsequente, Estágio 7: recursos de exibição da Web, pode ou não ser necessária, dependendo do suporte desejado da política de proteção de aplicativo do aplicativo.