Compartilhar via


Intune SDK da Aplicação para iOS – Suporte da AC de Proteção de Aplicações (opcional)

O Acesso Condicional da Proteção de Aplicações bloqueia o acesso aos tokens de servidor até que Intune confirme que a política de proteção de aplicações foi aplicada. Esta funcionalidade requer alterações aos fluxos de utilizador adicionados. Assim que um cliente ativar a AC de Proteção de Aplicações, as aplicações no inquilino desse cliente que acedem a recursos protegidos não poderão adquirir um token de acesso, a menos que suportem esta funcionalidade.

Observação

Este guia está dividido em várias fases distintas. Comece por rever a Fase 1: Planear a Integração.

Fase 6: Suporte da AC de Proteção de Aplicações

Fase Goals

  • Saiba mais sobre as diferentes APIs que podem ser utilizadas para suportar o Acesso Condicional da Proteção de Aplicações na aplicação iOS
  • Integrar o Acesso Condicional da Proteção de Aplicações à sua aplicação e utilizadores.
  • Teste a integração acima com a sua aplicação e os utilizadores.

Dependências

Além do SDK Intune, precisa destes dois componentes para ativar a AC de Proteção de Aplicações na sua aplicação.

  1. Aplicação iOS Authenticator
  2. Biblioteca de autenticação MSAL 1.0 ou superior

Fluxo de remediação MAM-CA

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

Fluxo do processo de conformidade de MAM

Diagrama do fluxo do processo de conformidade de MAM.

Novas APIs

A maioria das novas APIs pode ser encontrada em IntuneMAMComplianceManager.h. A aplicação tem de estar ciente das três diferenças de comportamento explicadas abaixo.

Novo comportamento Descrição
Aplicação → ADAL/MSAL: Adquirir token Quando uma aplicação tenta adquirir um token, deve estar preparada para receber um ERROR_SERVER_PROTECTION_POLICY_REQUIRED. A aplicação pode receber este erro durante o fluxo de adição inicial da conta ou ao aceder a um token mais tarde no ciclo de vida da aplicação. Quando a aplicação receber este erro, não lhe será concedido um token de acesso e terá de ser remediada para obter quaisquer dados do servidor.
SDK do → Intune de Aplicações: Chamar remediateComplianceForIdentity Quando uma aplicação recebe uma ERROR_SERVER_PROTECTION_POLICY_REQUIRED da ADAL ou MSALErrorServerProtectionPoliciesRequired da MSAL, deve chamar [[Instância intuneMAMComplianceManager] remediateComplianceForIdentity] para permitir que Intune inscreva a aplicação e aplique a política. A aplicação pode ser reiniciada durante esta chamada. Se a aplicação precisar de guardar o estado antes de reiniciar, pode fazê-lo no reinícioTodo delegado de aplicações no IntuneMAMPolicyDelegate.

remediateComplianceForIdentity fornece todas as funcionalidades de registerAndEnrollAccount e loginAndEnrollAccount. Por conseguinte, a aplicação não precisa de utilizar nenhuma destas APIs mais antigas.
Aplicação Intune →: Notificação de remediação delegada Depois de Intune ter obtido e aplicado políticas, notifica a aplicação do resultado com o protocolo IntuneMAMComplianceDelegate. Veja IntuneMAMComplianceStatus no IntuneComplianceManager.h para obter informações sobre como a aplicação deve lidar com cada erro. Em todos os casos, exceto IntuneMAMComplianceCompliant, o utilizador não terá um token de acesso válido.

Se a aplicação já tiver conteúdo gerido e não conseguir introduzir um status compatível, a aplicação deverá chamar a eliminação seletiva para remover qualquer conteúdo empresarial.

Se não conseguirmos alcançar um estado em conformidade, a aplicação deverá apresentar a mensagem de erro e a cadeia de título fornecidas por withErrorMessage e andErrorTitle.

Exemplo do 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

As aplicações têm de indicar suporte para a AC de Proteção de Aplicações ao adicionar a variável de capacidades do cliente à respetiva configuração MSAL/ADAL. São necessários os seguintes valores: claims = {"access_token":{"xms_cc":{"values":["protapp"]}}}

MsALPublicClientApplicationConfig Class Reference (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 obter o ID do objeto Microsoft Entra para o parâmetro accountId das APIs de remediação de compatibilidade do SDK MAM, tem de efetuar os seguintes passos:

  • Primeiro, obtenha o homeAccountId de userInfo[MSALHomeAccountIdKey] no objeto MSALError enviado pela MSAL quando comunica ERROR_SERVER_PROTECTION_POLICY_REQUIRED para a aplicação.
  • Este homeAccountId está no formato ObjectId.TenantId. Extraia o valor ObjectId ao dividir a cadeia no "." e, em seguida, utilize esse valor para o parâmetro accountId na remediação da API de remediaçãoComplianceForAccountId.

Critérios de saída

Configurar um utilizador de teste para a AC de Proteção de Aplicações

  1. Inicie sessão com as credenciais de administrador para https://portal.azure.com.
  2. Selecione Microsoft Entra ID>Segurança>Acesso> CondicionalNova política. Crie uma nova política de Acesso Condicional.
  3. Configure a política de Acesso Condicional ao definir os seguintes itens:
    • Preencher o campo Nome .
    • Ativar a política.
    • Atribuir a política a um utilizador ou grupo.
  4. Atribuir aplicações na cloud. Selecione Incluir>Todas as aplicações na cloud. Como nota o aviso, tenha cuidado para não configurar incorretamente esta definição. Por exemplo, se excluisse todas as aplicações na cloud, bloquear-se-ia na consola do .
  5. Conceda controlos de acesso ao selecionar Controlos> de AcessoConceder Acesso>Exigir política de proteção de aplicações.
  6. Quando terminar de configurar a política, selecione Criar para guardar a política e aplicá-la.
  7. Habilitar a política.
  8. Também tem de se certificar de que os utilizadores são direcionados para as políticas de MAM.

Casos de teste

Caso de Teste Como testar Resultado Esperado
MAM-CA sempre aplicada Certifique-se de que o utilizador está direcionado para a AC de Proteção de Aplicações e a política de MAM antes de se inscrever na sua aplicação. Verifique se a aplicação processa os casos de remediação descritos acima e se a aplicação pode obter um token de acesso.
MAM-CA aplicada após a inscrição do utilizador O utilizador já deve ter sessão iniciada na aplicação, mas não é direcionado para a AC de Proteção de Aplicações. Direcione o utilizador para a AC de Proteção de Aplicações na consola do e verifique se processa corretamente a remediação de MAM
Não conformidade MAM-CA Configure uma política de AC de Proteção de Aplicações, mas não atribua uma política de MAM. O utilizador não deve conseguir adquirir um token de acesso. Isto é útil para testar a forma como a sua aplicação processa os casos de erro IntuneMAMComplianceStatus.

Próximas etapas

Depois de concluir todos os Critérios de Saída acima, a sua aplicação é agora integrada com êxito no suporte da AC de Proteção de Aplicações. A secção subsequente, Fase 7: funcionalidades de vista Web pode ou não ser necessária, dependendo do suporte de política de proteção de aplicações pretendido da sua aplicação.