Fase 3: Intune SDK-integratie in uw iOS-app
Opmerking
Deze handleiding is onderverdeeld in verschillende fasen. Bekijk eerst De integratie plannen.
Fasedoelen
- Download de Intune App SDK.
- Meer informatie over welke bestanden zijn opgenomen in de Intune App SDK.
- Raadpleeg de Intune App SDK in uw toepassing.
- Controleer of de Intune App SDK correct is opgenomen in uw build.
- Registreer nieuwe accounts voor MAM-beheer na verificatie met MSAL.
- Als u bedrijfsgegevens wilt verwijderen, moet u de registratie van accounts bij afmelden ongedaan maken
- (Aanbevolen) Neem MAM-logboekregistratie op in uw app.
Vereisten
U hebt een macOS-computer nodig waarop Xcode 14.0 of hoger is geïnstalleerd.
Uw app moet zijn gericht op iOS 14.0 of hoger.
Bekijk de licentievoorwaarden voor de Intune App SDK voor iOS. Druk een kopie van de licentievoorwaarden voor uw records af en bewaar deze. Door de Intune App SDK voor iOS te downloaden en te gebruiken, gaat u akkoord met dergelijke licentievoorwaarden. Als u deze niet accepteert, gebruikt u de software niet.
Download de bestanden voor de Intune App SDK voor iOS op GitHub.
Wat is er in de SDK-opslagplaats?
IntuneMAMSwift.xcframework: het dynamische framework van de Intune App SDK. U wordt aangeraden dit framework te koppelen aan uw app/extensies om intune-clienttoepassingsbeheer in te schakelen. Sommige ontwikkelaars geven echter de voorkeur aan de prestatievoordelen van het statische framework (IntuneMAMStatic.xcframework). Zie hieronder.
IntuneMAMStatic.xcframework: het statische framework van de Intune App SDK. Ontwikkelaars kunnen ervoor kiezen om het statische framework te koppelen in plaats van het dynamische framework. Omdat de uitvoerbare code van een statisch framework tijdens het bouwen rechtstreeks wordt ingesloten in het binaire bestand van de app/extensie, zijn er enkele prestatievoordelen bij het starten van de statische bibliotheek. Als uw app echter extensies bevat, resulteert het koppelen van het statische framework aan de app en extensies in een grotere app-bundel, omdat de uitvoerbare code wordt ingesloten in elke binaire app/extensie. Wanneer u het dynamische framework gebruikt, kunnen apps en extensies daarentegen dezelfde binaire Intune SDK delen, wat resulteert in een kleinere app-grootte.
IntuneMAMSwiftStub.xcframework: het Intune App SDK Swift Stub-framework. Dit framework is een vereiste afhankelijkheid van zowel IntuneMAMSwift.xcframework als IntuneMAMStatic.xcframework die apps/extensies moeten koppelen.
IntuneMAMConfigurator: een hulpprogramma dat wordt gebruikt om info.plist van de app of extensie te configureren met de minimaal vereiste wijzigingen voor Intune-beheer. Afhankelijk van de functionaliteit van uw app of extensie, moet u mogelijk meer handmatige wijzigingen aanbrengen in de Info.plist.
libIntuneMAMSwift.xcframework: de statische bibliotheek van de Intune App SDK. Deze variant van de Intune MAM iOS SDK is afgeschaft en wordt in een toekomstige update verwijderd. U wordt aangeraden de statische bibliotheek niet te koppelen en in plaats daarvan uw app/extensies te koppelen aan het eerder genoemde dynamische framework (IntuneMAMSwift.xcframework) of het statische framework (IntuneMAMStatic.xcframework).
IntuneMAMResources.bundle: een resourcebundel die resources bevat waarop de SDK afhankelijk is. De resourcebundel is alleen vereist voor apps die de afgeschafte statische bibliotheek (libIntuneMAMSwift.xcframework) integreren en wordt in een toekomstige update verwijderd.
Hoe de Intune App SDK werkt
Het doel van de Intune App SDK voor iOS is om beheermogelijkheden toe te voegen aan iOS-toepassingen met minimale codewijzigingen. Hoe minder codewijzigingen, hoe minder time-to-market, maar zonder de consistentie en stabiliteit van uw mobiele toepassing te beïnvloeden.
Processtroom
In het volgende diagram ziet u de intune App SDK voor iOS-processtroom:
De SDK in uw mobiele app bouwen
Belangrijk
Intune brengt regelmatig updates uit voor de Intune App SDK. Controleer regelmatig de Intune App SDK voor iOS op updates en neem deze op in uw releasecyclus voor softwareontwikkeling om ervoor te zorgen dat uw apps de nieuwste instellingen voor app-beveiligingsbeleid ondersteunen.
Voer de volgende stappen uit om de Intune App SDK in te schakelen:
IntuneMAMSwift.xcframework
Koppelen aan ofIntuneMAMStatic.xcframework
aan uw doel: Sleep de xcframework-bundel naar de lijst Frameworks, Bibliotheken en Ingesloten inhoud van het projectdoel. Herhaal deze stappen voorIntuneMAMSwiftStub.xcframework
. Selecteer voor uw hoofd-app 'Insluiten & Aanmelden' in de kolom 'Insluiten' voor beide toegevoegde xcframeworks. Selecteer 'Niet insluiten' voor extensies.Voeg deze iOS-frameworks toe aan het project:
- MessageUI.framework
- Security.framework
- CoreServices.framework
- SystemConfiguration.framework
- libsqlite3.tbd
- libc++.tbd
- ImageIO.framework
- LocalAuthentication.framework
- AudioToolbox.framework
- QuartzCore.framework
- WebKit.framework
- MetricKit.framework
Schakel het delen van sleutelhangers in (als dit nog niet is ingeschakeld) door Mogelijkheden te kiezen in elk projectdoel en de schakeloptie Sleutelhanger delen in te schakelen. Het delen van sleutelhangers is vereist om door te gaan met de volgende stap.
Opmerking
Uw inrichtingsprofiel moet nieuwe waarden voor het delen van sleutelhangers ondersteunen. De sleutelhangertoegangsgroepen moeten een jokerteken ondersteunen. U kunt dit controleren door het bestand .mobileprovision te openen in een teksteditor, te zoeken naar sleutelhanger-access-groups en ervoor te zorgen dat u een jokerteken hebt. Bijvoorbeeld:
<key>keychain-access-groups</key> <array> <string>YOURBUNDLESEEDID.*</string> </array>
Nadat u het delen van sleutelhangers hebt ingeschakeld, volgt u de stappen om een afzonderlijke toegangsgroep te maken waarin de Intune App SDK de gegevens opslaat. U kunt een sleutelhangertoegangsgroep maken met behulp van de gebruikersinterface of met behulp van het rechtenbestand. Als u de gebruikersinterface gebruikt om de sleutelhangertoegangsgroep te maken, moet u deze stappen uitvoeren:
Als voor uw mobiele app geen toegangsgroepen voor sleutelhangers zijn gedefinieerd, voegt u de bundel-id van de app toe als de eerste groep.
Voeg de gedeelde sleutelhangergroep
com.microsoft.intune.mam
toe aan uw bestaande toegangsgroepen. De Intune App SDK gebruikt deze toegangsgroep om gegevens op te slaan.Voeg toe
com.microsoft.adalcache
aan uw bestaande toegangsgroepen.Als u het rechtenbestand rechtstreeks bewerkt, in plaats van de hierboven weergegeven Xcode-gebruikersinterface te gebruiken om de sleutelhangertoegangsgroepen te maken, prepeneert u de sleutelhangertoegangsgroepen met
$(AppIdentifierPrefix)
(Xcode verwerkt dit automatisch). Bijvoorbeeld:$(AppIdentifierPrefix)com.microsoft.intune.mam
$(AppIdentifierPrefix)com.microsoft.adalcache
Opmerking
Een rechtenbestand is een XML-bestand dat uniek is voor uw mobiele toepassing. Het wordt gebruikt om speciale machtigingen en mogelijkheden in uw iOS-app op te geven. Als uw app nog geen rechtenbestand had, moet het inschakelen van het delen van sleutelhangers (stap 3) ertoe hebben geleid dat Xcode er een heeft gegenereerd voor uw app. Zorg ervoor dat de bundel-id van de app de eerste vermelding in de lijst is.
Neem elk protocol op dat uw app doorgeeft
UIApplication canOpenURL
in de matrix van hetLSApplicationQueriesSchemes
bestand Info.plist van uw app. Voor elk protocol dat in deze matrix wordt vermeld, moet ook een kopie van het protocol worden toegevoegd aan-intunemam
de matrix. Bovendien moet ,http-intunemam
https-intunemam
, ,microsoft-edge-http-intunemam
,microsoft-edge-https-intunemam
smart-ns
,zips
lacoonsecurity
,wandera
,lookoutwork-ase
, ,betteractiveshield
skycure
, ,smsec
,mvisionmobile
,scmx
, enintunemam-mtd
worden toegevoegd aan de matrix. Als uw app het protocol mailto: gebruikt,ms-outlook-intunemam
moet deze ook worden toegevoegd aan de matrix. Sla uw wijzigingen op voordat u doorgaat met de volgende stap.Als de app onvoldoende ruimte heeft in de LSApplicationQueriesSchemes-lijst, kunnen de schema's '-intunemam' worden verwijderd voor apps waarvan bekend is dat ze ook de Intune MAM SDK implementeren. Wanneer de app 'scheme-intunemam' verwijdert uit de lijst LSApplicationQueriesSchemes,
canOpenURL()
kunnen er onjuiste antwoorden voor deze schema's worden geretourneerd. Om dit probleem op te lossen, moet de app in plaats daarvan dat schema aanroepen[IntuneMAMPolicy isURLAllowed:url isKnownManagedAppScheme:YES]
. Deze aanroep retourneertNO
als het beleid het openen van de URL blokkeert. Als deze waar retourneert, kan de app aanroepencanOpenURL()
met een lege identiteit om te bepalen of de URL kan worden geopend. Bijvoorbeeld:BOOL __block canOpen = NO; if([policy isURLAllowed:urlForKnownManagedApp isKnownManagedAppScheme:YES]) { [[IntuneMAMPolicyManager instance] setCurrentThreadAccountId:"" forScope:^{ canOpen = [[UIApplication sharedApplication] canOpenURL:urlForKnownManagedApp]; }]; }
Als uw app nog geen gebruikmaakt van FaceID, controleert u of de sleutel NSFaceIDUsageDescription Info.plist is geconfigureerd met een standaardbericht. Deze stap is vereist zodat iOS de gebruiker kan laten weten hoe de app FaceID wil gebruiken. Met een beleidsinstelling voor app-beveiliging in Intune kan FaceID worden gebruikt als een methode voor toegang tot apps wanneer deze is geconfigureerd door de IT-beheerder.
Gebruik het hulpprogramma IntuneMAMConfigurator dat is opgenomen in de SDK-opslagplaats om de configuratie van de Info.plist van uw app te voltooien. Het hulpprogramma heeft drie parameters:
Eigenschap Hoe te gebruiken -Ik <Path to the input plist>
- e <Path to the entitlements file>
- o (Optioneel) <Path to the output plist>
Als de parameter '-o' niet is opgegeven, wordt het invoerbestand ter plaatse gewijzigd. Het hulpprogramma is idempotent en moet opnieuw worden uitgevoerd wanneer er wijzigingen in de Info.plist of rechten van de app zijn aangebracht. U moet ook de nieuwste versie van het hulpprogramma downloaden en uitvoeren wanneer u de Intune SDK bijwerkt, voor het geval de configuratievereisten voor Info.plist zijn gewijzigd in de meest recente release.
Xcode-build-instellingen
Voor de app moet zowel 'Strip Swift Symbols' (STRIP_SWIFT_SYMBOLS) als 'Bitcode inschakelen' (ENABLE_BITCODE) zijn ingesteld op NEE.
Een bestandsextensie integreren
Bestandsextensies hebben bepaalde geheugenvereisten die de integratie van de volledige SDK bemoeilijken. Om het gemakkelijker te maken, is er een statische bibliotheek libIntuneMAMSwiftFileProvider.xcframework
die een uitgeklede versie van de SDK is, specifiek voor bestandsextensies. Let op: dit is voor het niet-UI-gedeelte van de extensie FileProvider. U moet de volledige SDK integreren in de ui-extensie van de bestandsextensie.
Volg de stappen voor het integreren van de SDK als een statische bibliotheek, zoals hierboven wordt weergegeven om een van deze bibliotheken te integreren met de extensie van de bestandsprovider. Zorg ervoor dat u de instelling opneemt ContainingAppBundleId
.
Een niet-gerepliceerde bestandsextensie integreren
Uw app gebruikt een niet-gerepliceerde bestandsprovider als deze het NSFileProviderExtension-protocol implementeert. Alle bestandsproviders die vóór iOS 16.0 zijn gemaakt, worden niet gerepliceerd.
In - startProvidingItemAtURL:completionHandler: controleer of u bestanden moet versleutelen met [[IntuneMAMPolicy-exemplaar]shouldFileProviderEncryptFiles]]. Gebruik encryptFile:forAccountId: API in IntuneMAMFileProtectionManager voor de daadwerkelijke bestandsversleuteling. Deel ook een kopie van het bestand wanneer versleuteling vereist is, omdat u geen versleutelde kopie van het bestand in uw cloudopslag wilt opslaan.
In - importDocumentAtURL:toParentItemIdentifier:completionHandler: controleer of het bestand is versleuteld met behulp van isFileEncrytped: API in IntuneMAMFileProtectionManager. Als het vervolgens ontsleutelt met decryptFile:toCopyPath: API van IntuneMAMFileProtectionManager. Controleer in apps met meerdere identiteiten ook op de API canReceiveSharedFile: in de IntuneMAMPolicy van de doeleigenaar om te zien of de eigenaar het bestand kan ontvangen.
Een gerepliceerde bestandsextensie integreren
Uw app gebruikt een gerepliceerde bestandsprovider als deze het protocol NSFileProviderReplicatedExtension implementeert (toegevoegd in iOS 16.0).
In - fetchContentsForItemWithIdentifier:version:request:completionHandler: controleer of u bestanden moet versleutelen met [[IntuneMAMPolicy-exemplaar]shouldFileProviderEncryptFiles]]. Gebruik encryptFile:forAccountId: API in IntuneMAMFileProtectionManager voor de daadwerkelijke bestandsversleuteling. Deel ook een kopie van het bestand wanneer versleuteling vereist is, omdat u geen versleutelde kopie van het bestand in uw cloudopslag wilt opslaan.
In - createItemBasedOnTemplate:fields:contents:options:request:completionHandler: controleer of het bestand is versleuteld met isFileEncrypted: API in IntuneMAMFileProtectionManager. Als het vervolgens ontsleutelt met decryptFile:toCopyPath: API van IntuneMAMFileProtectionManager. Controleer in apps met meerdere identiteiten ook op de API canReceiveSharedFile: in de IntuneMAMPolicy van de doeleigenaar om te zien of de eigenaar het bestand kan ontvangen.
Overal waar de gerepliceerde bestandsprovider een NSFileProviderItem maakt en doorgeeft aan het systeem, roept u de API protectFileProviderItem:forAccountId: van IntuneMAMFileProtectionManager aan met de eigenaar-id van het item. Afhankelijk van waar het NSFileProviderItem-object is gemaakt en behouden binnen uw extensie, moet u dit mogelijk doen in elk van de protocolmethoden van NSFileProviderReplicatedExtension.
Instellingen configureren voor de Intune App SDK
U kunt de IntuneMAMSettings-woordenlijst in het bestand Info.plist van de toepassing gebruiken om de Intune App SDK in te stellen en te configureren. Als de intuneMAMSettings-woordenlijst niet wordt weergegeven in het bestand Info.plist, moet u deze maken.
In de woordenlijst IntuneMAMSettings kunt u de volgende ondersteunde instellingen definiëren om de Intune App SDK te configureren.
Sommige van deze instellingen zijn mogelijk in de vorige secties besproken en sommige zijn niet van toepassing op alle apps.
Instelling | Type | Definitie | Vereist? |
---|---|---|---|
ADALClientId | Tekenreeks | De Microsoft Entra-client-id van de app. | Vereist voor alle apps. |
ADALAuthority | Tekenreeks | De Microsoft Entra-instantie van de app die in gebruik is. Gebruik uw eigen omgeving waarin Microsoft Entra-accounts zijn geconfigureerd. Zie Toepassingsconfiguratieopties voor meer informatie. | Vereist als de app een aangepaste Line-Of-Business-toepassing is die is gebouwd voor gebruik binnen één organisatie/Microsoft Entra-tenant. Als deze waarde ontbreekt, wordt de algemene Microsoft Entra-instantie gebruikt (die alleen wordt ondersteund voor toepassingen met meerdere tenants). |
ADALRedirectUri | Tekenreeks | De omleidings-URI van Microsoft Entra van de app. | ADALRedirectUri of ADALRedirectScheme is vereist voor alle apps. |
ADALRedirectScheme | Tekenreeks | Het Omleidingsschema voor Microsoft Entra ID van de app. Dit kan worden gebruikt in plaats van ADALRedirectUri als de omleidings-URI van de toepassing de indeling scheme://bundle_id heeft . |
ADALRedirectUri of ADALRedirectScheme is vereist voor alle apps. |
ADALLogOverrideDisabled | Booleaanse waarde | Hiermee geeft u op of de SDK alle MSAL-logboeken (inclusief MSAL-aanroepen van de app, indien aanwezig) naar het eigen logboekbestand routeren. De standaardwaarde is NEE. Stel in op JA als de app een eigen MSAL-logboekaanroepback instelt. | Facultatief. |
ADALCacheKeychainGroupOverride | Tekenreeks | Hiermee geeft u de sleutelhangergroep op die moet worden gebruikt voor de MSAL-cache, in plaats van 'com.microsoft.adalcache'. Houd er rekening mee dat dit niet het voorvoegsel app-id heeft. Dit wordt tijdens runtime voorafgegaan aan de opgegeven tekenreeks. | Facultatief. |
AppGroupIdentifiers | Matrix van tekenreeksen | Matrix van app-groepen uit de sectie rechten van de app com.apple.security.application-groups. | Vereist als de app toepassingsgroepen gebruikt. |
ContainingAppBundleId | Tekenreeks | Hiermee geeft u de bundel-id van de extensie met toepassing. | Vereist voor iOS-extensies. |
AutoEnrollOnLaunch | Booleaanse waarde | Hiermee geeft u op of de app automatisch moet worden ingeschreven bij het starten als een bestaande beheerde identiteit wordt gedetecteerd en dit nog niet heeft gedaan. De standaardwaarde is NEE. Opmerkingen: als er geen beheerde identiteit wordt gevonden of als er geen geldig token voor de identiteit beschikbaar is in de MSAL-cache, mislukt de inschrijvingspoging op de achtergrond zonder om referenties te vragen, tenzij de app MAMPolicyRequired ook heeft ingesteld op JA. |
Facultatief. Wordt standaard ingesteld op nee. |
MAMPolicyRequired | Booleaanse waarde | Hiermee geeft u op of het starten van de app wordt geblokkeerd als de app geen Intune-app-beveiligingsbeleid heeft. De standaardwaarde is NEE. Opmerkingen: apps kunnen niet worden verzonden naar de App Store met MAMPolicyRequired ingesteld op JA. Wanneer MAMPolicyRequired wordt ingesteld op JA, moet AutoEnrollOnLaunch ook worden ingesteld op JA. |
Facultatief. Wordt standaard ingesteld op nee. |
MAMPolicyWarnAbsent | Booleaanse waarde | Hiermee geeft u op of de app de gebruiker tijdens het starten waarschuwt als de app geen Intune-beleid voor app-beveiliging heeft. Opmerking: gebruikers mogen de app nog steeds zonder beleid gebruiken nadat ze de waarschuwing hebben genegeerd. |
Facultatief. Wordt standaard ingesteld op nee. |
MultiIdentity | Booleaanse waarde | Hiermee geeft u op of de app meerdere identiteiten kent. | Facultatief. Wordt standaard ingesteld op nee. |
SafariViewControllerBlockedOverride | Booleaanse waarde | Hiermee schakelt u de SafariViewController-hooks van Intune uit om MSAL-verificatie in te schakelen via SFSafariViewController, SFAuthSession of ASWebAuthSession. Opmerking: de activiteitsknopeigenschap SFSafariViewControllerConfiguration wordt niet ondersteund door de beheerde Safari View Controller van Intune. Een geconfigureerde activiteitsknop wordt alleen weergegeven in de SafariViewController als de weergave niet wordt beheerd en de SafariViewControllerBlockedOverride is ingesteld op ja. |
Facultatief. Wordt standaard ingesteld op nee. WAARSCHUWING: kan leiden tot gegevenslekken bij onjuist gebruik. Alleen inschakelen als dat absoluut noodzakelijk is. Zie Speciale overwegingen bij het gebruik van MSAL voor door de app geïnitieerde verificatie voor meer informatie. |
SplashIconFile SplashIconFile~ipad |
Tekenreeks | Hiermee geeft u het pictogram van het intune-welkomstpictogram (opstart) op. | Facultatief. |
SplashDuration | Nummer | De minimale hoeveelheid tijd, in seconden, dat het opstartscherm van Intune wordt weergegeven bij het starten van de toepassing. De standaardwaarde is 1.5. | Facultatief. |
BackgroundColor | Tekenreeks | Hiermee geeft u de achtergrondkleur op voor de ui-onderdelen van de Intune SDK. Accepteert een hexadecimale RGB-tekenreeks in de vorm van #XXXXXX, waarbij X kan variëren van 0-9 of A-F. Het hekje kan worden weggelaten. | Facultatief. De standaardinstelling is de achtergrondkleur van het systeem, die kan variëren tussen versies van iOS en afhankelijk van de instelling voor de donkere iOS-modus. |
Voorgrondkleur | Tekenreeks | Hiermee geeft u de voorgrondkleur op voor de ui-onderdelen van de Intune SDK, zoals tekstkleur. Accepteert een hexadecimale RGB-tekenreeks in de vorm van #XXXXXX, waarbij X kan variëren van 0-9 of A-F. Het hekje kan worden weggelaten. | Facultatief. De standaardinstelling is de kleur van het systeemlabel, die kan variëren tussen versies van iOS en afhankelijk van de instelling voor de donkere iOS-modus. |
AccentKleur | Tekenreeks | Hiermee geeft u de accentkleur op voor de ui-onderdelen van de Intune SDK, zoals de knopkleur en de markeringskleur van het pincodevak. Accepteert een hexadecimale RGB-tekenreeks in de vorm van #XXXXXX, waarbij X kan variëren van 0-9 of A-F. Het hekje kan worden weggelaten. | Facultatief. De standaardinstelling is systeemblauw. |
SecondaryBackgroundColor | Tekenreeks | Hiermee geeft u de secundaire achtergrondkleur voor de MTD-schermen op. Accepteert een hexadecimale RGB-tekenreeks in de vorm van #XXXXXX, waarbij X kan variëren van 0-9 of A-F. Het hekje kan worden weggelaten. | Facultatief. De standaardinstelling is wit. |
SecondaryForegroundColor | Tekenreeks | Hiermee geeft u de secundaire voorgrondkleur voor de MTD-schermen, zoals voetnootkleur. Accepteert een hexadecimale RGB-tekenreeks in de vorm van #XXXXXX, waarbij X kan variëren van 0-9 of A-F. Het hekje kan worden weggelaten. | Facultatief. De standaardinstelling is grijs. |
SupportsDarkMode | Booleaanse waarde | Hiermee geeft u op of het kleurenschema van de Gebruikersinterface van de Intune SDK de instelling voor de donkere systeemmodus moet observeren als er geen expliciete waarde is ingesteld voor BackgroundColor/ForegroundColor/AccentColor | Facultatief. De standaardinstelling is ja. |
MAMTelemetryDisabled | Booleaanse waarde | Hiermee geeft u op of de SDK geen telemetriegegevens naar de back-end verzendt. | Facultatief. Wordt standaard ingesteld op nee. |
MAMTelemetryUsePPE | Booleaanse waarde | Hiermee geeft u op of MAM SDK gegevens verzendt naar de back-end van PPE-telemetrie. Gebruik dit bij het testen van uw apps met Intune-beleid, zodat testtelemetriegegevens niet worden vermengd met klantgegevens. | Facultatief. Wordt standaard ingesteld op nee. |
MaxFileProtectionLevel | Tekenreeks | Hiermee kan de app het maximum NSFileProtectionType opgeven dat deze kan ondersteunen. Deze waarde overschrijft het beleid dat door de service wordt verzonden als het niveau hoger is dan wat de toepassing kan ondersteunen. Mogelijke waarden: NSFileProtectionComplete , NSFileProtectionCompleteUnlessOpen , NSFileProtectionCompleteUntilFirstUserAuthentication , NSFileProtectionNone . Opmerking: met het hoogste niveau voor bestandsbeveiliging (NSFileProtectionComplete ) zijn beveiligde bestanden alleen toegankelijk terwijl het apparaat is ontgrendeld. 10 seconden nadat het apparaat is vergrendeld, verliest de app de toegang tot beveiligde bestanden. In sommige gevallen kan dit leiden tot verlies van toegang tot interne onderdelen (zoals MySQL-databases), wat kan leiden tot onverwacht gedrag. Het wordt aanbevolen dat toepassingen die elementen van de gebruikersinterface van het vergrendelingsscherm presenteren, deze waarde instellen op NSFileProtectionCompleteUntilFirstUserAuthentication . |
Facultatief. De standaardinstelling is NSFileProtectionComplete . |
OpenInActionExtension | Booleaanse waarde | Ingesteld op JA voor Extensies openen in actie. Zie de sectie Gegevens delen via UIActivityViewController voor meer informatie. | |
WebViewHandledURLSchemes | Matrix van tekenreeksen | Hiermee geeft u de URL-schema's op die door de WebView van uw app worden verwerkt. | Vereist als uw app gebruikmaakt van een WebView die URL's verwerkt via koppelingen en/of JavaScript. |
DocumentBrowserFileCachePath | Tekenreeks | Als uw app de UIDocumentBrowserViewController gebruikt om door bestanden in verschillende bestandsproviders te bladeren, kunt u dit pad instellen ten opzichte van de basismap in de sandbox van de toepassing, zodat de Intune SDK ontsleutelde beheerde bestanden in die map kan neerzetten. |
Facultatief. De standaardinstelling is de /Documents/ map. |
VerboseLoggingEnabled | Booleaanse waarde | Als deze optie is ingesteld op JA, wordt intune aangemeld in de uitgebreide modus. | Facultatief. Standaard ingesteld op NEE |
FinishLaunchingAtStartup | Booleaanse waarde | Als de app wordt gebruikt [BGTaskScheduler registerForTaskWithIdentifier:] , moet deze instelling worden ingesteld op JA. |
Facultatief. Standaard ingesteld op NEE |
ValuesToScrubFromLogging | Matrix van tekenreeksen | Hiermee geeft u toepassingsconfiguratiewaarden op die moeten worden verwijderd uit de logboeken. De eigenschap valuesToScrubFromLogging in de klasse IntuneMAMSettings kan ook een matrix met tekenreeksen krijgen voor hetzelfde gedrag. | Facultatief. |
App-beveiligingsbeleid ontvangen
Overzicht
Apps moeten een inschrijvingsaanvraag initiëren bij de Intune MAM-service om intune-beveiligingsbeleid voor apps te ontvangen. Apps kunnen in het Intune-beheercentrum worden geconfigureerd voor het ontvangen van app-beveiligingsbeleid met of zonder apparaatinschrijving. Mobile Application Management (MAM) staat toe dat apps worden beheerd door Intune zonder dat het apparaat hoeft te worden ingeschreven bij Intune Mdm (Mobile Device Management). In beide gevallen is registratie bij de Intune MAM-service vereist om beleid te ontvangen.
Belangrijk
De Intune App SDK voor iOS maakt gebruik van 256-bits versleutelingssleutels wanneer versleuteling is ingeschakeld door app-beveiligingsbeleid. Alle apps moeten een huidige SDK-versie hebben om beveiligd gegevens delen toe te staan.
Apps die al gebruikmaken van ADAL of MSAL
Opmerking
Azure AD Authentication Library (ADAL) en Azure AD Graph API worden afgeschaft. Zie Uw toepassingen bijwerken om Microsoft Authentication Library (MSAL) en Microsoft Graph API te gebruiken voor meer informatie.
Apps die al gebruikmaken van MSAL moeten de registerAndEnrollAccountId
methode op het IntuneMAMEnrollmentManager
exemplaar aanroepen nadat de gebruiker is geverifieerd:
/*
* This method will add the account to the list of registered accounts.
* An enrollment request will immediately be started.
* @param accountId The Entra object ID of the account to be registered with the SDK
*/
(void)registerAndEnrollAccountId:(NSString *_Nonnull)accountId;
Bij geslaagde aanmelding stuurt MSAL het resultaat terug in het MSALResult-object. Gebruik tenantProfile.identifier in MSALResult als de parameter accountId voor de bovenstaande API.
Door de registerAndEnrollAccountId
methode aan te roepen, registreert de SDK het gebruikersaccount en probeert de app namens dit account in te schrijven. Als de inschrijving om welke reden dan ook mislukt, probeert de SDK de inschrijving 24 uur later automatisch opnieuw uit te proberen. Voor foutopsporing kan de app via een gemachtigde meldingen ontvangen over de resultaten van inschrijvingsaanvragen.
Nadat deze API is aangeroepen, kan de app gewoon blijven functioneren. Als de inschrijving slaagt, meldt de SDK de gebruiker dat een app opnieuw moet worden opgestart. Op dat moment kan de gebruiker de app onmiddellijk opnieuw opstarten.
[[IntuneMAMEnrollmentManager instance] registerAndEnrollAccountId:@"3ec2c00f-b125-4519-acf0-302ac3761822"];
Apps die geen gebruikmaken van ADAL of MSAL
Apps die de gebruiker niet aanmelden met behulp van ADAL of MSAL, kunnen nog steeds app-beveiligingsbeleid ontvangen van de Intune MAM-service door de API aan te roepen zodat de SDK die verificatie afhandelt. Apps moeten deze techniek gebruiken wanneer ze een gebruiker niet hebben geverifieerd met Microsoft Entra ID, maar nog steeds app-beveiligingsbeleid moeten ophalen om gegevens te beveiligen. Een voorbeeld is als er een andere verificatieservice wordt gebruikt voor app-aanmelding of als de app helemaal geen ondersteuning biedt voor aanmelden. Hiervoor kan de toepassing de methode op het loginAndEnrollAccount
IntuneMAMEnrollmentManager
exemplaar aanroepen:
/**
* Creates an enrollment request which is started immediately.
* If no token can be retrieved for the identity, the user will be prompted
* to enter their credentials, after which enrollment will be retried.
* @param identity The UPN of the account to be logged in and enrolled.
*/
(void)loginAndEnrollAccount: (NSString *)identity;
Door deze methode aan te roepen, vraagt de SDK de gebruiker om referenties als er geen bestaand token kan worden gevonden. De SDK probeert vervolgens de app in te schrijven bij de Intune MAM-service namens het opgegeven gebruikersaccount. De methode kan worden aangeroepen met 'nil' als de identiteit. In dat geval wordt de SDK ingeschreven bij de bestaande beheerde gebruiker op het apparaat (in het geval van MDM) of wordt de gebruiker om een gebruikersnaam gevraagd als er geen bestaande gebruiker wordt gevonden.
Als de inschrijving mislukt, moet de app overwegen deze API op een later tijdstip opnieuw aan te roepen, afhankelijk van de details van de fout. De app kan via een gemachtigde meldingen ontvangen over de resultaten van inschrijvingsaanvragen.
Nadat deze API is aangeroepen, kan de app gewoon blijven functioneren. Als de inschrijving slaagt, meldt de SDK de gebruiker dat een app opnieuw moet worden opgestart.
Zodra de app is beheerd, moet de waarde van de Entra-object-id worden opgevraagd met behulp van enrolledAccountId
in de IntuneMAMEnrollmentManager
. Gebruik dit voor alle MAM SDK-API's die de app gebruikt voor dit geregistreerde account.
Voorbeeld:
[[IntuneMAMEnrollmentManager instance] loginAndEnrollAccount:@"user@foo.com"];
Verificatie en inschrijving door Intune laten afhandelen bij het starten
Als u wilt dat de Intune SDK alle verificatie met ADAL/MSAL en inschrijving afhandelt voordat uw app is gestart en uw app altijd APP-beleid vereist, hoeft u geen API te gebruiken loginAndEnrollAccount
. U kunt de twee onderstaande instellingen eenvoudig instellen op JA in de woordenlijst IntuneMAMSettings in de Info.plist van de app.
Instelling | Type | Definitie |
---|---|---|
AutoEnrollOnLaunch | Booleaanse waarde | Hiermee geeft u op of de app automatisch moet worden ingeschreven bij het starten als een bestaande beheerde identiteit wordt gedetecteerd en dit nog niet heeft gedaan. De standaardwaarde is NEE. Opmerking: als er geen beheerde identiteit wordt gevonden of als er geen geldig token voor de identiteit beschikbaar is in de ADAL/MSAL-cache, mislukt de inschrijvingspoging op de achtergrond zonder om referenties te vragen, tenzij mamPolicyRequired ook is ingesteld op JA. |
MAMPolicyRequired | Booleaanse waarde | Hiermee geeft u op of het starten van de app wordt geblokkeerd als de app geen Intune-app-beveiligingsbeleid heeft. De standaardwaarde is NEE. Opmerking: apps kunnen niet worden verzonden naar de App Store met MAMPolicyRequired ingesteld op JA. Wanneer MAMPolicyRequired wordt ingesteld op JA, moet AutoEnrollOnLaunch ook worden ingesteld op JA. |
Als u deze optie voor uw app kiest, hoeft u uw app niet opnieuw te starten nadat u zich hebt ingeschreven.
Registratie van gebruikersaccounts ongedaan maken
Voordat een gebruiker is afgemeld bij een app, moet de app de registratie van de gebruiker bij de SDK ongedaan maken. Dit zorgt voor het volgende:
Er worden geen nieuwe pogingen meer uitgevoerd voor het account van de gebruiker.
App-beveiligingsbeleid wordt verwijderd.
Bedrijfsgegevens worden verwijderd als de app selectief wissen initieert (optioneel).
Voordat de gebruiker is afgemeld, moet de app de volgende methode voor het IntuneMAMEnrollmentManager
exemplaar aanroepen:
/*
* This method will remove the provided account from the list of
* registered accounts. Once removed, if the account has enrolled
* the application, the account will be un-enrolled.
* @note In the case where an un-enroll is required, this method will block
* until the Intune APP AAD token is acquired, then return. This method must be called before
* the user is removed from the application (so that required AAD tokens are not purged
* before this method is called).
* @param accountId The object ID of the account to be removed.
* @param doWipe If YES, a selective wipe if the account is un-enrolled
*/
(void)deRegisterAndUnenrollAccountId:(NSString *)accountId withWipe:(BOOL)doWipe;
Deze methode moet worden aangeroepen voordat de Microsoft Entra-tokens van het gebruikersaccount worden verwijderd. De SDK heeft de Microsoft Entra-token(s) van het gebruikersaccount nodig om namens de gebruiker specifieke aanvragen te doen aan de Intune MAM-service.
Als de app de bedrijfsgegevens van de gebruiker zelf verwijdert, kan de doWipe
vlag worden ingesteld op onwaar. Anders kan de APP de SDK een selectief wissen laten initiëren. Dit resulteert in een aanroep van de gemachtigde voor selectief wissen van de app.
Voorbeeld:
[[IntuneMAMEnrollmentManager instance] deRegisterAndUnenrollAccountId:@"3ec2c00f-b125-4519-acf0-302ac3761822" withWipe:YES];
Status-, resultaat- en foutopsporingsmeldingen
De app kan status-, resultaat- en foutopsporingsmeldingen ontvangen over de volgende aanvragen voor de Intune MAM-service:
- Inschrijvingsaanvragen
- Aanvragen voor beleidsupdates
- Aanvragen voor uitschrijving ongedaan maken
De meldingen worden weergegeven via gedelegeerde methoden in IntuneMAMEnrollmentDelegate.h
:
/**
* Called when an enrollment request operation is completed.
* @param status status object containing debug information
*/
(void)enrollmentRequestWithStatus:(IntuneMAMEnrollmentStatus *)status;
/**
* Called when a MAM policy request operation is completed.
* @param status status object containing debug information
*/
(void)policyRequestWithStatus:(IntuneMAMEnrollmentStatus *)status;
/**
* Called when a un-enroll request operation is completed.
* @Note: when a user is un-enrolled, the user is also de-registered with the SDK
* @param status status object containing debug information
*/
(void)unenrollRequestWithStatus:(IntuneMAMEnrollmentStatus *)status;
Deze delegeringsmethoden retourneren een IntuneMAMEnrollmentStatus
object met de volgende informatie:
- De accountId (object-id) van het account dat is gekoppeld aan de aanvraag
- De identiteit (UPN) van het account dat is gekoppeld aan de aanvraag
- Een statuscode die het resultaat van de aanvraag aangeeft
- Een fouttekenreeks met een beschrijving van de statuscode
- Een
NSError
object. Dit object wordt gedefinieerd inIntuneMAMEnrollmentStatus.h
, samen met de specifieke statuscodes die kunnen worden geretourneerd.
Voorbeeldcode
Hier volgen voorbeelden van implementaties van de gedelegeerde methoden:
- (void)enrollmentRequestWithStatus:(IntuneMAMEnrollmentStatus*)status
{
NSLog(@"enrollment result for identity %@ with status code %ld", status.accountId, (unsigned long)status.statusCode);
NSLog(@"Debug Message: %@", status.errorString);
}
- (void)policyRequestWithStatus:(IntuneMAMEnrollmentStatus*)status
{
NSLog(@"policy check-in result for identity %@ with status code %ld", status.accountId, (unsigned long)status.statusCode);
NSLog(@"Debug Message: %@", status.errorString);
}
- (void)unenrollRequestWithStatus:(IntuneMAMEnrollmentStatus*)status
{
NSLog(@"un-enroll result for identity %@ with status code %ld", status.accountId, (unsigned long)status.statusCode);
NSLog(@"Debug Message: %@", status.errorString);
}
Toepassing opnieuw opstarten
Wanneer een app voor het eerst MAM-beleid ontvangt, moet deze opnieuw worden opgestart om de vereiste hooks toe te passen. Om de app te laten weten dat opnieuw moet worden opgestart, biedt de SDK een gedelegeerde-methode in IntuneMAMPolicyDelegate.h
.
- (BOOL) restartApplication
De retourwaarde van deze methode vertelt de SDK of de toepassing de vereiste herstart moet verwerken:
Als true wordt geretourneerd, moet de toepassing het opnieuw opstarten afhandelen.
Als false wordt geretourneerd, start de SDK de toepassing opnieuw nadat deze methode is geretourneerd. In de SDK wordt onmiddellijk een dialoogvenster weergegeven waarin de gebruiker wordt aangegeven de toepassing opnieuw te starten.
Afsluitcriteria
Nadat u de build-invoegtoepassing hebt geconfigureerd of het opdrachtregelprogramma hebt geïntegreerd in uw buildproces, controleert u of deze wordt uitgevoerd:
- Zorg ervoor dat uw build wordt gecompileerd en gebouwd.
- Start uw gecompileerde app, meld u aan met een Microsoft Entra-gebruiker die niet is gericht op app-beveiligingsbeleid en controleer of de app werkt zoals verwacht.
- Meld u af en herhaal deze test met een Microsoft Entra-gebruiker die is gericht op app-beveiligingsbeleid en controleer of de app nu wordt beheerd door Intune en opnieuw wordt gestart.
Op dit punt in de integratie kan uw app nu app-beveiligingsbeleid ontvangen en afdwingen. Voer de volgende tests uit om de integratie te valideren.
Eerste beleidstoepassingstest
Voer eerst de volgende test uit om vertrouwd te raken met de volledige ervaring van de eindgebruiker van de beleidstoepassing in uw app:
- Maak een iOS-app-beveiligingsbeleid in het Microsoft Intune-beheercentrum. Configureer voor deze test het beleid:
- Laat onder Toegangsvereisten de standaardinstellingen staan. Met name 'Pincode voor Toegang' moet 'Vereisen' zijn.
- Zorg ervoor dat het app-beveiligingsbeleid is gericht op uw toepassing. Mogelijk moet u de bundel-id van de toepassing handmatig toevoegen in de wizard voor het maken van beleid.
- Wijs het app-beveiligingsbeleid toe aan een gebruikersgroep die uw testaccount bevat.
- Installeer uw toepassing.
- Meld u aan bij uw toepassing met uw testaccount waarop app-beveiligingsbeleid is gericht.
- Controleer of u wordt gevraagd om een door Intune beheerd scherm en bevestig dat de app opnieuw wordt gestart door de prompt. Dit scherm geeft aan dat de SDK het beleid voor dit account heeft opgehaald.
- Maak een pincode wanneer u wordt gevraagd een app-pincode in te stellen.
- Meld het beheerde account uit uw toepassing.
- Navigeer door uw toepassing en controleer of uw app werkt zoals verwacht, indien mogelijk zonder u aan te melden.
Deze lijst met stappen is een *bare minimum-test om te controleren of uw app het account correct registreert, de verificatie-callback registreert en de registratie van het account ongedaan maakt. Voer de volgende tests uit om grondiger te valideren hoe andere instellingen voor app-beveiligingsbeleid het gedrag van uw toepassing wijzigen.
Volgende stappen
Nadat u alle afsluitcriteria hebt voltooid, gaat u verder met Fase 4: Functies voor app-deelname.