Utilizați fluxul de permisiuni implicit OAuth 2.0 în cadrul portalului

Notă

Începând cu 12 octombrie 2022, portalurile Power Apps sunt Power Pages. Mai multe informații: Microsoft Power Pages este acum disponibil în general (blog)
În curând vom migra și vom îmbina documentația portalurilor Power Apps cu documentația Power Pages.

Această caracteristică permite unui client să efectueze apeluri pe partea clientului către API-uri externe și să le securizeze utilizând fluxul de permisiuni implicite OAuth. Oferă un punct final pentru a obține tokenuri de acces securizat. Aceste tokenuri vor conține informațiile de identitate ale utilizatorului care vor fi utilizate de API-uri externe pentru autorizare după fluxul de permisiuni implicite OAuth 2.0. Informațiile de identitate ale unui utilizator conectat sunt transmise în mod securizat apelurilor AJAX externe, ceea ce ajută dezvoltatorii să treacă contextul de autentificare și, de asemenea, îi va ajuta pe utilizatori să-și securizeze API-urile.

Fluxul de acordare implicit OAuth 2.0 acceptă token puncte finale pe care un client le poate apela pentru a obține un token ID.

Certificate particularizate

Folosirea fluxului implicit de acordare a certificatul implicit pentru OAuth 2.0 este perimată. Va trebui să utilizați un certificat personalizat în timp ce utilizați punctul final OAuth 2.0. Folosiți Power Platform centrul de administrare pentru a încărca certificatul personalizat. După încărcarea certificatului personalizat, trebuie să actualizați setările site-ului după cum urmează:

  1. Accesați setări portal și selectați Setări site.

  2. Pentru a crea o setare nouă, selectați Nou.

  3. Pentru a edita o setare existentă, selectați Setarea de site menționată în grilă.

  4. Specificați valorile

    • Nume: CustomCertificates/ImplicitGrantflow
    • Site web site-ul web asociat
    • Valoare: Copiați amprenta digitală a certificatului personalizat încărcat din ecranul Gestionați certificatul personalizat și inserați-o aici. Valoarea va indica ce certificat va fi utilizat pentru fluxul de grant implicit.
  5. Selectați Salvare și închidere. Meniul general pentru Setări site noi cu valori specificate.

Detalii pentru tokenul punctului final

De asemenea, puteți obține o publicare făcând o solicitare la punctul final /token. URL-ul pentru punctul final al tokenului este: <portal_url>/_services/auth/token. Punctul final al tokenului acceptă următorii parametri:

Parametru Necesar? Descriere
client_id Nu Un șir care este trecut la efectuarea unui apel către punctul final autorizat. Trebuie să vă asigurați că ID-ul de client este înregistrat în portal. În caz contrar, se afișează o eroare. ID-ul clientului este adăugat în solicitările din simbol ca aud și parametrul appid și poate fi utilizat de clienți pentru a valida că simbolul returnat este pentru aplicația lor.
Lungimea maximă este de 36 de caractere. Sunt acceptate numai caractere alfanumerice și cratimă.
redirect_uri Nu Adresa URL a portalului unde pot fi trimise și primite răspunsurile de autentificare. Trebuie să fie înregistrată exact pentru client_id utilizat în apel și trebuie să aibă exact aceeași valoare ca cea înregistrată.
stare Nu O valoare inclusă în solicitare care este, de asemenea, returnată în răspunsul simbolului. Acesta poate fi un șir de orice conținut pe care doriți să-l utilizați. De obicei, o valoare unică generată la întâmplare este folosită pentru a împiedica atacurile de falsificare cross-site.
Lungimea maximă este de 20 de caractere.
nonce Nu O valoare de șir trimisă de client care este inclusă în simbolul de ID rezultat ca o solicitare. Clientul poate apoi să verifice această valoare pentru a atenua atacurile de reluare a simbolului. Lungimea maximă este de 20 de caractere.
response_type No Acest parametru acceptă doar token ca valoare, permițănd aplicației dvs. să primească imediat un token de acces de la punctul final de autorizare, fără a face o a doua solicitare către punctul final autorizat.

Notă

Chiar dacă parametrii client_id, redirect_uri, state, și nonce sunt opționali, este recomandat să-i folosiți pentru a vă asigura că integrarea este securizată.

Răspuns pozitiv

Punctul final al tokenului returnează starea și expires_in ca anteturi de răspuns, și token în corpul formularului.

Eroare de răspuns

Eroarea în punctul final al tokenului este returnată ca un document JSON cu următoarele valori:

  • ID eroare: Identificator unic al erorii.
  • Mesaj de eroare: Un mesaj de eroare specifică care vă poate ajuta să identificați cauza principală a unei erori de autentificare.
  • ID de corelare: Un GHID care este folosit pentru depanare. Dacă ați activat logarea de diagnosticare, ID-ul de corelare va fi prezent în jurnalele de eroare ale serverului.
  • Marcă de timp: Data și ora producerii erorii este generată.

Mesajul de eroare este afișat în limba prestabilită a utilizatorului conectat. Dacă utilizatorul nu este conectat, se va afișa o pagină de conectare pentru conectarea utilizatorului. De exemplu, un răspuns de eroare arată după cum urmează:

{"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" }

Autorizați detalii de punct final

Notă

Punctul final autorizat este perimat. Utilizați cererea POST pentru punctul final al tokenului pentru a obține un token ID.]

URL-ul pentru punctul final autorizat este: <portal_url>/_services/auth/authorize. Punctul final de autorizare acceptă următorii parametri:

Parametru Necesar? Descriere
client_id Da Un șir care este trecut la efectuarea unui apel către punctul final autorizat. Trebuie să vă asigurați că ID-ul de client este înregistrat în portal. În caz contrar, se afișează o eroare. ID-ul clientului este adăugat în solicitările din simbol ca aud și parametrul appid și poate fi utilizat de clienți pentru a valida că simbolul returnat este pentru aplicația lor.
Lungimea maximă este de 36 de caractere. Sunt acceptate numai caractere alfanumerice și cratime.
redirect_uri Da Adresa URL a portalului unde pot fi trimise și primite răspunsurile de autentificare. Trebuie să fie înregistrată exact pentru client_id utilizat în apel și trebuie să aibă exact aceeași valoare ca cea înregistrată.
stare Nu O valoare inclusă în solicitare care este, de asemenea, returnată în răspunsul simbolului. Acesta poate fi un șir de orice conținut pe care doriți să-l utilizați. De obicei, o valoare unică generată la întâmplare este folosită pentru a împiedica atacurile de falsificare cross-site.
Lungimea maximă este de 20 de caractere.
nonce Nu O valoare de șir trimisă de client care este inclusă în simbolul de ID rezultat ca o solicitare. Clientul poate apoi să verifice această valoare pentru a atenua atacurile de reluare a simbolului. Lungimea maximă este de 20 de caractere.
response_type No Acest parametru acceptă doar token ca valoare, care permite aplicației dvs. să primească imediat un token de acces de la punctul final de autorizare, fără a face o a doua solicitare către punctul final autorizat.

Răspuns pozitiv

Parametrul final autorizat returnează următoarele valori în URL-ul de răspuns ca un fragment:

  • token: Token-ul este returnat ca un JSON Web Token (JWT) semnat digital de cheia privată a portalului.
  • stare: În cazul în care un parametru de stare este inclus în cerere, aceeași valoare ar trebui să apară în răspuns. Aplicația trebuie să verifice dacă valorile de stare din cerere și răspuns sunt identice.
  • expires_in: Durata de timp pentru care simbolul de acces este valabil (în secunde).

De exemplu, un răspuns pozitiv arată după cum urmează:

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

Eroare de răspuns

Eroarea în punctul final de autorizare este returnată ca un document JSON cu următoarele valori:

  • ID eroare: Identificator unic al erorii.
  • Mesaj de eroare: Un mesaj de eroare specifică care vă poate ajuta să identificați cauza principală a unei erori de autentificare.
  • ID de corelare: Un GHID care este folosit pentru depanare. Dacă ați activat logarea de diagnosticare, ID-ul de corelare va fi prezent în jurnalele de eroare ale serverului.
  • Marcă de timp: Data și ora producerii erorii este generată.

Mesajul de eroare este afișat în limba prestabilită a utilizatorului conectat. Dacă utilizatorul nu este conectat, se va afișa pagina de conectare pentru conectarea utilizatorului. De exemplu, un răspuns de eroare arată după cum urmează:

{"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" }

Validați tokenul ID

Obținerea unui simbol de identificare nu este suficientă pentru a autentifica utilizatorul; trebuie, de asemenea, să confirmați semnătura tokenului și să verificați solicitările din token pe baza cerințelor aplicației. Punctul final public pentru token furnizează cheia publică a portalului, care poate fi utilizată pentru a valida semnătura tokenului furnizat de portal. URL-ul pentru punctul final public al tokenului este: <portal_url>/_services/auth/publickey.

Activați sau dezactivați fluxul de acordare implicit

În mod implicit, fluxul de acordare implicit este activat. Dacă doriți să dezactivați debitul implicit, setați valoarea setării site-ului Conector/ImplicitGrantFlowEnabled la Fals.

Dacă această setare de site nu este disponibilă în portalul dvs., trebuie să creați o nouă setare a site-ului cu o valoare corespunzătoare.

Configurați valabilitatea tokenului

În mod implicit, token-ul este valabil timp de 15 minute. Dacă doriți să modificați validitatea tokenului, setați valoarea setării site-ului ImplicitGrantFlow/TokenExpirationTime la valoarea dorită. Valoarea trebuie să fie specificată în secunde. Valoarea maximă poate fi de 1 oră, și valoarea minimă trebuie să fie de 1 minut. Dacă este specificată o valoare incorectă (de exemplu, caractere alfanumerice), se folosește valoarea implicită de 15 minute. Dacă specificați o valoare mai mare decât valoarea maximă sau mai mică decât valoarea minimă, valorile maxime și minime sunt utilizate, în mod implicit.

De exemplu, pentru a stabili validitatea token la 30 de minute, setați valoarea setării site-ului ImplicitGrantFlow/TokenExpirationTime la 1800. Pentru a stabili validitatea token la 1 oră, setați valoarea setării site-ului ImplicitGrantFlow/TokenExpirationTime la 3600.

Identificați ID-ul clientului pentru fluxul de acordare implicit

Trebuie să înregistrați ID-ul clientului la portalul pentru care acest flux este permis. Pentru a înregistra un ID de client, trebuie să creați următoarele setări ale site-ului:

Setare de site Value
ImplicitGrantFlow/RegisteredClientId Valorile valide ale ID de client care sunt valabile pentru acest portal. Valorile trebuie separate prin punct și virgulă și pot conține caractere alfanumerice și cratime. Lungimea maximă este de 36 de caractere.
ImplicitGrantFlow/{ClientId}/RedirectUri URI-urile de redirecționare valide care sunt permise pentru un anumit ID de client. Valorile trebuie separate prin punct și virgulă. Adresa URL furnizată trebuie să fie de o pagină Web validă a portalului.

Cod eșantion

Puteți utiliza următorul cod de eșantion pentru a începe să utilizați Oauth 2.0 Grant Implicit cu API-uri de portaluri Power Apps.

Utilizați tokenul de portal Oauth cu un API Web extern

Acest eșantion este un proiect bazat pe ASP.NET și este utilizat pentru validarea tokenului de identificare emis de portaluri Power Apps. Eșantionul complet poate fi găsit aici: Utilizați tokenul pentru portalul Oauth cu un API Web extern.

Token de eșantion Punct final

Acest exemplu arată modul în care puteți utiliza funcția getAuthenticationToken pentru a obține un token ID folosind punctul final Token din portaluri Power Apps. Eșantionul poate fi găsit aici: Eșantion de token Punct final.

Notă

Ne puteți spune care preferințele dvs. lingvistice pentru documentație? Răspundeți la un chestionar scurt. (rețineți că acest chestionar este în limba engleză)

Chestionarul va dura aproximativ șapte minute. Nu sunt colectate date personale (angajament de respectare a confidențialității).