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.
- Aplicação iOS Authenticator
- Biblioteca de autenticação MSAL 1.0 ou superior
Fluxo de remediação MAM-CA
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
- Inicie sessão com as credenciais de administrador para https://portal.azure.com.
- Selecione Microsoft Entra ID>Segurança>Acesso> CondicionalNova política. Crie uma nova política de Acesso Condicional.
- 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.
- 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 .
- Conceda controlos de acesso ao selecionar Controlos> de AcessoConceder Acesso>Exigir política de proteção de aplicações.
- Quando terminar de configurar a política, selecione Criar para guardar a política e aplicá-la.
- Habilitar a política.
- 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.