Entitlements in iOS-ontwikkeling: wat is het, welke typen zijn er en hoe worden ze geconfigureerd

Auteur: IT Sectr Gepubliceerd: 2026-05-18 Leestijd: 8 min

Entitlements zijn digitale rechten en machtigingen die aan een app worden toegekend in de coderingsfase en bepalen de toegang tot beschermde functies van het Apple-besturingssysteem. In tegenstelling tot gebruikersmachtigingen worden Entitlements door het systeem gecontroleerd bij het starten van de app en kunnen niet door de gebruiker worden gewijzigd. Volgens Apple Developer Documentation (2025) is een correcte configuratie van Entitlements verplicht voor het gebruik van iCloud, Push-meldingen en App Groups. Entitlements zijn een sleutelelement van het beveiligingsmodel van iOS en macOS.

Belangrijkste punten

  • Entitlements — digitale machtigingen ingebed in de app-handtekening die toegang bepalen tot beschermde iOS- en macOS-functies.
  • Verschil met Permissions — Entitlements worden bij het starten door het systeem gecontroleerd en niet aan de gebruiker gevraagd; machtigingen worden tijdens runtime via systeemdialogen aangevraagd.
  • Capabilities — Xcode groepeert Entitlements in Capabilities: Push Notifications, iCloud, App Groups, In-App Purchase en andere.
  • Entitlements-bestand — (.entitlements) — XML-bestand in het Xcode-project met een lijst van rechten in sleutel-waarde-indeling, ondertekend door Apple.
  • Beveiliging — entitlements worden gecontroleerd in de code-ondertekeningsfase; vervalsing van entitlements in een geïnstalleerde app verbreekt de digitale handtekening en blokkeert het starten.

Wat zijn Entitlements?

Entitlements (uit het Engels vertaald — „rechten") — zijn een sleutel-waardepaar dat in de coderingshandtekening van de app wordt opgenomen tijdens de bouwfase en bepaalt tot welke systeemfuncties en gegevens de app toegang heeft. Entitlements zijn sinds de komst van iOS SDK in het Apple-beveiligingsmodel ingebouwd en zijn verplicht voor alle apps die via de App Store worden gedistribueerd.

Het concept van Entitlements verschilt van traditionele machtigingen (permissions) op Android. Terwijl Android-machtigingen aan de gebruiker worden gevraagd op het moment van eerste gebruik van een functie, worden Entitlements in iOS bij het starten van de app door het systeem gecontroleerd op basis van de digitale handtekening. De gebruiker kan een entitlement niet intrekken of wijzigen — dit recht wordt aan de ontwikkelaar verleend via App Store Connect en vastgelegd in het ondertekeningsprofiel.

Elke entitlement heeft een strikt gedefinieerd doel en formaat. Bijvoorbeeld, com.apple.security.application-groups staat toegang tot een gedeelde container toe voor een set apps van dezelfde ontwikkelaar, en aps-environment schakelt ondersteuning voor Push-meldingen in. Apple beoordeelt entitlement-verzoeken handmatig in het App Review-proces, wat misbruik van rechten voorkomt.

Typen Entitlements in iOS

Entitlements worden op basis van functioneel doel in verschillende categorieën ingedeeld. Systeemdiensten — iCloud, Push Notifications, Siri. Beveiliging en gegevens — Keychain Access Groups, App Groups, Data Protection. Netwerk en communicatie — Multipath TCP, VPN, Hotspot Configuration. Hardwaremogelijkheden — Camera, Microphone, Bluetooth (via gerelateerde capabilities).

Capabilities en service-Entitlements

Xcode groepeert gerelateerde entitlements in Capabilities — hoogwaardige schakelaars op het tabblad Signing & Capabilities. Het inschakelen van een Capability voegt automatisch de benodigde entitlements toe aan het .entitlements-bestand. Bijvoorbeeld, het inschakelen van de Capability Push Notifications voegt de entitlement aps-environment toe met de waarde development of production, en het inschakelen van iCloud voegt een set entitlements voor CloudKit en Key-Value storage toe.

Sommige capabilities vereisen extra configuratie op het Apple Developer-portaal. Bijvoorbeeld, voor App Groups moet een groeps-ID op het portaal worden geregistreerd, waarna deze beschikbaar wordt voor selectie in Xcode. Voor Push Notifications moet een APNs-sleutel of certificaat worden gegenereerd. Zonder deze voorbereidende stappen werkt de entitlement niet, zelfs niet met een correct .entitlements-bestand.

App Groups en Keychain Access

De entitlement com.apple.security.application-groups staat meerdere apps van dezelfde ontwikkelaar toe om een gedeelde container in het bestandssysteem te hebben. Dit wordt gebruikt voor het delen van gegevens tussen de hoofdapp en extensies (Widget, Watch App, Share Extension). Alle apps uit één groep kunnen bestanden lezen en schrijven in de gedeelde map /Library/Group Containers/.

Keychain Access Groups (sleutel keychain-access-groups) — nog een belangrijke entitlement die apps uit één groep gedeelde toegang tot Keychain-elementen geeft. Dit is cruciaal voor de implementatie van uniforme authenticatie: de gebruiker logt in bij één app en krijgt automatisch toegang tot hetzelfde account in een andere app zonder het wachtwoord opnieuw in te voeren.

Entitlements configureren

Het configureren van Entitlements gebeurt in Xcode op het tabblad Signing & Capabilities in de target-instellingen. De ontwikkelaar selecteert de gewenste Capabilities uit de lijst en Xcode maakt of werkt automatisch het .entitlements-bestand bij. Dit bestand wordt in het project opgeslagen in XML-formaat met een plist-structuur en bevat alle entitlement-sleutels voor deze target.

objective-c
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.application-groups</key>
    <array>
        <string>group.com.example.shared</string>
    </array>
    <key>aps-environment</key>
    <string>development</string>
    <key>keychain-access-groups</key>
    <array>
        <string>$(AppIdentifierPrefix)com.example.keychain</string>
    </array>
</dict>
</plist>

Bij het handmatig maken van een entitlement-bestand is het belangrijk om de sleutelnotatie en prefixen te volgen. Apple Entitlements gebruiken de omgekeerde domeinstijl (com.apple.*). Aangepaste entitlements voor eigen doeleinden zijn ook mogelijk, maar moeten op het ontwikkelaarsportaal worden geregistreerd. Xcode biedt automatisch aanvullen voor alle standaard entitlement-sleutels.

Gebruik de opdracht codesign in de macOS-terminal voor het debuggen van Entitlements. De opdracht codesign -d --entitlements :- <pad_naar_app> toont alle entitlements waarmee de app is ondertekend. Dit is handig voor het diagnosticeren van problemen: als een entitlement ontbreekt in de uitvoer, krijgt de app geen toegang tot de bijbehorende functie, ongeacht de instellingen in Xcode.

Handmatig een entitlement-bestand maken

Hoewel Xcode het entitlement-bestand automatisch genereert bij het inschakelen van Capabilities, maken ervaren ontwikkelaars het vaak handmatig aan of bewerken het voor fijnafstemming. Het bestand heeft de extensie .entitlements en het formaat plist (XML). Er kunnen aangepaste entitlement-sleutels aan worden toegevoegd die niet in de Xcode-interface worden weergegeven, of entitlements uit verschillende capabilities kunnen in één bestand worden gecombineerd.

Bij handmatig bewerken is het belangrijk om te letten op de syntactische correctheid van de XML. Een fout in de plist-structuur zorgt ervoor dat de entitlements niet worden toegepast bij het ondertekenen. Xcode controleert het .entitlements-bestand in de compilatiefase en geeft een foutmelding bij een onjuist formaat. Voor complexe projecten met meerdere targets en extensies wordt aanbevolen om gedeelde entitlement-sleutels in afzonderlijke bestanden op te slaan en deze te importeren via Build Settings.

cpp
// cli: controleer entitlements van geïnstalleerde app
codesign -d --entitlements :- /Applications/Safari.app

// Voorbeelduitvoer bevat lijst met actieve entitlements
<dict>
    <key>com.apple.security.ts.apple-wifi</key>
    <true/>
    <key>com.apple.security.network.client</key>
    <true/>
</dict>

Entitlements en app-beveiliging

Entitlements spelen een sleutelrol in het beveiligingsmodel van Apple. Omdat entitlements deel uitmaken van de digitale handtekening van de app, is vervalsing onmogelijk zonder de code opnieuw te ondertekenen. Apple controleert entitlements op meerdere niveaus: bij het bouwen ondertekent Xcode entitlements samen met het uitvoerbare bestand; bij installatie controleert het systeem de integriteit van de handtekening; bij het starten worden de entitlements opnieuw geverifieerd.

Een van de belangrijke beveiligingseisen is het principe van minimale entitlement. De ontwikkelaar moet alleen die entitlements inschakelen die daadwerkelijk in de app worden gebruikt. Overbodige entitlements vergroten het aanvalsoppervlak en kunnen leiden tot afwijzing van de app in App Review. Apple controleert expliciet de overeenstemming van entitlements met de functionaliteit van de app.

Sommige entitlements worden als gevoelig (sensitive) beschouwd en vereisen extra goedkeuring van Apple. Deze omvatten: com.apple.developer.healthkit (HealthKit), com.apple.developer.passkit (Wallet), com.apple.developer.authentication-services.authentication (Sign in with Apple) en com.apple.developer.nfc.readersession.formats (NFC). Om deze entitlements te verkrijgen, moet de noodzaak ervan worden gerechtvaardigd in het App Review-proces.

Bij het werken met entitlements is het belangrijk rekening te houden met de verschillen tussen iOS en macOS. Desktop-apps voor macOS (Sandboxed) hebben een bredere set entitlements in vergelijking met iOS. Bijvoorbeeld, de entitlement com.apple.security.temporary-exception.* staat tijdelijk omzeilen van de sandbox toe voor bepaalde bewerkingen — in iOS ontbreken dergelijke entitlements volledig.

Entitlements en Provisioning Profile

Entitlements zijn nauw verbonden met ondertekeningsprofielen (Provisioning Profiles). Een ondertekeningsprofiel is een bestand dat het ontwikkelaarscertificaat, de lijst met toegestane apparaten en de set entitlements voor een specifieke app koppelt. Bij installatie van de app vergelijkt het systeem de entitlements in de code met de entitlements in het ondertekeningsprofiel. Als een entitlement in de code aanwezig is maar in het profiel ontbreekt, krijgt de app geen toegang tot de bijbehorende functie.

Voor het diagnosticeren van problemen met entitlements controleert u eerst het ondertekeningsprofiel. Xcode genereert automatisch profielen op basis van de geselecteerde capability op het Apple Developer-portaal. Als een capability in Xcode is toegevoegd maar niet actief is op het portaal, zal de app crashen met een ondertekeningsfout bij het proberen te gebruiken van een beschermde functie.

Vaak gebruikte Entitlements

Laten we de meest gebruikte entitlements in iOS-ontwikkeling bekijken. aps-environment (Push Notifications) — verplicht voor het verzenden van pushmeldingen. com.apple.developer.ubiquity-container-identifiers (iCloud) — voor gegevenssynchronisatie via CloudKit. com.apple.security.application-groups — voor het delen van gegevens tussen apps en extensies. com.apple.developer.associated-domains — voor Universal Links en Handoff.

Voor elk van deze entitlements bestaat een strikte configuratieprocedure. Push Notifications vereisen het genereren van een APNs-sleutel op het Apple Developer-portaal en het inschakelen van de capability in Xcode. Daarna wordt de entitlement automatisch aan het .entitlements-bestand toegevoegd. iCloud vereist het configureren van een container op het portaal en het selecteren ervan in Xcode uit de vervolgkeuzelijst.

Associated Domains — een entitlement die de app aan een webdomein koppelt. Het wordt gebruikt voor Universal Links (diepe links die direct in de app worden geopend) en Handoff (verder werken op een ander Apple-apparaat). De waarde van de entitlement bevat een array van strings in het formaat applinks:example.com. Voor werking is het plaatsen van het bestand apple-app-site-association op de server vereist.

Tabel met populaire entitlements en hun doeleinden:

Entitlement KeyDoelVereist beoordeling
aps-environmentPush-meldingenNee
com.apple.developer.ubiquity-*iCloud-synchronisatieNee
application-groupsGedeelde app-containerNee
com.apple.developer.healthkitHealthKit-gegevensJa
com.apple.developer.nfc.*NFC-tag lezenJa
associated-domainsUniversal LinksNee

Veelgestelde vragen

Wat is het verschil tussen Entitlements en Permissions in iOS?

Entitlements zijn statische rechten ingebed in de app-handtekening en gecontroleerd door het systeem bij het starten. Permissions zijn dynamische machtigingen die tijdens runtime aan de gebruiker worden gevraagd (camera, locatie).

Hoe controleer ik Entitlements van een geïnstalleerde app?

Gebruik de opdracht codesign -d --entitlements in de macOS-terminal. Voor apps uit de App Store wordt de entitlement gecontroleerd via het hulpprogramma ProvisionQL of via Xcode Organizer.

Kan ik Entitlements wijzigen na publicatie?

Wijziging van entitlements vereist een nieuwe build en het opnieuw ondertekenen van de app. Als een entitlement goedkeuring van Apple vereist, moet u opnieuw door App Review gaan. Zonder opnieuw ondertekenen is wijziging van entitlements onmogelijk.

Wat is een Entitlements-bestand in Xcode?

Het .entitlements-bestand — een XML-document in plist-formaat dat in het Xcode-project wordt opgeslagen. Het bevat een gestructureerde lijst van alle entitlements van de app en wordt samen met het uitvoerbare bestand ondertekend.

Wat zijn Capabilities in Xcode?

Capabilities zijn hoogwaardige schakelaars op het tabblad Signing & Capabilities in Xcode. Het inschakelen van een capability voegt automatisch de bijbehorende entitlements toe aan het .entitlements-bestand en configureert het ondertekeningsprofiel.

Samenvatting

  • Entitlements — digitale rechten van een app om beschermde systeemfuncties van iOS en macOS te gebruiken, ingebed in de coderingshandtekening.
  • Verschil met machtigingen — entitlements worden bij het starten door het systeem gecontroleerd op basis van de handtekening, niet aan de gebruiker gevraagd en niet in te trekken.
  • Capabilities — groeperingen van entitlements in Xcode voor Push Notifications, iCloud, App Groups, In-App Purchase en andere functies.
  • Controle — via de codesign-opdracht in de macOS-terminal voor het diagnosticeren van geïnstalleerde app-rechten.
  • Gevoelige entitlements — HealthKit, NFC, PassKit vereisen extra goedkeuring van Apple via App Review.
  • Principe van minimale rechten — schakel alleen noodzakelijke entitlements in om het aanvalsoppervlak te verkleinen en de beoordeling te doorstaan.
  • Beveiliging — entitlements worden beschermd door een digitale handtekening; vervalsing is onmogelijk zonder de hele app opnieuw te ondertekenen.

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook