Zjištění oprávnění a souhlasu
Aplikace, které se integrují s platformou Microsoft Identity Platform, se řídí autorizačním modelem, který uživatelům a správcům dává kontrolu nad tím, jak se k datům dá přistupovat.
Platforma Microsoft Identity Platform implementuje autorizační protokol OAuth 2.0 . OAuth 2.0 je metoda, prostřednictvím které může aplikace třetí strany přistupovat k prostředkům hostovaným na webu jménem uživatele. Každý webový hostovaný prostředek, který se integruje s platformou Microsoft Identity Platform, má identifikátor prostředku nebo identifikátor URI ID aplikace.
Tady je několik příkladů prostředků hostovaných webem Microsoftu:
- Microsoft Graph:
https://graph.microsoft.com
- Rozhraní API pošty Microsoftu 365:
https://outlook.office.com
- Azure Key Vault:
https://vault.azure.net
Totéž platí pro všechny prostředky třetích stran integrované s platformou Microsoft Identity Platform. Každý z těchto prostředků může také definovat sadu oprávnění, která lze použít k rozdělení funkčnosti tohoto prostředku do menších bloků dat. Když se funkce prostředku rozdělí do malých sad oprávnění, dají se aplikace třetích stran vytvořit tak, aby požadovaly jenom oprávnění, která potřebují k provedení své funkce. Uživatelé a správci můžou vědět, k jakým datům má aplikace přístup.
V OAuth 2.0 se těmto typům sad oprávnění říká obory. Často se také označují jako oprávnění. Na platformě Microsoft Identity Platform je oprávnění reprezentováno jako řetězcová hodnota. Aplikace požádá o potřebná oprávnění zadáním oprávnění v parametru scope
dotazu. Platforma Identity Platform podporuje několik dobře definovaných oborů OpenID Connect a oprávnění založená na prostředcích (každé oprávnění je indikováno připojením hodnoty oprávnění k identifikátoru prostředku nebo identifikátoru URI ID aplikace). Řetězec https://graph.microsoft.com/Calendars.Read
oprávnění se například používá k vyžádání oprávnění ke čtení kalendářů uživatelů v Microsoft Graphu.
Aplikace nejčastěji požaduje tato oprávnění zadáním rozsahů v požadavcích na koncový bod autorizace platformy Microsoft Identity Platform. Některá oprávnění s vysokými oprávněními ale můžou být udělena pouze prostřednictvím souhlasu správce. Můžou být požadovány nebo uděleny pomocí koncového bodu souhlasu správce.
Poznámka:
V žádostech o autorizaci, token nebo koncové body souhlasu pro platformu Microsoft Identity Platform platí, že pokud je identifikátor prostředku v parametru oboru vynechán, předpokládá se, že zdrojem je Microsoft Graph. Například scope=User.Read
je ekvivalentní s https://graph.microsoft.com/User.Read
.
Typy oprávnění
Platforma Microsoft Identity Platform podporuje dva typy oprávnění: delegovaný přístup a přístup jen pro aplikace.
Delegovaný přístup používají aplikace, které mají přihlášeného uživatele. U těchto aplikací může aplikaci udělit souhlas s požadovanými oprávněními uživatel nebo správce. Aplikaci se deleguje oprávnění k tomu, aby při volání cílového prostředku fungovala jako přihlášený uživatel.
Přístupová oprávnění jen pro aplikace používají aplikace, které běží bez přihlášeného uživatele, například aplikace, které běží jako služby na pozadí nebo démony. Přístupová oprávnění jen pro aplikaci může udělit jenom správce.
Typy souhlasu
Aplikace v platformě Microsoft Identity Platform spoléhají na souhlas, aby získaly přístup k potřebným prostředkům nebo rozhraním API. Existuje mnoho druhů souhlasu, o kterých může vaše aplikace potřebovat vědět, aby byla úspěšná. Pokud definujete oprávnění, budete také muset pochopit, jak uživatelé získají přístup k vaší aplikaci nebo rozhraní API.
Existují tři typy souhlasu: statický souhlas uživatele, přírůstkový a dynamický souhlas uživatele a souhlas správce.
Souhlas statického uživatele
Ve scénáři souhlasu statického uživatele musíte zadat všechna oprávnění, která potřebuje v konfiguraci aplikace na webu Azure Portal. Pokud uživatel (nebo správce podle potřeby) neudělil souhlas pro tuto aplikaci, pak platforma Microsoft Identity Platform vyzve uživatele, aby v tuto chvíli udělil souhlas. Statická oprávnění také umožňují správcům souhlas jménem všech uživatelů v organizaci.
I když statická oprávnění aplikace definované na webu Azure Portal udržují kód pěkný a jednoduchý, představují některé možné problémy pro vývojáře:
Aplikace musí požádat o všechna oprávnění, která by kdy potřebovala při prvním přihlášení uživatele. To může vést k dlouhému seznamu oprávnění, která koncovým uživatelům brání ve schvalování přístupu k aplikaci při počátečním přihlášení.
Aplikace potřebuje znát všechny prostředky, ke kterých by někdy přistupovala předem. Vytváření aplikací, které by mohly přistupovat k libovolnému počtu prostředků, je obtížné.
Přírůstkový a dynamický souhlas uživatele
Pomocí koncového bodu Microsoft Identity Platform můžete ignorovat statická oprávnění definovaná v informacích o registraci aplikace na webu Azure Portal a požadovat oprávnění přírůstkově. Můžete požádat o minimální sadu oprávnění předem a požádat o více času, protože zákazník používá více funkcí aplikace.
K tomu můžete kdykoli zadat obory, které vaše aplikace potřebuje, zahrnutím nových oborů do parametru scope
při vyžádání přístupového tokenu bez nutnosti jejich předdefinování v informacích o registraci aplikace. Pokud uživatel ještě nepřidělil souhlas s novými obory přidanými do požadavku, zobrazí se výzva k vyjádření souhlasu pouze s novými oprávněními. Přírůstkové nebo dynamické vyjádření souhlasu platí jenom pro delegovaná oprávnění a ne pro přístupová oprávnění jen pro aplikace.
Důležité
Dynamický souhlas může být praktický, ale představuje velkou výzvu pro oprávnění vyžadující souhlas správce, protože prostředí pro udělení souhlasu správce v době vyjádření souhlasu nemá informace o těchto oprávněních. Pokud požadujete privilegovaná oprávnění správce nebo pokud vaše aplikace používá dynamický souhlas, musíte všechna oprávnění zaregistrovat na webu Azure Portal (nejen v podmnožině oprávnění, která vyžadují souhlas správce). Správci tenantů tak můžou souhlasit jménem všech svých uživatelů.
Souhlas správce
Souhlas správce se vyžaduje, když vaše aplikace potřebuje přístup k určitým oprávněním s vysokými oprávněními. Souhlas správce zajišťuje, aby správci měli před autorizací aplikací nebo uživatelů několik dalších ovládacích prvků, aby měli přístup k vysoce privilegovaným datům z organizace.
Souhlas správce provedený jménem organizace stále vyžaduje statická oprávnění zaregistrovaná pro aplikaci. Pokud potřebujete, aby správce udělil souhlas jménem celé organizace, nastavte tato oprávnění pro aplikace na portálu pro registraci aplikací. Tím se sníží cykly, které správce organizace potřebuje k nastavení aplikace.
Žádost o souhlas jednotlivého uživatele
V žádosti o autorizaci OpenID Connect nebo OAuth 2.0 může aplikace požádat o oprávnění, která potřebuje, pomocí parametru dotazu oboru. Když se například uživatel přihlásí k aplikaci, odešle aplikace požadavek podobný následujícímu příkladu. Konce řádků se přidají pro čitelnost.
GET https://login.microsoftonline.com/common/oauth2/v2.0/authorize?
client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&response_type=code
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&response_mode=query
&scope=
https%3A%2F%2Fgraph.microsoft.com%2Fcalendars.read%20
https%3A%2F%2Fgraph.microsoft.com%2Fmail.send
&state=12345
Parametr scope
je seznam delegovaných oprávnění oddělených mezerami, která aplikace požaduje. Každé oprávnění je označeno připojením hodnoty oprávnění k identifikátoru prostředku (identifikátor URI ID aplikace). V příkladu požadavku potřebuje aplikace oprávnění ke čtení kalendáře uživatele a odesílání pošty jako uživatele.
Jakmile uživatel zadá své přihlašovací údaje, platforma Microsoft Identity Platform vyhledá odpovídající záznam souhlasu uživatele. Pokud uživatel nesdělil souhlas s žádným z požadovaných oprávnění v minulosti a pokud správce nesdělil souhlas s těmito oprávněními jménem celé organizace, platforma Microsoft Identity Platform požádá uživatele o udělení požadovaných oprávnění.