Použitie toku implicitných udelení OAuth 2.0 v rámci portálu

Poznámka

S účinnosťou od 12. októbra 2022 sa portály Power Apps nazývajú Power Pages. Ďalšie informácie: Služba Microsoft Power Pages je teraz všeobecne dostupná (blog)
Čoskoro vykonáme migráciu a zlúčenie dokumentácie k portálom Power Apps s dokumentáciou k službe Power Pages.

Táto funkcia umožňuje zákazníkom vytvoriť volania externých API zo strany klienta a zabezpečiť ich pomocou toku implicitných udelení OAuth. Poskytuje koncový bod na získanie bezpečných prístupových tokenov. Tieto tokeny budú obsahovať informácie o identite používateľa, ktoré budú externé API používať na autorizáciu podľa implicitného toku udeľovania OAuth 2.0. Informácie o identite prihláseného používateľa sa zabezpečeným spôsobom odovzdávajú externým volaniam AJAX, čo pomáha vývojárom odovzdať kontext autentifikácie a tiež pomáha používateľom zabezpečiť ich rozhrania API.

Tok implicitných udelení OAuth 2.0 podporuje koncové body tokenu, ktoré klient môže volať pre získanie identifikátora tokenu.

Vlastné certifikáty

Používanie predvoleného certifikátu pre implicitný tok udeľovania OAuth 2.0 je zastarané. Pri používaní koncového bodu OAuth 2.0 budete musieť použiť vlastný certifikát. Použite centrum správcu Power Platform na nahranie vlastného certifikátu. Po nahraní vlastného certifikátu je potrebné aktualizovať nastavenia lokality, ako je uvedené nižšie:

  1. Prejdite na  nastavenia portálu  a vyberte  Nastavenia stránok.

  2. Ak chcete vytvoriť nové nastavenie, vyberte  Nové.

  3. Ak chcete upraviť existujúce nastavenie: dvakrát kliknite na nastavenie lokalít uvedených v mriežke.

  4. Zadajte hodnoty:

    • Názov: CustomCertificates/ImplicitGrantflow
    • Webová lokalita: Priradená webová lokalita
    • Hodnota: Skopírujte odtlačok odovzdaného vlastného certifikátu z obrazovky Spravovať vlastný certifikát a prilepte ho sem. Hodnota bude indikovať, ktorý certifikát sa použije pre implicitný tok grantov.
  5. Vyberte položku  Uložiť a zavrieť. Všeobecná ponuka pre nastavenia novej lokality so špecifikovanými hodnotami.

Podrobnosti koncového bodu tokenu

Môžete tiež získať token tým vytvorením žiadosti post o /token koncový bod. Adresa URL pre koncový bod tokenu je: <portal_url>/_services/auth/token. Koncový bod tokenu podporuje nasledujúce parametre:

Parameter Vyžaduje sa? Opis
client_id Nie Reťazec, ktorý je odovzdaný pri volaní na povolenie koncového bodu. Musíte zabezpečiť, aby ID klienta bolo zaregistrované na portáli. V opačnom prípade sa zobrazí chyba. Identifikácia klienta sa pridá do nárokov v tokene ako aud a parameter appid a dá sa použiť iba klientmi na overenie, či vrátený token je pre ich aplikáciu.
Maximálna dĺžka je 36 znakov. Podporované sú len alfanumerické znaky a pomlčka.
redirect_uri Nie URL portálu, kam môžu byť odosielané a prijímané odozvy na overenie. Musia byť registrované pre konkrétne client_id použité vo volaní a mali by mať presne rovnakú hodnotu ako pri registrácii.
state Nie Hodnota obsiahnuté v žiadosti, ktoré je taktiež vrátená v odpovedi tokenu. To môže byť reťazec akéhokoľvek obsahu, ktorý chcete použiť. Obvykle sa používa náhodne generovaná jedinečná hodnota na zabránenie sa používa na prevenciu útokom podvrhnutia požiadaviek medzi lokalitami.
Maximálna dĺžka je 20 znakov.
nonce Nie Reťazcová hodnota odoslaná klientom, ktorá je zahrnutá vo výslednom identifikátore tokenu ako nárok. Klient potom môže overiť túto hodnotu na zmiernenie útokov zopakovania tokenu. Maximálna dĺžka je 20 znakov.
response_type No Tento parameter podporuje ako hodnotu len token, čo umožňuje vašej aplikácii okamžite získať prístupový token z koncového bodu autorizácie bez toho, aby ste museli vykonať druhú požiadavku na koncový bod autorizácie.

Poznámka

Aj keď client_id, redirect_uri, state a nonce parametre sú nepovinné, odporúča sa ich používať, aby sa ubezpečil, že vaše integrácie sú bezpečné.

Úspešná odpoveď

Koncový bod tokenu vráti ako hlavičky odpovede state a expires_in a token v tele formulára.

Chybná odpoveď

Chyba v koncovom bode tokenu je vrátená ako dokument JSON s týmito hodnotami:

  • ID chyby: Jednoznačný identifikátor chyby.
  • Chybové hlásenie: Konkrétne chybové hlásenie, ktoré vám môže pomôcť určiť príčinu chyby overenia.
  • Identifikácia korelácie: A identifikátor GUID, ktorý sa používa na odlaďovacie účely. Ak ste povolili zapisovanie diagnostických protokolových súborov, identifikácia korelácie by mala byť prítomná v denníku chýb servera.
  • Časová pečiatka: Dátum a čas, kedy sa generuje chyba.

Chybové hlásenie sa zobrazí v predvolenom jazyku prihlásenia používateľa. Ak používateľ nie je prihlásený, zobrazí sa používateľovi stránka na prihlásenie. Napríklad chybová odpoveď vyzerá 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" }

Povolenie podrobností koncového bodu

Poznámka

Povolenie koncového bodu je zastarané. Na získanie tokenu ID použite požiadavku POST koncového bodu tokenu.]

Adresa URL na povolenie koncového bodu je: <portal_url>/_services/auth/authorize. Povolenie koncového bodu podporuje nasledujúce parametre:

Parameter Vyžaduje sa? Opis
client_id Áno Reťazec, ktorý je odovzdaný pri volaní na povolenie koncového bodu. Musíte zabezpečiť, aby ID klienta bolo zaregistrované na portáli. V opačnom prípade sa zobrazí chyba. Identifikácia klienta sa pridá do nárokov v tokene ako aud a parameter appid a dá sa použiť iba klientmi na overenie, či vrátený token je pre ich aplikáciu.
Maximálna dĺžka je 36 znakov. Podporované sú len alfanumerické znaky a pomlčky.
redirect_uri Áno URL portálu, kam môžu byť odosielané a prijímané odozvy na overenie. Musia byť registrované pre konkrétne client_id použité vo volaní a mali by mať presne rovnakú hodnotu ako pri registrácii.
state Nie Hodnota obsiahnuté v žiadosti, ktoré je taktiež vrátená v odpovedi tokenu. To môže byť reťazec akéhokoľvek obsahu, ktorý chcete použiť. Obvykle sa používa náhodne generovaná jedinečná hodnota na zabránenie sa používa na prevenciu útokom podvrhnutia požiadaviek medzi lokalitami.
Maximálna dĺžka je 20 znakov.
nonce Nie Reťazcová hodnota odoslaná klientom, ktorá je zahrnutá vo výslednom identifikátore tokenu ako nárok. Klient potom môže overiť túto hodnotu na zmiernenie útokov zopakovania tokenu. Maximálna dĺžka je 20 znakov.
response_type No Tento parameter podporuje ako hodnotu len token, čím umožňuje vašej aplikácii okamžite získať prístupový token z koncového bodu autorizácie bez toho, aby ste museli vykonať druhú požiadavku na koncový bod autorizácie.

Úspešná odpoveď

Koncový bod povolenia vráti nasledujúce hodnoty v odpovednej URL ako fragment:

  • token: Tokenu sa vráti ako JSON Web Token (JWT) digitálne podpísaný súkromným kľúčom portálu.
  • stav: Ak parameter stav je obsiahnutý v žiadosti, v odpovedi by sa mala zobraziť rovnaká hodnota. Aplikáciu by mala preveriť, či hodnoty stavu v žiadosti a odpovedi sú identické.
  • expires_in: Dĺžka času, počas ktorého je prístupový token platný (v sekundách).

Napríklad úspešná odpoveď vyzerá takto:

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

Chybná odpoveď

Chyba v koncovom bode povolenia je vrátená ako dokument JSON s týmito hodnotami:

  • ID chyby: Jednoznačný identifikátor chyby.
  • Chybové hlásenie: Konkrétne chybové hlásenie, ktoré vám môže pomôcť určiť príčinu chyby overenia.
  • Identifikácia korelácie: A identifikátor GUID, ktorý sa používa na odlaďovacie účely. Ak ste povolili zapisovanie diagnostických protokolových súborov, identifikácia korelácie by mala byť prítomná v denníku chýb servera.
  • Časová pečiatka: Dátum a čas, kedy sa generuje chyba.

Chybové hlásenie sa zobrazí v predvolenom jazyku prihlásenia používateľa. Ak používateľ nie je prihlásený, zobrazí sa používateľovi stránka na prihlásenie. Napríklad chybová odpoveď vyzerá 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" }

Overenie ID tokenu

Len získanie ID tokenu nie je dostatočné na overenie používateľa. Musíte tiež overiť podpis tokenu a overiť nárok v tokene na základe požiadaviek vašej aplikácie. Verejný koncový bod tokenu poskytuje verejný kľúč portálu, ktorý je možné použiť na overenie podpisu tokenu poskytovaného portálom. Adresa URL pre verejný koncový bod tokenu je: <portal_url>/_services/auth/publickey.

Zapnutie alebo vypnutie toku implicitných udelení

Predvolene je povolený tok implicitných povolení. Ak chcete vypnúť tok implicitných povolení, nastavte hodnotu nastavenia stránky Connector/ImplicitGrantFlowEnabled na False.

Ak toto nastavenie lokality nie je na vašom portáli dostupné, musíte vytvoriť nové nastavenie lokality so zodpovedajúcou hodnotu.

Konfigurácia platnosti tokenu

Token je predvolene platný 15 minút. Ak chcete zmeniť platnosť tokenu, nastavte hodnotu nastavenia lokality ImplicitGrantFlow/TokenExpirationTime na požadovanú hodnotu. Hodnota musí byť zadaná v sekundách. Maximálna hodnota môže byť 1 hodina a minimálna hodnota musí byť 1 minúta. Ak je zadaná nesprávna hodnota (napríklad alfanumerické znaky), použije sa predvolená hodnota 15 minút. Ak zadáte hodnotu väčšiu než maximálna hodnota alebo menšiu než minimálnu hodnotu, maximálne a minimálne hodnoty sa použijú, v predvolenom nastavení.

Napríklad, ak chcete nastaviť platnosť tokenu na 30 minút, nastavte hodnotu nastavenia lokality ImplicitGrantFlow/TokenExpirationTime na 1800. Ak chcete nastaviť platnosť tokenu na 1 hodinu, nastavte hodnotu nastavenia lokality ImplicitGrantFlow/TokenExpirationTime na 3600.

Registrácia ID klienta pre tok implicitných udelení

Musíte sa zaregistrovať ID klienta na portáli, pre ktorý je povolený tok. Ak chcete zaregistrovať ID klienta, musíte vytvoriť nasledovné nastavenia lokality:

Nastavenie lokality Value
ImplicitGrantFlow/RegisteredClientId Platné hodnoty ID klienta, ktoré sú povolené pre tento portál. Hodnoty musia byť oddelené bodkočiarkou a môžu obsahovať len alfanumerické znaky a pomlčky. Maximálna dĺžka je 36 znakov.
ImplicitGrantFlow/{ClientId}/RedirectUri Platné URI presmerovania, ktoré sú povolené pre konkrétne ID klienta. Hodnoty musia byť oddelené bodkočiarkou. Poskytnutá adresa URL musí byť platná webová stránka portálu.

Vzorka kódu

Nasledujúci ukážkový kód môžete použiť na začatie používania implicitných povolení OAuth 2.0 s rozhraniami API pre portály Power Apps.

Použite token portálu Oauth s externým webovým rozhraním API

Táto ukážka obsahuje projekt založený na ASP.NET a používa sa na overenie tokenu ID vydaného portálmi Power Apps. Kompletnú ukážku nájdete tu: Použite tokenu portálu Oauth s externým webovým rozhraním API.

Ukážka koncového bodu tokenu

Táto ukážka ukazuje, ako môžete pomocou funkcie getAuthenticationToken načítať ID tokenu pomocou koncového bodu tokenu v portáloch Power Apps. Ukážku nájdete tu: Ukážka koncového bodu tokenu,

Poznámka

Môžete nás informovať o svojich voľbách jazyka pre dokumentáciu? Absolvujte krátky prieskum. (upozorňujeme, že tento prieskum je v angličtine)

Prieskum bude trvať približne sedem minút. Nezhromažďujú sa žiadne osobné údaje (vyhlásenie o používaní osobných údajov).