Principy delegovaného přístupu
Když se uživatel přihlásí k aplikaci a použije ho pro přístup k některým dalším prostředkům, jako je Microsoft Graph, aplikace bude nejprve muset požádat o oprávnění pro přístup k tomuto prostředku jménem uživatele. Tento běžný scénář se nazývá delegovaný přístup.
Proč mám používat delegovaný přístup?
Lidé často používají různé aplikace pro přístup ke svým datům z cloudových služeb. Někdo například může chtít použít oblíbenou aplikaci pro čtení PDF k zobrazení souborů uložených na OneDrivu. Dalším příkladem může být obchodní aplikace společnosti, která může načíst sdílené informace o svých spolupracovníkech, aby mohli snadno zvolit revidující žádost. V takových případech musí být klientská aplikace, čtečka PDF nebo nástroj pro schválení žádostí společnosti autorizovaný pro přístup k těmto datům jménem uživatele, který se k aplikaci přihlásil.
Delegovaný přístup používejte vždy, když chcete, aby přihlášený uživatel pracoval s vlastními prostředky nebo prostředky, ke kterým má přístup. Ať už se jedná o správce, který nastavuje zásady pro celou organizaci, nebo uživatel, který odstraňuje e-mail ve složce Doručená pošta, měly by všechny scénáře zahrnující akce uživatelů používat delegovaný přístup.
Naproti tomu delegovaný přístup je obvykle špatnou volbou pro scénáře, které se musí spouštět bez přihlášeného uživatele, jako je automatizace. Může to být také špatná volba pro scénáře, které zahrnují přístup k mnoha prostředkům uživatelů, jako je ochrana před únikem informací nebo zálohování. Zvažte použití přístupu pouze k aplikacím pro tyto typy operací.
Vyžádání oborů jako klientské aplikace
Vaše aplikace bude muset požádat uživatele, aby udělil konkrétní obor nebo sadu oborů pro aplikaci prostředků, ke které chcete získat přístup. Obory mohou být také označovány jako delegovaná oprávnění. Tyto obory popisují, které prostředky a operace chce vaše aplikace provádět jménem uživatele. Pokud například chcete, aby vaše aplikace zobrazovala uživateli seznam naposledy přijatých e-mailových zpráv a chatových zpráv, můžete uživatele požádat, aby souhlasil s microsoft Graphem Mail.Read
a Chat.Read
obory.
Jakmile vaše aplikace požádá o obor, bude muset uživatel nebo správce udělit požadovaný přístup. Uživatelé uživatelů s účty Microsoft, jako jsou účty Outlook.com nebo Xbox Live, můžou vždy udělovat rozsahy sami sobě. Uživatelé organizace s účty Microsoft Entra můžou nebo nemusí mít možnost udělovat rozsahy v závislosti na nastavení organizace. Pokud uživatel organizace nemůže udělit souhlas s rozsahy přímo, bude muset požádat správce organizace, aby s nimi souhlasil.
Vždy dodržujte princip nejnižších oprávnění: Nikdy byste neměli požadovat obory, které vaše aplikace nepotřebuje. Tento princip pomáhá omezit riziko zabezpečení v případě ohrožení vaší aplikace a usnadňuje správcům udělení přístupu k aplikaci. Pokud například vaše aplikace potřebuje jenom vypsat chaty, do nichž uživatel patří, ale nemusí zobrazovat samotné zprávy chatu, měli byste požádat o omezenější rozsah Microsoft Graphu Chat.ReadBasic
, nikoli Chat.Read
. Další informace o oborech openID najdete v tématu Obory OpenID.
Navrhování a publikování oborů pro službu prostředků
Pokud vytváříte rozhraní API a chcete povolit delegovaný přístup jménem uživatelů, budete muset vytvořit obory, které si ostatní aplikace můžou vyžádat. Tyto obory by měly popisovat akce nebo prostředky dostupné klientovi. Při navrhování oborů byste měli zvážit scénáře pro vývojáře.
Token pro sebe
Ve scénáři, kde:
- Aplikace prostředků a klientská aplikace jsou stejné.
- Aplikace nemá žádné zaregistrované webové rozhraní API.
- Aplikace požaduje token pro delegovaná oprávnění, která zveřejňuje sama
Pro tuto žádost o token se nezobrazí žádný souhlas. Aplikace, které jsou vytvořené v rámci tenanta a požadují token pro sebe, mohou být odvozeny tak, aby už měly přístup k datům profilu a automaticky se jim udělí přístup k profilu.
Jak delegovaný přístup funguje?
Nejdůležitější věcí, kterou je potřeba pamatovat na delegovaný přístup, je, že klientská aplikace i přihlášený uživatel musí být správně autorizované. Udělení oboru nestačí. Pokud klientská aplikace nemá správný obor nebo uživatel nemá dostatečná práva ke čtení nebo úpravě prostředku, volání se nezdaří.
- Autorizace klientské aplikace – Klientské aplikace jsou autorizované udělením rozsahů. Pokud má uživatel nebo správce udělený obor klientské aplikace pro přístup k určitému prostředku, bude toto udělení zaznamenáno v MICROSOFT Entra ID. Všechny delegované přístupové tokeny, které klient požaduje pro přístup k prostředku jménem příslušného uživatele, pak budou obsahovat hodnoty deklarací identity těchto oborů v
scp
deklaraci identity. Aplikace prostředků zkontroluje tuto deklaraci identity a určí, jestli byla klientská aplikace udělena správnému rozsahu volání. - Autorizace uživatele – Uživatelé jsou autorizovaní prostředkem, který voláte. Aplikace prostředků můžou používat jeden nebo více systémů pro autorizaci uživatelů, jako je řízení přístupu na základě role, vlastnictví nebo vztahy členství, seznamy řízení přístupu nebo jiné kontroly. Například Microsoft Entra ID kontroluje, že uživatel byl přiřazen k roli správy aplikací nebo obecného správce, než mu umožní odstranit aplikace organizace, ale také umožňuje všem uživatelům odstranit aplikace, které vlastní. Podobně služba SharePointu Online kontroluje, jestli má uživatel příslušná práva vlastníka nebo čtenáře k souboru, a teprve potom ho povolí jeho otevření.
Příklad delegovaného přístupu – OneDrive přes Microsoft Graph
Představte si následující příklad:
Alice chce použít klientskou aplikaci k otevření souboru chráněného rozhraním API prostředků Microsoft Graph. Pro autorizaci uživatele služba OneDrive zkontroluje, jestli je soubor uložený na jednotce Alice. Pokud je uložený na jednotce jiného uživatele, OneDrive odmítne žádost Alice jako neautorizovanou, protože Alice nemá právo číst jednotky ostatních uživatelů.
Pro autorizaci klientských aplikací OneDrive zkontroluje, jestli má klient provádějící volání udělený Files.Read
obor jménem přihlášeného uživatele. V tomto případě je přihlášený uživatel Alice. Pokud Files.Read
aplikaci Alice nepřidělila, OneDrive také žádost nezdaří.
GET /drive/{id}/files/{id} | Rozsah udělený Files.Read klientským aplikacím pro Alice |
Klientská aplikace nemá udělený Files.Read obor pro Alice |
---|---|---|
Dokument je na OneDrivu Alice. | 200 – Přístup udělen. | 403 - Neautorizováno. Alice (nebo její správce) nepovolila tomuto klientovi číst soubory. |
Dokument je na OneDrivu jiného uživatele*. | 403 - Neautorizováno. Alice nemá práva ke čtení tohoto souboru. I když byl klient udělen Files.Read , měl by být odepřen při jednání jménem Alice. |
403 – Neautorizováno. Alice nemá oprávnění ke čtení tohoto souboru a klient nemá oprávnění číst soubory, ke kterým má přístup. |
Uvedený příklad je zjednodušený, aby ilustroval delegovanou autorizaci. Produkční služba OneDrive podporuje mnoho dalších scénářů přístupu, jako jsou sdílené soubory.