Použití toku implicitního udělení přístupu OAuth 2.0 na vašem portálu

Poznámka

S účinností od 12. října 2022 jsou portály Power Apps Power Pages. Další informace: Služba Microsoft Power Pages je nyní obecně dostupná (blog)
Zanedlouho migrujeme a sloučíme dokumentaci k portálům Power Apps s dokumentací k Power Pages.

Tato funkce umožňuje zákazníkům provádět volání na straně klienta do externích rozhraní API a zabezpečit je pomocí toku implicitního udělení přístupu OAuth. Poskytuje koncový bod pro získání bezpečných přístupových tokenů. Tyto tokeny budou obsahovat informace o identitě uživatele, které budou použity externími rozhraními API pro autorizaci podle implicitního grantového toku OAuth 2.0. Informace o identitě přihlášeného uživatele jsou předávány zabezpečeným způsobem externím voláním AJAX, což vývojářům pomáhá předat kontext ověřování a také uživatelům pomůže zabezpečit jejich rozhraní API.

Tok implicitního udělení přístupu OAuth 2.0 podporuje koncové body token, které klient může volat pro získání tokenu ID.

Vlastní certifikáty

Použití výchozího certifikátu pro tok implicitního udělení oprávnění OAuth 2.0 je zastaralé. Při používání koncového bodu OAuth 2.0 budete muset použít vlastní certifikát. Použijte centrum pro správu Power Platform k nahrání vlastního certifikátu. Po nahrání vlastního certifikátu je třeba aktualizovat nastavení webu, jak je uvedeno níže.

  1. Jděte na nastavení portálu  a vyberte Nastavení webu.

  2. Výběrem možnosti  Nové vytvořte nové vlákno.

  3. Chcete-li upravit stávající nastavení, vyberte nastavení webu uvedené v mřížce.

  4. Určení hodnot:

    • Název:  CustomCertificates/ImplicitGrantflow
    • Web: Přidružený web
    • Hodnota: Zkopírujte otisk nahraného vlastního certifikátu z obrazovky Správa vlastního certifikátu a vložte sem. Hodnota vyjadřuje, který certifikát bude použit pro tok implicitního udělení přístupu.
  5. Vyberte  Uložit a zavřít. Obecná nabídka pro nastavení nového webu se zadanými hodnotami.

Podrobnosti koncového bodu tokenu

Token můžete získat také tak, že provedete požadavek na odeslání do koncového bodu /token. Adresa URL pro koncový bod tokenu je: <portal_url>/_services/auth/token. Koncový bod tokenu podporuje následující parametry:

Parametr Povinný? Popis
client_id Ne Řetězec, který je předán při volání do koncového bodu autorizace. Musíte zajistit, že ID klienta je registrováno na portálu. Jinak se zobrazí chyba. ID klienta je přidáno do deklarované identity v tokenu jako parametr aud a appid a může být použito klienty k ověření, zda je vrácený token pro jejich aplikaci.
Maximální délka je 36 znaků. Podporovány jsou pouze alfanumerické znaky a pomlčka.
redirect_uri Ne URL portálu, kde lze odesílat a přijímat odpovědi na ověřování. Musí být registrována pro konkrétní client_id používané ve volání a musí to být přesně stejná hodnota jako registrovaná.
state Ne Hodnota obsažená v požadavku, která je též vrácena v odpovědi tokenu. Může to být řetězec jakéhokoliv obsahu, který chcete použít. Obvykle se používá náhodně generovaná, jedinečná hodnota k zabránění útoků padělání mezi stránkami.
Maximální délka je 20 znaků.
nonce Ne Hodnota řetězce odeslaná klientem, která je obsažena ve výsledném tokenu ID jako deklarovaná identita. Klient pak můžete ověřit tuto hodnotu a zmírnit útoky s použitím přehrání tokenu. Maximální délka je 20 znaků.
response_type Ne Tento parametr podporuje pouze token jako hodnotu, což vaší aplikaci umožňuje okamžitě přijímat token přístupu z koncového bodu autorizace, bez provedení druhého požadavku na koncový bod autorizace.

Poznámka

I když jsou parametry client_id, redirect_uri, state, a nonce volitelné, je vhodné je používat, aby vaše integrace byly zabezpečené.

Úspěšná odpověď

Koncový bod tokenu vrátí state a expires_in jako záhlaví odpovědi a token v textu formuláře.

Chybná odpověď

Chyba v koncovém bodu tokenu je vrácena jako JSON dokument s následujícími hodnotami:

  • ID chyby: Jedinečný identifikátor chyby.
  • Chybová zpráva: Konkrétní chybová zpráva, která vám pomůže určit hlavní příčinu chyby ověřování.
  • ID korelace: Identifikátor GUID, který se používá pro účely ladění. Pokud jste povolili diagnostické protokolování, ID korelace by bylo přítomné v protokolu chyb serveru
  • Časové razítko: Datum a čas vygenerování chyby.

Chybová zpráva se zobrazí ve výchozím jazyce přihlášeného uživatele. Pokud uživatel není přihlášen, zobrazí se přihlašovací stránka pro přihlášení uživatele. Chybová odpověď například vypadá takto:

{"ErrorId": "PortalSTS0001", "ErrorMessage": "Client Id provided in the request is not a valid client Id registered for this portal. Please check the parameter and try again.", "Timestamp": "4/5/2019 10:02:11 AM", "CorrelationId": "7464eb01-71ab-44bc-93a1-f221479be847" }

Podrobnosti koncového bodu autorizace

Poznámka

Koncový bod pro autorizaci je zastaralý. Pro získání ID tokenu použijte požadavek POST koncového bodu Token.]

Adresy URL pro koncový bod autorizace je: <portal_url>/_services/auth/authorize. Koncový bod autorizace podporuje následující parametry:

Parametr Povinný? Popis
client_id Ano Řetězec, který je předán při volání do koncového bodu autorizace. Musíte zajistit, že ID klienta je registrováno na portálu. Jinak se zobrazí chyba. ID klienta je přidáno do deklarované identity v tokenu jako parametr aud a appid a může být použito klienty k ověření, zda je vrácený token pro jejich aplikaci.
Maximální délka je 36 znaků. Podporovány jsou pouze alfanumerické znaky a pomlčky.
redirect_uri Ano URL portálu, kde lze odesílat a přijímat odpovědi na ověřování. Musí být registrována pro konkrétní client_id používané ve volání a musí to být přesně stejná hodnota jako registrovaná.
state Ne Hodnota obsažená v požadavku, která je též vrácena v odpovědi tokenu. Může to být řetězec jakéhokoliv obsahu, který chcete použít. Obvykle se používá náhodně generovaná, jedinečná hodnota k zabránění útoků padělání mezi stránkami.
Maximální délka je 20 znaků.
nonce Ne Hodnota řetězce odeslaná klientem, která je obsažena ve výsledném tokenu ID jako deklarovaná identita. Klient pak můžete ověřit tuto hodnotu a zmírnit útoky s použitím přehrání tokenu. Maximální délka je 20 znaků.
response_type Ne Tento parametr podporuje pouze token jako hodnotu, což vaší aplikaci umožňuje okamžitě přijímat token přístupu z koncového bodu autorizace, bez provedení druhého požadavku na koncový bod autorizace.

Úspěšná odpověď

Koncový bod autorizace vrací následující hodnoty v URL adrese odpovědi jako fragment:

  • token: Token se vrací jako JSON Web Token (JWT) digitálně podepsaný privátním klíčem portálu.
  • state: Pokud je parametr state obsažen v požadavku, měla by se v odpovědi objevit stejná hodnota. Aplikace by měla ověřit, zda jsou hodnoty state v požadavku a odpovědi shodné.
  • expires_in: Doba, po kterou je přístupový token platný (v sekundách).

Úspěšná odpověď například vypadá takto:

GET https://aadb2cplayground.azurewebsites.net/#token=eyJ0eXAiOiJKV1QiLCJhbGciOI1NisIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q&expires_in=3599&state=arbitrary_data_you_sent_earlier

Chybná odpověď

Chyba v koncovém bodu autorizace je vrácena jako JSON dokument s následujícími hodnotami:

  • ID chyby: Jedinečný identifikátor chyby.
  • Chybová zpráva: Konkrétní chybová zpráva, která vám pomůže určit hlavní příčinu chyby ověřování.
  • ID korelace: Identifikátor GUID, který se používá pro účely ladění. Pokud jste povolili diagnostické protokolování, ID korelace by bylo přítomné v protokolu chyb serveru
  • Časové razítko: Datum a čas vygenerování chyby.

Chybová zpráva se zobrazí ve výchozím jazyce přihlášeného uživatele. Pokud uživatel není přihlášen, zobrazí se přihlašovací stránka pro přihlášení uživatele. Chybová odpověď například vypadá takto:

{"ErrorId": "PortalSTS0001", "ErrorMessage": "Client Id provided in the request is not a valid client Id registered for this portal. Please check the parameter and try again.", "Timestamp": "4/5/2019 10:02:11 AM", "CorrelationId": "7464eb01-71ab-44bc-93a1-f221479be847" }

Ověření tokenu ID

Pouhé získání tokenu ID k ověření uživatele nestačí; musíte také ověřit podpis tokenu a ověřit deklarované identity v tokenu na základě požadavků vaší aplikace. Veřejný koncový bod tokenu poskytuje veřejný klíč portálu, který lze použít k ověření podpisu tokenu poskytovaného portálem. Adresa URL pro věřejný koncový bod tokenu je: <portal_url>/_services/auth/publickey.

Vypnutí a zapnutí toku implicitní udělení přístupu

Ve výchozím nastavení je tok implicitní udělení přístupu povolen. Pokud ho chcete vypnout, nastavte hodnotu nastavení na webu Connector/ImplicitGrantFlowEnabled na False.

Pokud není toto nastavení webu k dispozici na vašem portálu, musíte vytvořit nové nastavení webu s příslušnou hodnotou.

Konfigurace platnosti tokenu

Ve výchozím nastavení je token platný po dobu 15 minut. Pokud chcete změnit platnost tokenu, nastavte hodnotu nastavení webu ImplicitGrantFlow/TokenExpirationTime na požadovanou hodnotu. Hodnotu je nutné zadat v sekundách. Maximální hodnota může být 1 hodina a minimální hodnota musí být 1 minuta. Pokud je zadána nesprávná hodnota (například alfanumerické znaky), je použita výchozí hodnota 15 minut. Pokud zadáte hodnotu větší než maximální hodnota nebo nižší než minimální hodnota, použijí se ve výchozím nastavení maximální a minimální hodnoty.

Například pro nastavení platnosti tokenu na 30 minut nastavte hodnotu nastavení na webu ImplicitGrantFlow/TokenExpirationTime na 1800. Pro nastavení platnosti tokenu na 1 hodinu nastavte hodnotu nastavení na webu ImplicitGrantFlow/TokenExpirationTime na 3600.

Registrace ID klienta pro tok implicitního udělení přístupu

ID klienta je třeba zaregistrovat s portálem, u kterého je povolen tento tok. Pro registraci ID klienta je nutné vytvořit následující nastavení webu:

Nastavení webu Value
ImplicitGrantFlow/RegisteredClientId Platné hodnoty ID klienta, které jsou povoleny pro tento portál. Hodnoty musí být odděleny středníkem a mohou obsahovat alfanumerické znaky a pomlčky. Maximální délka je 36 znaků.
ImplicitGrantFlow/{ClientId}/RedirectUri Platné identifikátory URI přesměrování, které jsou povoleny pro konkrétní ID klienta. Hodnoty musí být odděleny středníkem. Zadaná adresa URL musí být platnou webovou stránku portálu.

Ukázkový kód

Následující ukázkový kód můžete použít k zahájení používání implicitního udělení oprávnění OAuth 2.0 s rozhraními API portálů Power Apps.

Použití tokenu OAuth portálu s externím webovým rozhraním API

Tato ukázka je projekt založený na ASP.NET a používá se k ověření tokenu ID vydaného portály Power Apps. Kompletní ukázku najdete zde: Použití tokenu OAuth portálu s externím webovým rozhraním API.

Ukázka koncového bodu tokenu

Tato ukázka ukazuje, jak můžete pomocí funkce getAuthenticationToken načíst token ID pomocí koncového bodu tokenu na portálech Power Apps. Ukázku najdete zde: Ukázka koncového bodu tokenu.

Poznámka

Můžete nám sdělit, jaké máte jazykové preference pro dokumentaci? Zúčastněte se krátkého průzkumu. (upozorňujeme, že tento průzkum je v angličtině)

Průzkum bude trvat asi sedm minut. Nejsou shromažďovány žádné osobní údaje (prohlášení o zásadách ochrany osobních údajů).