Hatókörök és engedélyek a Microsoft Identitásplatform
A Microsoft Identitásplatform implementálja az OAuth 2.0 engedélyezési protokollt. Az OAuth 2.0 egy olyan módszer, amellyel egy külső alkalmazás hozzáférhet a webalapú erőforrásokhoz egy felhasználó nevében. Minden, a Microsoft Identitásplatform integrálható webes erőforrás rendelkezik erőforrás-azonosítóval vagy alkalmazásazonosító URI-val.
Ebben a cikkben megismerheti az identitásplatform hatóköreit és engedélyeit.
Az alábbi lista néhány példát mutat be a Microsoft által üzemeltetett erőforrásokra:
- Microsoft Graph:
https://graph.microsoft.com
- Microsoft 365 Mail API:
https://outlook.office.com
- Azure Key Vault:
https://vault.azure.net
Ugyanez vonatkozik minden olyan külső erőforrásra, amely integrálva van a Microsoft Identitásplatform. Ezen erőforrások bármelyike meghatározhat egy engedélykészletet is, amellyel az erőforrás funkcióit kisebb adattömbökre oszthatja. A Microsoft Graph például többek között az alábbi feladatok elvégzésére vonatkozó engedélyekkel rendelkezik:
- Felhasználó naptárának olvasása
- Írás a felhasználó naptárában
- E-mail küldése felhasználóként
Az ilyen típusú engedélydefiníciók miatt az erőforrás részletes vezérléssel rendelkezik az adatai és az API-funkciók nyilvánosságra kerülése felett. Egy harmadik féltől származó alkalmazás kérheti ezeket az engedélyeket a felhasználóktól és rendszergazdáktól, akiknek jóvá kell hagyniuk a kérést, mielőtt az alkalmazás hozzáférhet az adatokhoz, vagy eljárhatnak egy felhasználó nevében.
Ha egy erőforrás funkciói kis engedélykészletekbe vannak osztva, külső alkalmazások hozhatók létre, hogy csak azokat az engedélyeket kérjék le, amelyekre szükségük van a funkciójuk végrehajtásához. A felhasználók és a rendszergazdák tudják, hogy milyen adatokhoz férhetnek hozzá az alkalmazás. És biztosak lehetnek abban, hogy az alkalmazás nem rosszindulatú szándékkal viselkedik. A fejlesztőknek mindig be kell tartaniuk a minimális jogosultság elvét, és csak az alkalmazásuk működéséhez szükséges engedélyeket kell kérniük.
Az OAuth 2.0-ban az ilyen típusú engedélykészleteket hatóköröknek nevezzük. Ezeket gyakran engedélyeknek is nevezik. A Microsoft Identitásplatform egy engedély sztringértékként jelenik meg. Az alkalmazás a lekérdezési paraméterben megadott engedély megadásával kéri le a scope
szükséges engedélyeket. Az identitásplatform számos jól definiált OpenID Connect-hatókört és erőforrás-alapú engedélyt támogat (az egyes engedélyeket az erőforrás azonosítójának vagy alkalmazásazonosítójának URI-jának hozzáfűzésével jelzik). Az engedélysztring https://graph.microsoft.com/Calendars.Read
használatával például engedélyt kérhet a felhasználók naptárainak olvasására a Microsoft Graphban.
Az engedélyezési kiszolgálóhoz érkező kérésekben a Microsoft Identitásplatform esetében, ha az erőforrás-azonosító nem szerepel a hatókörparaméterben, akkor az erőforrás a Microsoft Graph lesz. Például a scope=User.Read
egyenértékű a következővel: https://graph.microsoft.com/User.Read
.
Rendszergazda által korlátozott engedélyek
A Microsoft Identitásplatform engedélyei rendszergazdai korlátozásra állíthatók be. Például számos magasabb jogosultságú Microsoft Graph-engedély rendszergazdai jóváhagyást igényel. Ha az alkalmazás rendszergazda által korlátozott engedélyeket igényel, a szervezet rendszergazdájának hozzá kell adnia ezeket a hatóköröket a szervezet felhasználói nevében. Az alábbi szakasz példákat mutat be az ilyen típusú engedélyekre:
User.Read.All
: Az összes felhasználó teljes profiljának olvasásaDirectory.ReadWrite.All
: Adatok írása egy szervezet címtárábaGroups.Read.All
: Egy szervezet címtárában lévő összes csoport beolvasása
Feljegyzés
A Microsoft Identitásplatform engedélyezési, jogkivonati vagy jóváhagyási végpontjaira irányuló kérelmekben, ha az erőforrás-azonosító nem szerepel a hatókörparaméterben, akkor az erőforrás a Microsoft Graph lesz. Például a scope=User.Read
egyenértékű a következővel: https://graph.microsoft.com/User.Read
.
Bár a fogyasztói felhasználók hozzáférést adhatnak az alkalmazásoknak az ilyen típusú adatokhoz, a szervezeti felhasználók nem adhatnak hozzáférést ugyanahhoz a bizalmas vállalati adatkészlethez. Ha az alkalmazás hozzáférést kér egy szervezeti felhasználótól ezen engedélyek egyikéhez, a felhasználó hibaüzenetet kap, amely szerint nem jogosult az alkalmazás engedélyeinek jóváhagyására.
Ha az alkalmazás alkalmazásengedélyeket kér, és egy rendszergazda megadja ezeket az engedélyeket, ez a támogatás nem történik meg egyetlen adott felhasználó nevében sem. Ehelyett az ügyfélalkalmazás közvetlenül kap engedélyeket. Ezeket az engedélyeket csak a démoni szolgáltatások és a háttérben futó egyéb nem interaktív alkalmazások használhatják. A közvetlen hozzáférési forgatókönyvről további információt a Microsoft Identitásplatform Access-forgatókönyveiben talál.
A hatókörök webes API-ban való közzétételével kapcsolatos lépésenkénti útmutatóért lásd : Alkalmazás konfigurálása webes API-k megjelenítésére.
OpenID Connect-hatókörök
Az OpenID Connect Microsoft Identitásplatform implementációja néhány jól definiált hatókörrel rendelkezik, amelyeket a Microsoft Graph is üzemeltet: openid
, email
, profile
és offline_access
. Az address
OpenID Connect-hatókörök phone
nem támogatottak.
Ha az OpenID Connect-hatóköröket és egy jogkivonatot kéri, jogkivonatot kap a UserInfo végpont meghívásához.
A openid
hatókör
Ha egy alkalmazás az OpenID Connect használatával jelentkezik be, a hatókört kell kérnieopenid
. A openid
hatókör a munkahelyi fiók hozzájárulási lapján jelenik meg a Bejelentkezési engedélyként.
Ezzel az engedéllyel az alkalmazás egyedi azonosítót kaphat a felhasználó számára a sub
jogcím formájában. Az engedély hozzáférést biztosít az alkalmazásnak a UserInfo végponthoz is. A openid
hatókör a Microsoft Identitásplatform tokenvégponton használható az azonosító jogkivonatok beszerzéséhez. Az alkalmazás ezeket a jogkivonatokat használhatja hitelesítésre.
A email
hatókör
A email
hatókör használható a openid
hatókörrel és bármely más hatókörrel. Ez hozzáférést biztosít az alkalmazásnak a felhasználó elsődleges e-mail-címéhez a email
jogcím formájában.
A email
jogcím csak akkor szerepel a jogkivonatban, ha egy e-mail-cím van társítva a felhasználói fiókkal, ami nem mindig igaz. Ha az alkalmazás a hatókört email
használja, az alkalmazásnak képesnek kell lennie kezelni egy olyan esetet, amelyben nincs email
jogcím a jogkivonatban.
A profile
hatókör
A profile
hatókör használható a openid
hatókörrel és bármely más hatókörrel. Ez nagy mennyiségű információhoz biztosít hozzáférést az alkalmazásnak a felhasználóról. Az általa elérhető információk közé tartozik a felhasználó utóneve, vezetékneve, előnyben részesített felhasználóneve és objektumazonosítója.
Az adott felhasználó paraméterében id_tokens
elérhető jogcímek teljes listáját profile
a id_tokens
hivatkozásban találja.
A offline_access
hatókör
A offline_access
hatókör hosszabb ideig biztosít hozzáférést az alkalmazásnak az erőforrásokhoz a felhasználó nevében. A hozzájárulási lapon ez a hatókör jelenik meg az engedélyhez hozzáférést kapott adatokhoz való hozzáférés fenntartásaként.
Amikor egy felhasználó jóváhagyja a offline_access
hatókört, az alkalmazás frissítési jogkivonatokat fogadhat a Microsoft Identitásplatform jogkivonat végpontjáról. A frissítési jogkivonatok hosszú élettartamúak. Az alkalmazás új hozzáférési jogkivonatokat szerezhet be, amint a régebbiek lejárnak.
Feljegyzés
Ez az engedély jelenleg az összes jóváhagyási oldalon megjelenik, még olyan folyamatok esetében is, amelyek nem biztosítanak frissítési jogkivonatot (például az implicit folyamatot). Ez a beállítás olyan forgatókönyveket kezel, ahol az ügyfél az implicit folyamaton belül kezdhet, majd a kódfolyamatba léphet, ahol frissítési jogkivonat várható.
A Microsoft Identitásplatform (a v2.0-s végpontra irányuló kérések) esetén az alkalmazásnak explicit módon le kell kérnie a offline_access
hatókört a frissítési jogkivonatok fogadásához. Így amikor bevált egy engedélyezési kódot az OAuth 2.0 engedélyezési kódfolyamatában, csak egy hozzáférési jogkivonatot kap a /token
végponttól.
A hozzáférési jogkivonat általában körülbelül egy óráig érvényes. Ezen a ponton az alkalmazásnak vissza kell irányítania a felhasználót a /authorize
végpontra, hogy új engedélyezési kódot kérjen. Az átirányítás során és az alkalmazás típusától függően előfordulhat, hogy a felhasználónak újra meg kell adnia a hitelesítő adatait, vagy újra engedélyeznie kell az engedélyeket.
A frissítési jogkivonat lejárata hosszabb, mint a hozzáférési jogkivonaté, és általában egy napig érvényes. A frissítési jogkivonatok beszerzéséről és használatáról további információt a Microsoft Identitásplatform protokollreferenciában talál.
A frissítési jogkivonat válaszba való felvétele több tényezőtől is függhet, beleértve az alkalmazás adott konfigurációját és az engedélyezési folyamat során kért hatóköröket. Ha a válaszban frissítési jogkivonatot vár, de nem sikerül, vegye figyelembe a következő tényezőket:
- Hatókörkövetelmények: Győződjön meg arról, hogy a
offline_access
hatóköröket az egyéb szükséges hatókörökkel együtt kéri. - Engedélyezési engedély típusa: A frissítési jogkivonat általában az engedélyezési kód megadási típusának használatakor van megadva. Ha a folyamat eltér, az hatással lehet a válaszra.
- Ügyfélkonfiguráció: Ellenőrizze az alkalmazás beállításait az identitásplatformon. Bizonyos konfigurációk korlátozhatják a refresh_tokens kiállítását.
A .default
hatókör
A .default
hatókör használatával általánosan hivatkozhat egy erőforrás-szolgáltatásra (API) egy kérésben, konkrét engedélyek azonosítása nélkül. Ha szükséges a hozzájárulás, a jelek használatával .default
a hozzájárulást kell kérni az alkalmazásregisztrációban felsorolt összes szükséges engedélyhez (a listában szereplő összes API-hoz).
A hatókör paraméterértékének létrehozása az erőforrás azonosító URI-jával történik, és .default
perjellel (perjellel elválasztva/
). Ha például az erőforrás azonosítójának URI-ja, https://contoso.com
akkor a kérés hatóköre.https://contoso.com/.default
Azokban az esetekben, amikor egy második perjelet kell tartalmaznia a jogkivonat helyes lekéréséhez, tekintse meg a záró perjelekről szóló szakaszt.
A használat scope={resource-identifier}/.default
funkcionálisan megegyezik resource={resource-identifier}
az 1.0-s verziójú végponttal (hol {resource-identifier}
található az API azonosító URI-ja, például https://graph.microsoft.com
a Microsoft Graph esetében).
A .default
hatókör bármely OAuth 2.0-s folyamatban használható, és rendszergazdai hozzájárulást kezdeményezhet. A használat a nevében történő folyamat és az ügyfél hitelesítő adatainak folyamatában szükséges.
Az ügyfelek nem kombinálhatják a statikus (.default
) hozzájárulást és a dinamikus hozzájárulást egyetlen kérelemben. Ezért scope=https://graph.microsoft.com/.default Mail.Read
hibát eredményez, mert a hatókörtípusok egyesülnek.
.default
ha a felhasználó már adott hozzájárulást
A .default
hatókörparaméter csak akkor aktivál hozzájárulási kérést, ha az ügyfél és az erőforrás között nem kapott hozzájárulást a bejelentkezett felhasználó nevében.
Ha a hozzájárulás létezik, a visszaadott jogkivonat tartalmazza az adott erőforráshoz megadott összes hatókört a bejelentkezett felhasználó számára. Ha azonban nem adott engedélyt a kért erőforráshoz (vagy ha a prompt=consent
paraméter meg lett adva), megjelenik egy hozzájárulási kérés az ügyfélalkalmazás-regisztrációhoz konfigurált összes szükséges engedélyhez a listában szereplő összes API-hoz.
Ha például a hatókört https://graph.microsoft.com/.default
kérik, az alkalmazás hozzáférési jogkivonatot kér a Microsoft Graph API-hoz. Ha a bejelentkezett felhasználó nevében legalább egy delegált engedélyt kapott a Microsoft Graphhoz, a bejelentkezés folytatódik, és az adott felhasználóhoz megadott összes Microsoft Graph-delegált engedély szerepelni fog a hozzáférési jogkivonatban. Ha a kért erőforráshoz (ebben a példában a Microsoft Graphhoz) nem adtak engedélyeket, akkor megjelenik egy hozzájárulási kérés az alkalmazásban konfigurált összes szükséges engedélyhez, a listában szereplő összes API-hoz.
1. példa: A felhasználó vagy a bérlő rendszergazdája engedélyekkel rendelkezik
Ebben a példában a felhasználó vagy a bérlői rendszergazda engedélyezte az ügyfélnek a Mail.Read
Microsoft Graph-engedélyeket User.Read
.
Ha az ügyfél kéri scope=https://graph.microsoft.com/.default
, nem jelenik meg hozzájárulási kérés, függetlenül attól, hogy az ügyfélalkalmazás regisztrált engedélyeit tartalmazza-e a Microsoft Graph. A visszaadott jogkivonat tartalmazza a hatóköröket Mail.Read
és User.Read
a .
2. példa: A felhasználó nem adott engedélyeket az ügyfél és az erőforrás között
Ebben a példában a felhasználó nem adott hozzájárulást az ügyfél és a Microsoft Graph között, és nincs rendszergazdája sem. Az ügyfél regisztrálta az engedélyeket User.Read
és Contacts.Read
a . Regisztrálva lett az Azure Key Vault hatókörében https://vault.azure.net/user_impersonation
is.
Amikor az ügyfél jogkivonatot scope=https://graph.microsoft.com/.default
kér, a felhasználó megjelenik a Microsoft Graph User.Read
és Contacts.Read
a hatókörök, valamint az Azure Key Vault user_impersonation
hatókörének hozzájárulási oldala. A visszaadott jogkivonat csak a hatóköröket és Contacts.Read
a User.Read
hatóköröket tartalmazza, és csak a Microsoft Graphon használható.
3. példa: A felhasználó beleegyezett, és az ügyfél további hatóköröket kér
Ebben a példában a felhasználó már hozzájárult Mail.Read
az ügyfélhez. Az ügyfél regisztrált a Contacts.Read
hatókörre.
Az ügyfél először a következővel scope=https://graph.microsoft.com/.default
végez bejelentkezést: . A válasz paramétere alapján scopes
az alkalmazás kódja azt észleli, hogy csak Mail.Read
a megadott. Az ügyfél ezután kezdeményez egy második bejelentkezést a használatával scope=https://graph.microsoft.com/.default
, és ezúttal a hozzájárulást kényszeríti a használatával prompt=consent
. Ha a felhasználó engedélyt kap az alkalmazás által regisztrált összes engedély jóváhagyására, megjelenik a hozzájárulási kérés. (Ha nem, hibaüzenet jelenik meg, vagy a rendszergazdai hozzájárulási kérelem űrlapja.) Mindkettőt Contacts.Read
, és Mail.Read
megjelenik a hozzájárulási kérésben. Ha a hozzájárulás meg van adva, és a bejelentkezés folytatódik, a visszaadott jogkivonat a Microsoft Graph számára készült, és tartalmazza Mail.Read
és Contacts.Read
.
A .default
hatókör használata az ügyféllel
Bizonyos esetekben az ügyfél saját hatókört .default
kérhet. Az alábbi példa ezt a forgatókönyvet mutatja be.
// Line breaks are for legibility only.
GET https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize
?response_type=token //Code or a hybrid flow is also possible here
&client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&scope=9ada6f8a-6d83-41bc-b169-a306c21527a5/.default
&redirect_uri=https%3A%2F%2Flocalhost
&state=1234
Ez a példakód egy hozzájárulási oldalt hoz létre az összes regisztrált engedélyhez, ha a hozzájárulás .default
előző leírásai érvényesek a forgatókönyvre. Ezután a kód egy id_token
, és nem hozzáférési jogkivonatot ad vissza.
Ezt a beállítást nem használhatják a Microsoft Identitásplatform megcélzott új ügyfelek. Ügyeljen arra, hogy az Azure AD Authentication Libraryből (ADAL) migráljon a Microsoft Authentication Library (MSAL) szolgáltatásba.
Az ügyfél hitelesítő adatai engedélyezik a folyamatot és .default
A másik lehetőség az alkalmazásszerepkörök (más néven alkalmazásengedélyek) kérése .default
egy nem interaktív alkalmazásban, például egy démonalkalmazásban, amely az ügyfél hitelesítő adataival engedélyezi a folyamatot egy webes API meghívásához.
Ha alkalmazásszerepköröket (alkalmazásengedélyeket) szeretne definiálni egy webes API-hoz, olvassa el az Alkalmazásszerepkörök hozzáadása az alkalmazásban című témakört.
Az ügyfél-szolgáltatásban az ügyfél-hitelesítő adatokra vonatkozó kéréseknek tartalmazniuk kell a következőket scope={resource}/.default
: . {resource}
Itt található az alkalmazás által meghívni kívánt webes API, amelyhez hozzáférési jogkivonatot szeretne beszerezni. Az ügyfél hitelesítő adataira vonatkozó kérések egyéni alkalmazásengedélyek (szerepkörök) használatával történő kiadása nem támogatott. A webes API-hoz megadott összes alkalmazásszerepkör (alkalmazásengedély) szerepel a visszaadott hozzáférési jogkivonatban.
Ha hozzáférést szeretne adni a megadott alkalmazásszerepkörökhöz, beleértve a rendszergazdai hozzájárulás megadását az alkalmazáshoz, tekintse meg az ügyfélalkalmazás webes API-hoz való hozzáférésének konfigurálásával kapcsolatos témakört.
Záró perjel és .default
Egyes erőforrás-URI-k záró perjellel rendelkeznek, https://contoso.com/
például nem https://contoso.com
. A záró perjel problémákat okozhat a jogkivonatok érvényesítésével kapcsolatban. A problémák elsősorban akkor fordulnak elő, ha jogkivonatot kérnek az Azure Resource Managerhez (https://management.azure.com/
).
Ebben az esetben az erőforrás-URI záró perjele azt jelenti, hogy a perjelnek jelen kell lennie a jogkivonat kérésekor. Tehát amikor jogkivonatot https://management.azure.com/
kér és használ .default
, kérnie https://management.azure.com//.default
kell (figyelje meg a kettős perjelet!).
Általánosságban elmondható, hogy ha ellenőrzi, hogy a jogkivonat kiadása folyamatban van-e, és ha a jogkivonatot az API elutasítja, amelyet el kell fogadnia, fontolja meg egy második perjel hozzáadását, és próbálja újra.