Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Protezione delle app L'accesso condizionale blocca l'accesso ai token del server finché Intune non conferma che i criteri di protezione delle app sono stati applicati. Questa funzionalità richiede modifiche ai flussi utente di aggiunta. Quando un cliente abilita la CA di protezione delle app, le applicazioni nel tenant di tale cliente che accedono alle risorse protette non saranno in grado di acquisire un token di accesso a meno che non supportino questa funzionalità.
Nota
Questa guida è suddivisa in diverse fasi distinte. Inizia esaminando la fase 1: pianifica l'integrazione.
Fase 6: Supporto CA per la protezione delle app
Obiettivi della fase
- Informazioni sulle diverse API che possono essere usate per supportare l'accesso condizionale di Protezione delle app nell'app iOS
- Integrare Protezione app Accesso condizionale all'app e agli utenti.
- Testare l'integrazione precedente con l'app e gli utenti.
Dipendenze
Oltre a Intune SDK, sono necessari questi due componenti per abilitare App Protection CA nell'app.
- App iOS Authenticator
- Libreria di autenticazione MSAL 1.0 o 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 a conoscenza di tre differenze di comportamento spiegate di seguito.
| Nuovo comportamento | Descrizione |
|---|---|
| App → ADAL/MSAL: acquisire token | Quando un'applicazione tenta di acquisire un token, deve essere pronta a ricevere un ERROR_SERVER_PROTECTION_POLICY_REQUIRED. L'app può ricevere questo errore durante il flusso iniziale di aggiunta dell'account o quando accede a un token in un punto successivo del ciclo di vita dell'applicazione. Quando l'app riceve questo errore, non le verrà assegnato un token di accesso e deve essere corretta per recuperare i dati del server. |
| App → Intune SDK: chiamare remediateComplianceForIdentity | Quando un'app riceve un ERROR_SERVER_PROTECTION_POLICY_REQUIRED da ADAL o MSALErrorServerProtectionPoliciesRequired da MSAL, deve chiamare [[IntuneMAMComplianceManager instance] remediateComplianceForIdentity] per consentire Intune di registrare l'app e applicare i criteri. L'app potrebbe essere riavviata durante la 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 entrare in uno stato conforme, l'applicazione deve chiamare la cancellazione selettiva per rimuovere qualsiasi contenuto aziendale. Se non è possibile raggiungere uno stato conforme, l'app dovrebbe visualizzare localizzato il messaggio di errore 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 delle app aggiungendo la variabile delle funzionalità client alla configurazione MSAL/ADAL. Sono necessari i seguenti valori: 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à dell'SDK MAM, è necessario eseguire la procedura seguente:
- Ottenere prima di tutto l'ID homeAccountId da userInfo[MSALHomeAccountIdKey] all'interno dell'oggetto MSALError restituito da MSAL quando segnala ERROR_SERVER_PROTECTION_POLICY_REQUIRED all'app.
- Il formato di homeAccountId è ObjectId.TenantId. Estrarre il valore ObjectId suddividendo la stringa in '.' e quindi usare tale valore per il parametro accountId nell'API di correzione remediateComplianceForAccountId.
Criteri di uscita
Configurazione di un utente di test per l'autorità di certificazione per la protezione delle app
- Accedi con le credenziali di amministratore a https://portal.azure.com.
- Selezionare Microsoft Entra IDAccesso>>condizionaleCrea nuovo criterio. Creare un nuovo criterio di accesso condizionale.
- Configurare i criteri di accesso condizionale impostando gli elementi seguenti:
- Compilazione del campo Nome .
- Abilitazione del criterio.
- Assegnare il criterio a un utente o un gruppo.
- Assegnare app cloud. Selezionare Includi>tutte le app cloud. Come indicato nell'avviso, prestare attenzione a non configurare in modo errato questa impostazione. Ad esempio, se escludessi tutte le app cloud, ti bloccheresti fuori dalla console.
- Concedere i controlli di accesso selezionando Controlli> di accessoConcedi accessoRichiedi criterio> 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 di gestione di app per dispositivi mobili.
Casi di test
| Caso di test | Come eseguire il test | Risultato atteso |
|---|---|---|
| MAM-CA sempre applicato | Assicurarsi che l'utente sia destinato ai criteri CA e MAM di Protezione delle app prima di eseguire la registrazione nell'app. | Verificare che l'app gestisca i casi di correzione descritti in precedenza e che possa ottenere un token di accesso. |
| MAM-CA applicato dopo la registrazione dell'utente | L'utente deve essere già connesso all'app, ma non destinato per la CA di protezione delle app. | Rivolgersi all'utente per la CA di protezione delle app nella console e verificare di gestire correttamente la correzione di MAM |
| Non conformità MAM-CA | Configurare un criterio CA per la protezione delle app, ma non assegnare un criterio MAM. | L'utente non deve essere in grado di acquisire un token di accesso. Ciò è utile per testare il modo in cui l'app gestisce i casi di errore IntuneMAMComplianceStatus. |
Operazioni successive
Dopo aver completato tutti i criteri di uscita precedenti, l'app è ora integrata correttamente con il supporto CA di Protezione delle app. Sezione successiva, Fase 7: Le funzionalità di visualizzazione Web possono essere necessarie o meno, a seconda del supporto dei criteri di protezione delle app desiderato dall'app.