Entitlements az iOS-fejlesztésben: mi ez, milyen típusai vannak és hogyan konfigurálhatók

Szerző: IT Sectr Megjelenés: 2026-05-18 Olvasási idő: 8 perc

Az Entitlements olyan digitális jogok és engedélyek, amelyeket az alkalmazás a kód aláírásának szakaszában kap, és meghatározzák a hozzáférést az Apple operációs rendszer védett funkcióihoz. A felhasználói engedélyektől eltérően az Entitlements-eket a rendszer az alkalmazás indításakor ellenőrzi, és a felhasználó nem módosíthatja azokat. A Apple Developer Documentation (2025) szerint az Entitlements helyes konfigurációja kötelező az iCloud, a Push értesítések és az App Groups használatához. Az Entitlements az iOS és macOS biztonsági modelljének kulcseleme.

Főbb pontok

  • Entitlements — az alkalmazás aláírásába beágyazott digitális engedélyek, amelyek meghatározzák a védett iOS és macOS funkciókhoz való hozzáférést.
  • Különbség a Permissions-től — az Entitlements-eket a rendszer indításkor ellenőrzi, és nem kéri a felhasználótól; az engedélyeket futásidőben kell kérni rendszerpárbeszédpaneleken keresztül.
  • Capabilities — az Xcode az Entitlements-eket Capabilities-be csoportosítja: Push Notifications, iCloud, App Groups, In-App Purchase és mások.
  • Entitlements File — (.entitlements) — XML fájl az Xcode projektben, amely kulcs-érték formátumban tartalmazza a jogok listáját, az Apple által aláírva.
  • Biztonság — az entitlements-eket a kód aláírásának szakaszában ellenőrzik; a telepített alkalmazásban lévő entitlements-ek meghamisítása megtöri a digitális aláírást és blokkolja az indítást.

Mik az Entitlements?

Az Entitlements (angol fordításban — „jogosultságok") — egy kulcs-érték pár, amely az alkalmazás kód aláírásába kerül az építési szakaszban, és meghatározza, hogy az alkalmazás mely rendszerfunkciókhoz és adatokhoz férhet hozzá. Az Entitlements az iOS SDK megjelenése óta be vannak építve az Apple biztonsági modelljébe, és kötelezőek az App Store-on keresztül terjesztett összes alkalmazás számára.

Az Entitlements koncepciója eltér a hagyományos engedélyektől (permissions) Androidon. Míg az Android-engedélyeket a felhasználótól kérik a funkció első használatakor, addig az iOS-ben az Entitlements-eket a rendszer az alkalmazás indításakor ellenőrzi a digitális aláírás alapján. A felhasználó nem vonhatja vissza vagy változtathatja meg az entitlement-et — ezt a jogot a fejlesztő kapja az App Store Connect-en keresztül, és az aláírási profilban rögzítik.

Minden entitlement-nek szigorúan meghatározott célja és formátuma van. Például a com.apple.security.application-groups engedélyezi a hozzáférést egy megosztott tárolóhoz egy fejlesztő alkalmazáskészlete számára, a aps-environment pedig bekapcsolja a Push értesítések támogatását. Az Apple manuálisan felülvizsgálja az entitlement-kérelmeket az App Review folyamatában, ami megakadályozza a jogokkal való visszaélést.

Entitlements típusai iOS-ben

Az Entitlements-ek funkcionális cél szerint több kategóriába sorolhatók. Rendszerszolgáltatások — iCloud, Push Notifications, Siri. Biztonság és adatok — Keychain Access Groups, App Groups, Data Protection. Hálózat és kommunikáció — Multipath TCP, VPN, Hotspot Configuration. Hardveres képességek — Camera, Microphone, Bluetooth (kapcsolódó capabilities-en keresztül).

Capabilities és szolgáltatás Entitlements

Az Xcode a kapcsolódó entitlements-eket Capabilities-be csoportosítja — magas szintű kapcsolók a Signing & Capabilities lapon. Egy Capability bekapcsolása automatikusan hozzáadja a szükséges entitlements-eket a .entitlements fájlhoz. Például a Push Notifications Capability bekapcsolása hozzáadja az aps-environment entitlement-et development vagy production értékkel, az iCloud bekapcsolása pedig entitlements-készletet ad hozzá a CloudKit és Key-Value storage számára.

Néhány capabilities további konfigurációt igényel az Apple Developer portálon. Például az App Groups-hoz regisztrálni kell egy csoportazonosítót a portálon, ami után elérhetővé válik az Xcode-ban való kiválasztáshoz. A Push Notifications-hoz APNs-kulcsot vagy tanúsítványt kell generálni. Ezen előkészítő lépések nélkül az entitlement nem fog működni, még egy helyes .entitlements fájl esetén sem.

App Groups és Keychain Access

A com.apple.security.application-groups entitlement lehetővé teszi, hogy egy fejlesztő több alkalmazása közös tárolóval rendelkezzen a fájlrendszerben. Ez az adatok megosztására szolgál a fő alkalmazás és a bővítmények között (Widget, Watch App, Share Extension). Egy csoportba tartozó összes alkalmazás olvashat és írhat fájlokat a /Library/Group Containers/ közös könyvtárban.

A Keychain Access Groups (kulcs keychain-access-groups) — egy másik fontos entitlement, amely lehetővé teszi az egy csoportba tartozó alkalmazások számára a Keychain elemekhez való közös hozzáférést. Ez kritikus fontosságú az egységes hitelesítés megvalósításához: a felhasználó bejelentkezik az egyik alkalmazásba, és automatikusan hozzáfér ugyanahhoz a fiókhoz egy másik alkalmazásban anélkül, hogy újra meg kellene adnia a jelszót.

Entitlements konfigurálása

Az Entitlements konfigurálása az Xcode-ban a Signing & Capabilities lapon történik a target beállításaiban. A fejlesztő kiválasztja a szükséges Capabilities-eket a listából, és az Xcode automatikusan létrehozza vagy frissíti a .entitlements fájlt. Ez a fájl a projektben XML formátumban, plist struktúrával tárolódik, és tartalmazza az összes entitlement kulcsot ehhez a target-hez.

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>

Az entitlement fájl manuális létrehozásakor fontos betartani a kulcsformátumot és az előtagokat. Az Apple Entitlements fordított domain stílust használ (com.apple.*). Egyéni célokra szánt entitlements-ek is lehetségesek, de regisztrálni kell őket a fejlesztői portálon. Az Xcode automatikus kiegészítést biztosít az összes szabványos entitlement kulcshoz.

Az Entitlements hibakereséséhez használja a codesign parancsot a macOS terminálban. A codesign -d --entitlements :- <alkalmazás_útvonala> parancs megjeleníti az összes entitlement-et, amellyel az alkalmazást aláírták. Ez hasznos a problémák diagnosztizálásához: ha egy entitlement hiányzik a kimenetből, az alkalmazás nem fog hozzáférni a megfelelő funkcióhoz, függetlenül az Xcode-beli beállításoktól.

Entitlement fájl manuális létrehozása

Bár az Xcode automatikusan generálja az entitlement fájlt a Capabilities bekapcsolásakor, a tapasztalt fejlesztők gyakran manuálisan hozzák létre vagy szerkesztik a finomhangoláshoz. A fájl .entitlements kiterjesztéssel és plist (XML) formátummal rendelkezik. Lehetőség van egyéni entitlement kulcsok hozzáadására, amelyek nem jelennek meg az Xcode felületén, vagy különböző capabilities-ből származó entitlements-ek egyesítésére egy fájlban.

Kézi szerkesztéskor fontos figyelni az XML szintaktikai helyességére. A plist struktúrában lévő hiba miatt az entitlements-ek nem lesznek alkalmazva az aláíráskor. Az Xcode ellenőrzi a .entitlements fájlt a fordítási szakaszban, és hibát jelez helytelen formátum esetén. Összetett, több target-tel és bővítménnyel rendelkező projektek esetén ajánlott a közös entitlement kulcsokat külön fájlokban tárolni, és azokat a Build Settings-en keresztül importálni.

cpp
// cli: telepített alkalmazás entitlements-einek ellenőrzése
codesign -d --entitlements :- /Applications/Safari.app

// Példa kimenet az aktív entitlements-ek listáját tartalmazza
<dict>
    <key>com.apple.security.ts.apple-wifi</key>
    <true/>
    <key>com.apple.security.network.client</key>
    <true/>
</dict>

Entitlements és alkalmazásbiztonság

Az Entitlements kulcsszerepet játszanak az Apple biztonsági modelljében. Mivel az entitlements-ek az alkalmazás digitális aláírásának részét képezik, meghamisításuk lehetetlen a kód újraírása nélkül. Az Apple több szinten ellenőrzi az entitlements-eket: az építéskor az Xcode aláírja az entitlements-eket a végrehajtható fájllal együtt; telepítéskor a rendszer ellenőrzi az aláírás integritását; indításkor újra ellenőrzi az entitlements-eket.

Az egyik fontos biztonsági követelmény a minimális entitlement elve. A fejlesztőnek csak azokat az entitlements-eket szabad bekapcsolnia, amelyeket ténylegesen használ az alkalmazásban. A felesleges entitlements-ek növelik a támadási felületet, és az alkalmazás elutasításához vezethetnek az App Review során. Az Apple kifejezetten ellenőrzi az entitlements-ek és az alkalmazás funkcionalitásának összhangját.

Néhány entitlement érzékeny (sensitive) besorolású, és az Apple további jóváhagyását igényli. Ezek közé tartozik: com.apple.developer.healthkit (HealthKit), com.apple.developer.passkit (Wallet), com.apple.developer.authentication-services.authentication (Sign in with Apple) és com.apple.developer.nfc.readersession.formats (NFC). Ezen entitlements-ek megszerzéséhez indokolni kell szükségességüket az App Review folyamatában.

Az entitlements-ekkel való munka során fontos figyelembe venni az iOS és macOS közötti különbségeket. A macOS asztali alkalmazásai (Sandboxed) szélesebb entitlements-készlettel rendelkeznek az iOS-hez képest. Például a com.apple.security.temporary-exception.* entitlement lehetővé teszi a sandbox ideiglenes megkerülését bizonyos műveletekhez — iOS-ben ilyen entitlements-ek egyáltalán nem léteznek.

Entitlements és Provisioning Profile

Az Entitlements szorosan kapcsolódnak az aláírási profilokhoz (Provisioning Profiles). Az aláírási profil egy olyan fájl, amely összeköti a fejlesztői tanúsítványt, az engedélyezett eszközök listáját és az entitlements-készletet egy adott alkalmazáshoz. Az alkalmazás telepítésekor a rendszer összehasonlítja a kódban lévő entitlements-eket az aláírási profilban lévő entitlements-ekkel. Ha egy entitlement szerepel a kódban, de hiányzik a profilból, az alkalmazás nem fog hozzáférni a megfelelő funkcióhoz.

Az entitlements-ekkel kapcsolatos problémák diagnosztizálásához először ellenőrizze az aláírási profilt. Az Xcode automatikusan profilokat generál az Apple Developer portálon kiválasztott capability alapján. Ha egy capability-t hozzáadtak az Xcode-ban, de nem aktív a portálon, az alkalmazás aláírási hibával fog összeomlani, amikor egy védett funkciót próbál használni.

Gyakran használt Entitlements

Tekintsük át a leggyakrabban használt entitlements-eket az iOS-fejlesztésben. aps-environment (Push Notifications) — kötelező a push értesítések küldéséhez. com.apple.developer.ubiquity-container-identifiers (iCloud) — adatszinkronizáláshoz a CloudKit-en keresztül. com.apple.security.application-groups — adatok megosztásához alkalmazások és bővítmények között. com.apple.developer.associated-domains — Universal Links és Handoff funkciókhoz.

Minden egyes ilyen entitlement-hez szigorú konfigurációs eljárás tartozik. Push Notifications APNs-kulcs generálását igényli az Apple Developer portálon és a capability bekapcsolását az Xcode-ban. Ezt követően az entitlement automatikusan hozzáadódik a .entitlements fájlhoz. Az iCloud megköveteli a tároló konfigurálását a portálon és annak kiválasztását az Xcode-ban a legördülő listából.

Associated Domains — entitlement, amely az alkalmazást egy webdomainhez kapcsolja. Universal Links (az alkalmazásban közvetlenül megnyíló mélyhivatkozások) és Handoff (munka folytatása másik Apple eszközön) funkciókhoz használatos. Az entitlement értéke stringek tömbjét tartalmazza applinks:example.com formátumban. A működéshez az apple-app-site-association fájl elhelyezése szükséges a szerveren.

A népszerű entitlements-ek és céljaik táblázata:

Entitlement KeyCélFelülvizsgálatot igényel
aps-environmentPush értesítésekNem
com.apple.developer.ubiquity-*iCloud szinkronizálásNem
application-groupsMegosztott alkalmazástárolóNem
com.apple.developer.healthkitHealthKit adatokIgen
com.apple.developer.nfc.*NFC címkék olvasásaIgen
associated-domainsUniversal LinksNem

Gyakran Ismételt Kérdések

Miben különböznek az Entitlements-ek a Permissions-től iOS-ben?

Az Entitlements — statikus jogok, amelyek az alkalmazás aláírásába vannak ágyazva, és a rendszer indításkor ellenőrzi őket. A Permissions — dinamikus engedélyek, amelyeket futásidőben kérnek a felhasználótól (kamera, helymeghatározás).

Hogyan ellenőrizhetők a telepített alkalmazás Entitlements-ei?

Használja a codesign -d --entitlements parancsot a macOS terminálban. Az App Store-ból származó alkalmazások esetén az entitlement a ProvisionQL segédprogramon vagy az Xcode Organizeren keresztül ellenőrizhető.

Megváltoztathatók az Entitlements-ek a közzététel után?

Az entitlements-ek módosítása új build-et és az alkalmazás újraaláírását igényli. Ha az entitlement az Apple jóváhagyását igényli, újra át kell esni az App Review-on. Újraaláírás nélkül az entitlements módosítása lehetetlen.

Mi az Entitlements File az Xcode-ban?

A .entitlements fájl — egy plist formátumú XML dokumentum, amely az Xcode projektben tárolódik. Tartalmazza az alkalmazás összes entitlement-jének strukturált listáját, és a végrehajtható fájllal együtt írják alá.

Mik a Capabilities az Xcode-ban?

Capabilities — magas szintű kapcsolók az Xcode Signing & Capabilities lapján. Egy capability bekapcsolása automatikusan hozzáadja a megfelelő entitlements-eket a .entitlements fájlhoz és konfigurálja az aláírási profilt.

Összefoglalás

  • Entitlements — az alkalmazás digitális jogai a védett iOS és macOS rendszerfunkciók használatához, a kód aláírásába ágyazva.
  • Különbség az engedélyektől — az entitlements-eket a rendszer indításkor ellenőrzi az aláírás alapján, nem kérik a felhasználótól és nem vonhatók vissza.
  • Capabilities — entitlements csoportosítások az Xcode-ban Push Notifications, iCloud, App Groups, In-App Purchase és más funkciók számára.
  • Ellenőrzés — a codesign parancson keresztül a macOS terminálban a telepített alkalmazás jogainak diagnosztizálásához.
  • Érzékeny entitlements — HealthKit, NFC, PassKit az Apple további jóváhagyását igénylik az App Review-n keresztül.
  • A minimális jogok elve — csak a szükséges entitlements-eket kapcsolja be a támadási felület csökkentése és a felülvizsgálat sikeres teljesítése érdekében.
  • Biztonság — az entitlements-eket digitális aláírás védi; meghamisításuk lehetetlen a teljes alkalmazás újraaláírása nélkül.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is