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.
- Aplicativo autenticador iOS
- Biblioteca de autenticação MSAL 1.0 ou superior
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
- Faça logon com suas credenciais de administrador para https://portal.azure.com.
- Selecione Microsoft Entra ID>Security>Conditional Access>Nova política. Create uma nova política de acesso condicional.
- 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.
- 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.
- Conceda controles de acesso selecionando Controles> de AcessoConceder Acesso>Exigir política de proteção de aplicativo.
- Quando terminar de configurar a política, selecione Create para salvar a política e aplicá-la.
- Habilitar a política.
- 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.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de