Intune App SDK för iOS – Stöd för App Protection CA (valfritt)
Villkorsstyrd åtkomst för appskydd blockerar åtkomsten till servertoken tills Intune har bekräftat att appskyddsprincipen har tillämpats. Den här funktionen kräver ändringar i dina lägg till användarflöden. När en kund aktiverar App Protection CA kan program i kundens klientorganisation som har åtkomst till skyddade resurser inte hämta en åtkomsttoken om de inte stöder den här funktionen.
Obs!
Den här guiden är uppdelad i flera olika steg. Börja med att granska steg 1: Planera integreringen.
Steg 6: Stöd för appskydds-CA
Steg Goals
- Lär dig mer om olika API:er som kan användas för att stödja villkorlig åtkomst för appskydd i iOS-appen
- Integrera villkorlig åtkomst för appskydd till din app och dina användare.
- Testa ovanstående integrering med din app och dina användare.
Beroenden
Förutom Intune SDK behöver du dessa två komponenter för att aktivera App Protection CA i din app.
- iOS Authenticator-app
- MSAL-autentiseringsbibliotek 1.0 eller senare
MAM-CA-reparationsflöde
MAM-kompatibilitetsprocessflöde
Nya API:er
De flesta av de nya API:erna finns i IntuneMAMComplianceManager.h. Appen måste vara medveten om tre skillnader i beteende som förklaras nedan.
Nytt beteende | Beskrivning |
---|---|
App → ADAL/MSAL: Hämta token | När ett program försöker hämta en token bör det vara förberett att ta emot en ERROR_SERVER_PROTECTION_POLICY_REQUIRED. Appen kan få det här felet under sitt första konto för att lägga till flöde eller vid åtkomst till en token senare i programmets livscykel. När appen får det här felet beviljas den inte någon åtkomsttoken och måste åtgärdas för att hämta serverdata. |
App → Intune SDK: Anropa remediateComplianceForIdentity | När en app tar emot en ERROR_SERVER_PROTECTION_POLICY_REQUIRED från ADAL eller MSALErrorServerProtectionPoliciesRequired från MSAL bör den anropa [[IntuneMAMComplianceManager-instans] remediateComplianceForIdentity] för att låta Intune registrera appen och tillämpa principen. Appen kan startas om under det här anropet. Om appen behöver spara tillstånd innan den startas om kan den göra det i restartApplication-ombudsmetoden i IntuneMAMPolicyDelegate. remediateComplianceForIdentity tillhandahåller alla funktioner i registerAndEnrollAccount och loginAndEnrollAccount. Därför behöver appen inte använda någon av dessa äldre API:er. |
Intune → App: Delegera åtgärdsmeddelande | När Intune har hämtat och tillämpat principer meddelar den appen om resultatet med hjälp av intuneMAMComplianceDelegate-protokollet. Mer information om hur appen ska hantera varje fel finns i IntuneMAMComplianceStatus i IntuneComplianceManager.h. I alla fall utom IntuneMAMComplianceCompliant har användaren ingen giltig åtkomsttoken. Om appen redan har hanterat innehåll och inte kan ange en kompatibel status bör programmet anropa selektiv rensning för att ta bort företagsinnehåll. Om vi inte kan nå ett kompatibelt tillstånd bör appen visa lokaliserade felmeddelandet och rubriksträngen som tillhandahålls av withErrorMessage och andErrorTitle. |
Exempel på metoden hasComplianceStatus för 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
Appar måste ange stöd för App Protection CA genom att lägga till klientkapacitetsvariabeln i MSAL/ADAL-konfigurationen. Följande värden krävs: claims = {"access_token":{"xms_cc":{"values":["protapp"]}}}
MSALPublicClientApplicationConfig-klassreferens (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)
Om du vill hämta Microsoft Entra objekt-ID för parametern accountId för API:erna för MAM SDK-efterlevnadsreparation måste du göra följande:
- Hämta först homeAccountId från userInfo[MSALHomeAccountIdKey] i MSALError-objektet som skickas tillbaka av MSAL när det rapporterar ERROR_SERVER_PROTECTION_POLICY_REQUIRED till appen.
- Det här homeAccountId är i formatet ObjectId.TenantId. Extrahera ObjectId-värdet genom att dela strängen på " och använd sedan det värdet för parametern accountId i remediation API remediateComplianceForAccountId.
Avslutsvillkor
Konfigurera en testanvändare för App Protection CA
- Logga in med dina administratörsautentiseringsuppgifter på https://portal.azure.com.
- Välj Microsoft Entra ID>Villkorlig åtkomst>Skapa ny princip. Skapa en ny princip för villkorsstyrd åtkomst.
- Konfigurera principen för villkorsstyrd åtkomst genom att ange följande objekt:
- Fyll i fältet Namn .
- Aktivera principen.
- Tilldela principen till en användare eller grupp.
- Tilldela molnappar. Välj Inkludera>alla molnappar. Var noga med att inte felkonfigurera den här inställningen som varningsanteckningar. Om du till exempel exkluderade alla molnappar skulle du låsa dig utanför konsolen.
- Bevilja åtkomstkontroller genom att välja Åtkomstkontroller>Bevilja åtkomst>Kräv appskyddsprincip.
- När du är klar med att konfigurera principen väljer du Skapa för att spara principen och tillämpa den.
- Aktivera principen.
- Du måste också se till att användarna är mål för MAM-principer.
Testfall
Testfall | Så testar man | Förväntat resultat |
---|---|---|
MAM-CA tillämpas alltid | Se till att användaren är mål för både appskydds-CA och MAM-princip innan du registrerar i din app. | Kontrollera att din app hanterar reparationsfallen som beskrivs ovan och att appen kan hämta en åtkomsttoken. |
MAM-CA tillämpas efter att användaren har registrerats | Användaren bör redan vara inloggad i appen, men inte vara mål för appskydds-CA:en. | Rikta in dig på användaren för appskydds-CA:en i konsolen och kontrollera att du hanterar MAM-reparationen korrekt |
MAM-CA-inkompatibilitet | Konfigurera en appskydds-CA-princip, men tilldela inte någon MAM-princip. | Användaren ska inte kunna hämta en åtkomsttoken. Detta är användbart för att testa hur din app hanterar intuneMAMComplianceStatus-felfall. |
Nästa steg
När du har slutfört alla avslutsvillkor ovan är appen nu integrerad med stöd för App Protection CA. Följande avsnitt, steg 7: Webbvisningsfunktioner kan behövas eller inte, beroende på appens önskade stöd för appskyddsprinciper.