Intune App SDK per iOS - Supporto della CA di Protezione app (facoltativo)
L'accesso condizionale di Protezione app blocca l'accesso ai token del server fino a quando Intune non ha confermato l'applicazione dei criteri di protezione delle app. Questa funzionalità richiede modifiche ai flussi utente aggiunti. Quando un cliente abilita la CA di Protezione app, le applicazioni nel tenant del cliente che accedono alle risorse protette non potranno acquisire un token di accesso a meno che non supportino questa funzionalità.
Nota
Questa guida è suddivisa in diverse fasi distinte. Per iniziare, esaminare la fase 1: Pianificare l'integrazione.
Fase 6: Supporto della CA di Protezione app
Fase Goals
- Informazioni sulle diverse API che possono essere usate per supportare l'accesso condizionale di Protezione app all'interno dell'app iOS
- Integrare l'accesso condizionale di Protezione app all'app e agli utenti.
- Testare l'integrazione precedente con l'app e gli utenti.
Dipendenze
Oltre all'SDK Intune, sono necessari questi due componenti per abilitare la CA di Protezione app nell'app.
- App iOS Authenticator
- Libreria di autenticazione MSAL 1.0 o versione successiva
Flusso di correzione MAM-CA
Flusso del processo di conformità MAM
Nuove API
La maggior parte delle nuove API è disponibile in IntuneMAMComplianceManager.h. L'app deve essere consapevole di tre differenze di comportamento illustrate di seguito.
Nuovo comportamento | Descrizione |
---|---|
App → ADAL/MSAL: Acquisire il token | Quando un'applicazione tenta di acquisire un token, deve essere preparata per ricevere un ERROR_SERVER_PROTECTION_POLICY_REQUIRED. L'app può ricevere questo errore durante il flusso di aggiunta dell'account iniziale o quando accede a un token più avanti nel ciclo di vita dell'applicazione. Quando l'app riceve questo errore, non gli verrà concesso un token di accesso e dovrà essere corretti per recuperare i dati del server. |
App → Intune SDK: Call remediateComplianceForIdentity | Quando un'app riceve un ERROR_SERVER_PROTECTION_POLICY_REQUIRED da ADAL o MSALErrorServerProtectionPoliciesRequired da MSAL, deve chiamare [[Istanza di IntuneMAMComplianceManager] remediateComplianceForIdentity] per consentire Intune registrare l'app e applicare i criteri. L'app potrebbe essere riavviata durante questa chiamata. Se l'app deve salvare lo stato prima del riavvio, può farlo nel metodo delegato restartApplication in IntuneMAMPolicyDelegate. remediateComplianceForIdentity fornisce tutte le funzionalità di registerAndEnrollAccount e loginAndEnrollAccount. Pertanto, l'app non deve usare nessuna di queste API meno recenti. |
app Intune →: delegare la notifica di correzione | Dopo che Intune ha recuperato e applicato i criteri, notifica all'app il risultato usando il protocollo IntuneMAMComplianceDelegate. Per informazioni su come l'app deve gestire ogni errore, vedere IntuneMAMComplianceStatus in IntuneComplianceManager.h. In tutti i casi, ad eccezione di IntuneMAMComplianceCompliant, l'utente non avrà un token di accesso valido. Se l'app ha già contenuto gestito e non è in grado di immettere uno stato conforme, l'applicazione deve chiamare la cancellazione selettiva per rimuovere qualsiasi contenuto aziendale. Se non è possibile raggiungere uno stato conforme, l'app deve visualizzare il messaggio di errore localizzato e la stringa del titolo forniti da withErrorMessage e andErrorTitle. |
Esempio per il metodo hasComplianceStatus di 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
Le app devono indicare il supporto per la CA di Protezione app aggiungendo una variabile di funzionalità client alla configurazione MSAL/ADAL. Sono necessari i valori seguenti: claims = {"access_token":{"xms_cc":{"values":["protapp"]}}}
Informazioni di riferimento sulla 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)
Per recuperare l'ID oggetto Microsoft Entra per il parametro accountId delle API di correzione della conformità di MAM SDK, è necessario seguire questa procedura:
- Ottenere prima di tutto homeAccountId da userInfo[MSALHomeAccountIdKey] all'interno dell'oggetto MSALError inviato da MSAL quando segnala ERROR_SERVER_PROTECTION_POLICY_REQUIRED all'app.
- Questo homeAccountId è nel formato ObjectId.TenantId. Estrarre il valore ObjectId suddividendo la stringa in '.' e quindi usare tale valore per il parametro accountId nel remediation API remediateComplianceForAccountId.
Criteri di uscita
Configurazione di un utente di test per la CA di Protezione app
- Accedere con le credenziali di amministratore a https://portal.azure.com.
- Selezionare Microsoft Entra ID>Sicurezza accesso>condizionale>Nuovo criterio. Creare un nuovo criterio di accesso condizionale.
- Configurare i criteri di accesso condizionale impostando gli elementi seguenti:
- Compilare il campo Nome .
- Abilitazione dei criteri.
- Assegnazione dei criteri a un utente o a un gruppo.
- Assegnare app cloud. Selezionare Includi>tutte le app cloud. Come nota l'avviso, prestare attenzione a non configurare erroneamente questa impostazione. Ad esempio, se sono state escluse tutte le app cloud, è possibile bloccarsi dalla console.
- Concedere controlli di accesso selezionando Controlli> di accessoConcedi accesso>Richiedi criteri di protezione delle app.
- Al termine della configurazione del criterio, selezionare Crea per salvare il criterio e applicarlo.
- Abilita il criterio.
- È anche necessario assicurarsi che gli utenti siano destinati ai criteri MAM.
Test case
Test Case | Come eseguire il test | Risultato previsto |
---|---|---|
MAM-CA sempre applicata | Prima di eseguire la registrazione nell'app, verificare che l'utente sia destinato ai criteri DI PROTEZIONE APP e MAM. | Verificare che l'app gestisca i casi di correzione descritti in precedenza e che l'app possa ottenere un token di accesso. |
MAM-CA applicata dopo la registrazione dell'utente | L'utente deve essere già connesso all'app, ma non è destinato alla CA di Protezione app. | Impostare come destinazione l'utente per l'autorità di certificazione di Protezione app nella console e verificare di gestire correttamente la correzione MAM |
Non conformità MAM-CA | Configurare un criterio CA di Protezione app, ma non assegnare criteri MAM. | L'utente non deve essere in grado di acquisire un token di accesso. Questa operazione è utile per testare il modo in cui l'app gestisce i casi di errore in IntuneMAMComplianceStatus. |
Operazioni successive
Dopo aver completato tutti i criteri di uscita precedenti, l'app è ora integrata correttamente con il supporto della CA di Protezione app. La sezione successiva , Fase 7: Le funzionalità di visualizzazione Web potrebbero essere necessarie o meno, a seconda del supporto dei criteri di protezione delle app desiderato per l'app.