Vyžádání oprávnění prostřednictvím souhlasu
Aplikace na platformě Microsoft Identity Platform spoléhají na souhlas, aby získaly přístup k potřebným prostředkům nebo rozhraním API. Různé typy souhlasu jsou lepší pro různé scénáře aplikace. Volba nejlepšího přístupu k vyjádření souhlasu s vaší aplikací pomůže lépe s uživateli a organizacemi.
V tomto článku se dozvíte o různých typech souhlasu a o tom, jak požádat o oprávnění pro vaši aplikaci prostřednictvím souhlasu.
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 v Centru pro správu Microsoft Entra. Pokud uživatel (nebo správce podle potřeby) neudělil souhlas pro tuto aplikaci, 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.
Při závislosti na statickém souhlasu a jediném seznamu oprávnění zůstane kód pěkný a jednoduchý, znamená to také, že vaše aplikace požádá o všechna oprávnění, která může někdy potřebovat předem. Uživatelům a správcům to může bránit ve schvalování žádosti o přístup k aplikaci.
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 v Centru pro správu Microsoft Entra. Místo toho můžete požádat o oprávnění přírůstkově. Můžete požádat o minimální minimální sadu oprávnění předem a požádat ho více v průběhu času, protože zákazník používá další funkce aplikace. To uděláte tak, že při vyžádání přístupového tokenu zadáte rozsahy, které vaše aplikace potřebuje, a to tak, že při vyžádání přístupového tokenu zahrnete nové obory scope
, aniž byste je museli předem definovat 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 mu 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í, ne pro oprávnění aplikace.
Když aplikaci umožníte dynamicky vyžadovat oprávnění prostřednictvím parametru scope
, získáte vývojářům plnou kontrolu nad prostředím uživatele. Můžete také předem načíst prostředí souhlasu a požádat o všechna oprávnění v jedné počáteční autorizační žádosti. Pokud vaše aplikace vyžaduje velký počet oprávnění, můžete tato oprávnění shromáždit od uživatele postupně při pokusu o používání určitých funkcí aplikace v průběhu času.
Důležité
Dynamický souhlas může být pohodlný, ale představuje velký problém pro oprávnění, která vyžadují souhlas správce. Prostředí pro vyjádření souhlasu správce v otech Registrace aplikací a podnikových aplikacích na portálu neví o těchto dynamických oprávněních v době souhlasu. Doporučujeme, aby vývojář vypisoval všechna privilegovaná oprávnění správce, která aplikace potřebuje na portálu. Správci tenantů tak můžou souhlasit jménem všech svých uživatelů na portálu jednou. Uživatelé nebudou muset projít prostředím souhlasu pro tato oprávnění při přihlášení. Alternativou je použití dynamického souhlasu pro tato oprávnění. Pokud chcete udělit souhlas správce, jednotlivý správce se přihlásí k aplikaci, aktivuje výzvu k vyjádření souhlasu pro příslušná oprávnění a vybere souhlas pro celou organizaci v dialogu souhlasu.
Žádost o souhlas jednotlivého uživatele
V žádosti o autorizaci OpenID Připojení nebo OAuth 2.0 může aplikace požádat o oprávnění, která potřebuje, pomocí parametru scope
dotazu. 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ů jsou přidány 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í.
V následujícím příkladu offline_access
se oprávnění ("Udržovat přístup k datům, ke kterým jste jim udělili přístup") a User.Read
oprávnění ("Přihlásit se a přečíst svůj profil") se automaticky zahrne do počátečního souhlasu s aplikací. Tato oprávnění jsou vyžadována pro správné funkce aplikace. Oprávnění offline_access
dává aplikaci přístup k obnovovacím tokenům, které jsou důležité pro nativní aplikace a webové aplikace. Oprávnění User.Read
uděluje přístup k sub
deklaraci identity. Umožňuje klientovi nebo aplikaci správně identifikovat uživatele v průběhu času a přistupovat k rudimentárním uživatelským informacím.
Když uživatel žádost o oprávnění schválí, zaznamená se souhlas. Uživatel nemusí znovu souhlasit, když se později přihlásí k aplikaci.
Vyžádání souhlasu pro celého tenanta prostřednictvím souhlasu správce
Žádost o souhlas pro celého tenanta vyžaduje souhlas správce. Správa souhlas provedený jménem organizace 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í na portálu pro registraci aplikací.
souhlas Správa pro delegovaná oprávnění
Když vaše aplikace požádá o delegovaná oprávnění, která vyžadují souhlas správce, zobrazí se uživateli chybová zpráva s informací, že nemá oprávnění k udělení souhlasu s oprávněními vaší aplikace. Uživatel musí požádat správce o přístup k aplikaci. Pokud správce udělí souhlas pro celého tenanta, uživatelé organizace neuvidí stránku souhlasu pro aplikaci, pokud se neodvolají dříve udělená oprávnění nebo aplikace požádá o nové oprávnění přírůstkově.
Správa istrátory používající stejnou aplikaci se zobrazí výzva k vyjádření souhlasu správce. Výzva k vyjádření souhlasu správce obsahuje zaškrtávací políčko, které mu umožní udělit aplikaci přístup k požadovaným datům jménem uživatelů pro celého tenanta. Další informace o prostředí souhlasu uživatele a správce najdete v tématu Prostředí souhlasu aplikace.
Příklady delegovaných oprávnění pro Microsoft Graph, která vyžadují souhlas správce, jsou:
- Čtení úplných profilů všech uživatelů pomocí User.Read.All
- Zápis dat do adresáře organizace pomocí Directory.ReadWrite.All
- Čtení všech skupin v adresáři organizace pomocí Groups.Read.All
Pokud chcete zobrazit úplný seznam oprávnění microsoft graphu, přečtěte si referenční informace o oprávněních microsoft graphu.
Můžete také nakonfigurovat oprávnění pro vlastní prostředky tak, aby vyžadovala souhlas správce. Další informace o tom, jak přidat obory, které vyžadují souhlas správce, najdete v tématu Přidání oboru, který vyžaduje souhlas správce.
Některé organizace můžou změnit výchozí zásady souhlasu uživatele pro tenanta. Když vaše aplikace požádá o přístup k oprávněním, která se vyhodnocují proti těmto zásadám. Uživatel může potřebovat požádat o souhlas správce, i když to ve výchozím nastavení nevyžaduje. Informace o tom, jak správci spravují zásady souhlasu pro aplikace, najdete v tématu Správa zásad souhlasu aplikací.
Poznámka:
V žádostech o autorizaci, token nebo koncové body souhlasu pro platformu Microsoft Identity Platform, pokud je identifikátor prostředku vynechán v parametru oboru, předpokládá se, že prostředek je Microsoft Graph. Například scope=User.Read je ekvivalentní .https://graph.microsoft.com/User.Read
souhlas Správa pro oprávnění aplikace
Oprávnění aplikace vždy vyžadují souhlas správce. Oprávnění aplikace nemají kontext uživatele a udělení souhlasu není provedeno jménem žádného konkrétního uživatele. Místo toho má klientská aplikace udělená oprávnění přímo, tyto typy oprávnění používají pouze služby démona a další neinteraktivní aplikace, které běží na pozadí. Správa istrátory musí předem nakonfigurovat oprávnění a udělit souhlas správce prostřednictvím Centra pro správu Microsoft Entra.
souhlas Správa pro aplikace s více tenanty
V případě, že aplikace požadující oprávnění je aplikace s více tenanty, její registrace aplikace existuje pouze v tenantovi, ve kterém byla vytvořena, a proto v místním tenantovi není možné nakonfigurovat oprávnění. Pokud aplikace požaduje oprávnění, která vyžadují souhlas správce, musí správce souhlasit jménem uživatelů. K vyjádření souhlasu s těmito oprávněními se správci musí přihlásit k samotné aplikaci, takže se aktivuje přihlašovací prostředí souhlasu správce. Informace o nastavení prostředí souhlasu správce pro víceklientské aplikace najdete v tématu Povolení přihlášení s více tenanty.
Správce může udělit souhlas pro aplikaci s následujícími možnostmi.
Doporučeno: Přihlášení uživatele do aplikace
Při vytváření aplikace, která vyžaduje souhlas správce, aplikace obvykle potřebuje stránku nebo zobrazení, ve kterém může správce schválit oprávnění aplikace. Tato stránka může být následující:
- Část toku registrace aplikace
- Část nastavení aplikace
- Vyhrazený tok "connect".
V mnoha případech je vhodné, aby aplikace zobrazovala zobrazení připojit až po přihlášení uživatele pomocí pracovního účtu Microsoft nebo školního účtu Microsoft.
Když uživatele přihlásíte do aplikace, můžete určit organizaci, do které správce patří, a teprve potom požádat o schválení potřebných oprávnění. I když tento krok není nezbytně nutný, může vám pomoct vytvořit intuitivnější prostředí pro uživatele organizace.
Pokud chcete uživatele přihlásit, postupujte podle kurzů protokolu Microsoft Identity Platform.
Vyžádání oprávnění na portálu pro registraci aplikací
Na portálu pro registraci aplikací můžou aplikace zobrazit seznam oprávnění, která vyžadují, včetně delegovaných oprávnění i oprávnění aplikace. Toto nastavení umožňuje použití .default
oboru a možnosti udělení souhlasu správce v Centru pro správu Microsoft Entra.
Obecně platí, že oprávnění by měla být staticky definovaná pro danou aplikaci. Měly by se jednat o nadmnožinu oprávnění, která bude aplikace vyžadovat dynamicky nebo přírůstkově.
Poznámka:
Oprávnění aplikace lze požadovat pouze prostřednictvím použití .default
. Pokud tedy vaše aplikace potřebuje oprávnění aplikace, ujistěte se, že jsou uvedené na portálu pro registraci aplikací.
Konfigurace seznamu staticky požadovaných oprávnění pro aplikaci:
- Přihlaste se do Centra pro správu Microsoft Entra jako alespoň cloudová aplikace Správa istrator.
- Přejděte k aplikacím> identit>Registrace aplikací> Všechny aplikace.
- Vyberte aplikaci nebo vytvořte aplikaci , pokud jste ji ještě neudělali.
- Na stránce Přehled aplikace v části Spravovat vyberte Oprávnění>rozhraní API Přidat oprávnění.
- V seznamu dostupných rozhraní API vyberte Microsoft Graph . Potom přidejte oprávnění, která vaše aplikace vyžaduje.
- Vyberte Přidat oprávnění.
Úspěšná odpověď
Pokud správce schválí oprávnění pro vaši aplikaci, úspěšná odpověď vypadá takto:
GET http://localhost/myapp/permissions?tenant=aaaabbbb-0000-cccc-1111-dddd2222eeee&state=state=12345&admin_consent=True
Parametr | Popis |
---|---|
tenant |
Tenant adresáře, který vaší aplikaci udělil oprávnění, která požadoval, ve formátu GUID. |
state |
Hodnota zahrnutá v požadavku, která se také vrátí v odpovědi tokenu. Může to být řetězec libovolného obsahu. Stav se používá ke kódování informací o stavu uživatele v aplikaci před tím, než došlo k žádosti o ověření, jako je stránka nebo zobrazení, na které byli. |
admin_consent |
Nastaví se na True hodnotu . |
Po přijetí úspěšné odpovědi z koncového bodu souhlasu správce získala vaše aplikace oprávnění, která požadovala. Dále můžete požádat o token pro požadovaný prostředek.
Chybná odpověď
Pokud správce oprávnění pro vaši aplikaci neschválí, bude neúspěšná odpověď vypadat takto:
GET http://localhost/myapp/permissions?error=permission_denied&error_description=The+admin+canceled+the+request
Parametr | Popis |
---|---|
error |
Řetězec kódu chyby, který lze použít ke klasifikaci typů chyb, ke kterým dochází. Dá se také použít k reakci na chyby. |
error_description |
Konkrétní chybová zpráva, která může vývojáři pomoct identifikovat původní příčinu chyby. |
Použití oprávnění po souhlasu
Jakmile uživatel souhlasí s oprávněními pro vaši aplikaci, může vaše aplikace získat přístupové tokeny, které představují oprávnění aplikace pro přístup k prostředku v určité kapacitě. Přístupový token lze použít pouze pro jeden prostředek. Kódovaný uvnitř přístupového tokenu je ale každé oprávnění, které pro tento prostředek udělila vaše aplikace. K získání přístupového tokenu může vaše aplikace vytvořit požadavek na koncový bod tokenu platformy Microsoft Identity Platform, například takto:
POST common/oauth2/v2.0/token HTTP/1.1
Host: https://login.microsoftonline.com
Content-Type: application/json
{
"grant_type": "authorization_code",
"client_id": "00001111-aaaa-2222-bbbb-3333cccc4444",
"scope": "https://microsoft.graph.com/Mail.Read https://microsoft.graph.com/mail.send",
"code": "AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...",
"redirect_uri": "https://localhost/myapp",
"client_secret": "A1bC2dE3f..." // NOTE: Only required for web apps
}
Výsledný přístupový token můžete použít v požadavcích HTTP na prostředek. Spolehlivě značí prostředek, že má vaše aplikace správné oprávnění k provádění konkrétní úlohy.
Další informace o protokolu OAuth 2.0 a o tom, jak získat přístupové tokeny, najdete v referenčních informacích k protokolu koncového bodu platformy Microsoft Identity Platform.