Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Appskydd villkorsstyrd åtkomst blockerar åtkomst 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 programskyddscertifikatutfärdaren 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 integrationen.
Fas 6: Stöd för appskyddscertifikatutfärdare
Etappmål
- Läs mer om olika API:er som kan användas för att stödja villkorsstyrd åtkomst för appskydd i iOS-appen
- Integrera villkorsstyrd åtkomst för appskydd till din app och dina användare.
- Testa integreringen ovan med din app och dina användare.
Beroenden
Förutom Intune SDK behöver du dessa två komponenter för att aktivera programskyddscertifikatutfärdaren i din app.
- iOS Authenticator-app
- MSAL Authentication Library 1.0 eller senare
MAM-CA-reparationsflöde
Processflöde för MAM-efterlevnad
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 för att ta emot en ERROR_SERVER_PROTECTION_POLICY_REQUIRED. Appen kan ta emot det här felet under det första flödet för att lägga till kontot eller vid åtkomst till en token senare i programmets livscykel. När appen får det här felet beviljas den inte en å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 ska den anropa [[IntuneMAMComplianceManager instance] remediateComplianceForIdentity] så att Intune kan registrera appen och tillämpa principen. Appen kan startas om under det här samtalet. Om appen behöver spara tillståndet 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ågot av dessa äldre API:er. |
| Intune → App: Meddelande om ombudsåtgärd | När Intune har hämtat och tillämpat principer meddelar den appen om resultatet med hjälp av protokollet IntuneMAMComplianceDelegate. Se IntuneMAMComplianceStatus i IntuneComplianceManager.h för information om hur appen ska hantera varje fel. I samtliga fall utom IntuneMAMComplianceCompliant, har användaren inte en 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 allt företagsinnehåll. Om vi inte kan nå ett kompatibelt tillstånd ska appen visa lokaliserat felmeddelande och rubriksträng som tillhandahålls av withErrorMessage och andErrorTitle. |
Exempel för 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 appskydd CA genom att lägga till klientfunktioner som är variabla i deras MSAL/ADAL-konfiguration. Följande värden krävs: claims = {"access_token":{"xms_cc":{"values":["protapp"]}}}
Klassreferens för 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)
Om du vill hämta Microsoft Entra objekt-ID för parametern accountId för MAM SDK API: er för åtgärder för efterlevnad måste du utföra följande steg:
- 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.
- Detta 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 reparations-API:et remediateComplianceForAccountId.
Villkor för utträde
Konfigurera en testanvändare för programskyddscertifikatutfärdaren
- Logga in med dina administratörsuppgifter för att https://portal.azure.com.
- Välj villkorsstyrd åtkomst>för Microsoft Entra ID>Skapa ny princip. Skapa en ny princip för villkorsstyrd åtkomst.
- Konfigurera principen för villkorsstyrd åtkomst genom att ange följande:
- Fylla i fältet Namn .
- Aktivera principen.
- Tilldela principen till en användare eller grupp.
- Tilldela molnappar. Välj Inkludera>alla molnappar. Se till att du inte felkonfigurerar den här inställningen. Om du till exempel uteslöt alla molnappar skulle du låsa dig ute från 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 appskydd CA och MAM-princip innan du registrerar dig i appen. | Kontrollera att appen 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 ska redan vara inloggad i appen, men inte vara mål för appskyddscertifikatutfärdaren. | Rikta in dig på användaren för programskydds-CA i konsolen och kontrollera att du hanterar MAM-reparation korrekt |
| Bristande efterlevnad av MAM-CA | Konfigurera en princip för appskyddscertifikatutfärdare, men tilldela inte en 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 uppfyllt alla avslutningsvillkor ovan har appen nu integrerats med stödet för certifikatutfärdaren för appskydd. Det efterföljande avsnittet, steg 7: Webbvyfunktioner kanske krävs eller inte, beroende på appens önskade stöd för appskyddsprincip.