Korišćenje OAuth toka implicitnog odobrenja u okviru vašeg portala

Napomena

Od 12. oktobra 2022. Power Apps portali postaju Power Pages. Više informacija: Usluga Microsoft Power Pages je sada opštedostupna (blog)
Uskoro ćemo migrirati i objediniti dokumentaciju o Power Apps portalima sa dokumentacijom o usluzi Power Pages.

Ova funkcija omogućava klijentu da upućujete pozive na strani klijenta spoljnim API-jima i da ih obezbedi korišćenjem OAuth toka implicitnog odobrenja. Ona obezbeđuje krajnju tačku za dobijanje tokena za bezbedan pristup. Ti tokeni će sadržati informacije o identitetu korisnika koje će koristiti spoljni API-ji za autorizaciju prateći OAuth 2.0 tok implicitnog odobrenja. Informacije o identitetu prijavljenog korisnika prosleđuju se na bezbedan način spoljnim AJAX pozivima, što pomaže programerima da prođu kontekst potvrde identiteta, a takođe će pomoći korisnicima da obezbede svoje API-je.

OAuth 2.0 tok implicitnog odobrenja podržava krajnje tačke tokena koje klijent može da poziva kako bi dobio ID tokena.

Prilagođeni certifikati

Korišćenje podrazumevanog certifikata za OAuth 2.0 tok implicitnog odobrenja je zastareo. Moraćete da koristite prilagođeni certifikat dok koristite OAuth 2.0 krajnju tačku. Koristite Power Platform centar za administraciju da biste otpremili prilagođeni certifikat. Kada otpremite prilagođeni certifikat, potrebno je da ažurirate postavke lokacije kao u nastavku:

  1. Idite na postavke portala i izaberite Postavke lokacije.

  2. Da biste kreirali novu postavku, izaberite Novo.

  3. Da biste uredili postojeće podešavanje, izaberite postavku lokacije navedenu u mreži.

  4. Navedite vrednosti:

    • Naziv: CustomCertificates/ImplicitGrantflow
    • Veb-lokacija: Povezana veb-lokacija
    • Vrednost: Kopirajte otisak otpremljenog prilagođenog certifikata sa ekrana „Upravljanje prilagođenim certifikatom“ i nalepite ga ovde. Vrednost će naznačiti koji certifikat će se koristiti za tok implicitnog odobrenja.
  5. Izaberite stavku Sačuvaj i zatvori. Opšti meni za postavke nove lokacije sa navedenim vrednostima.

Detalji tokena krajnje tačke

Možete i da preuzmete token slanjem zahteva krajnjoj tački za /token. URL adresa krajnje tačke tokena je: <portal_url>/_services/auth/token. Krajnja tačka tokena podržava sledeće parametre:

Parametar Zahtevano? Opis
client_id Ne Niska koja je prosleđena prilikom obavljanja poziva do krajnje tačke sa odobrenjem. Morate da se uverite da je ID klijenta registrovan na portalu. U suprotnom, biće prikazana greška. ID klijenta se dodaje u zahteve u tokenu kao parametar aud i appid i mogu ga koristiti klijenti za proveru valjanosti tokena koji se vraća za njihove aplikacije.
Maksimalna dužina je 36 znakova. Podržani su samo alfanumerički i znakovi i crtica.
redirect_uri Ne URL adresa portala gde odgovara potvrda identiteta može da se šalje i prima. Ona mora biti registrovana za određeni client_id korišćen u pozivu i trebalo bi da bude potpuno ista vrednost kao registrovana vrednost.
status Ne Vrednost obuhvaćena u zahtevu koji se vraća i u odgovoru tokena. To može da bude niska bilo kog sadržaja koji želite da koristite. Obično, nasumično generisana jedinstvena vrednost se koristi za sprečavanje napada falsifikovanja unakrsnih zahteva između lokacija.
Maksimalna dužina je 20 znakova.
jednokratni ključ Ne Vrednost niske koju je poslao klijent koja je uključena dobijeni ID token kao zahtev. Klijent zatim može da proveri ovu vrednost kako bi ublažio rizike ponavljanja tokena. Maksimalna dužina je 20 znakova.
response_type Ne Taj parametar podržava samo token kao vrednost, omogućavajući vašoj aplikaciji da odmah prima token za pristup od krajnje tačke sa odobrenjem, bez slanja drugog zahteva krajnjoj tački sa odobrenjem.

Napomena

Iako su client_id, redirect_uri, state i nonce parametri su opcioni, preporučujemo da ih koristite kako biste se uverili da je vaša integracija bezbedna.

Uspešan odgovor

Krajnja tačka tokena vraća status i parametar expires_in kao zaglavlja odgovora, a token u telu obrasca.

Pogrešan odgovor

Greška u krajnjoj tački tokena se vraća kao JSON dokument sa sledećim vrednostima:

  • ID greške: Jedinstveni identifikator greške.
  • Poruka o grešci:Određena poruka o grešci koja vam može pomoći da identifikujete osnovni uzrok greške potvrde identiteta.
  • ID korelacije: GUID koji se koristi u svrhe otklanjanja grešaka. Ako ste omogućili dijagnostičko evidentiranje, ID korelacije će biti prisutan u evidenciji grešaka servera.
  • Vremenska oznaka: Datum i vreme kada je greška generisana.

Poruka o grešci je prikazana na podrazumevanom jeziku prijavljenog korisnika. Ako korisnik nije prijavljen, stranica za prijavljivanje se prikazuje korisniku kako bi se prijavio. Na primer, odgovor sa greškom izgleda sledeće:

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

Detalji o krajnjoj tački sa odobrenjem

Napomena

Krajnja tačka sa odobrenjem je zastarela. Koristite POST zahtev krajnje tačke tokena da biste dobili ID token.]

URL adresa za krajnju tačku sa odobrenjem je: <portal_url>/_services/auth/authorize. Krajnja tačka sa odobrenjem podržava sledeće parametre:

Parametar Zahtevano? Opis
client_id Da Niska koja je prosleđena prilikom obavljanja poziva do krajnje tačke sa odobrenjem. Morate da se uverite da je ID klijenta registrovan na portalu. U suprotnom, biće prikazana greška. ID klijenta se dodaje u zahteve u tokenu kao parametar aud i appid i mogu ga koristiti klijenti za proveru valjanosti tokena koji se vraća za njihove aplikacije.
Maksimalna dužina je 36 znakova. Podržani su samo alfanumerički znakovi i crtice.
redirect_uri Da URL adresa portala gde odgovara potvrda identiteta može da se šalje i prima. Ona mora biti registrovana za određeni client_id korišćen u pozivu i trebalo bi da bude potpuno ista vrednost kao registrovana vrednost.
status Ne Vrednost obuhvaćena u zahtevu koji se vraća i u odgovoru tokena. To može da bude niska bilo kog sadržaja koji želite da koristite. Obično, nasumično generisana jedinstvena vrednost se koristi za sprečavanje napada falsifikovanja unakrsnih zahteva između lokacija.
Maksimalna dužina je 20 znakova.
jednokratni ključ Ne Vrednost niske koju je poslao klijent koja je uključena dobijeni ID token kao zahtev. Klijent zatim može da proveri ovu vrednost kako bi ublažio rizike ponavljanja tokena. Maksimalna dužina je 20 znakova.
response_type Ne Taj parametar podržava samo token kao vrednost, što omogućava vašoj aplikaciji da odmah prima token za pristup od krajnje tačke sa odobrenjem, bez slanja drugog zahteva krajnjoj tački sa odobrenjem.

Uspešan odgovor

Krajnja tačka sa odobrenjem vraća sledeće vrednosti u URL adresi odgovora kao fragment:

  • token: Token se vraća kao JSON veb-token (JWT) digitalno potpisan privatnim ključem portala.
  • status: Ako je parametar statusa uključen u zahtevu, ista vrednost bi trebalo da se pojavi u odgovoru. Aplikacija bi trebalo da proveri da li su vrednosti statusa u zahtevu i odgovoru identični.
  • expires_in: Dužina vremena koliko je token za pristup važeći (u sekundama).

Na primer, uspešan odgovor izgleda sledeće:

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

Pogrešan odgovor

Greška u krajnjoj tački za odobrenje se vraća kao JSON dokument sa sledećim vrednostima:

  • ID greške: Jedinstveni identifikator greške.
  • Poruka o grešci:Određena poruka o grešci koja vam može pomoći da identifikujete osnovni uzrok greške potvrde identiteta.
  • ID korelacije: GUID koji se koristi u svrhe otklanjanja grešaka. Ako ste omogućili dijagnostičko evidentiranje, ID korelacije će biti prisutan u evidenciji grešaka servera.
  • Vremenska oznaka: Datum i vreme kada je greška generisana.

Poruka o grešci je prikazana na podrazumevanom jeziku prijavljenog korisnika. Ako korisnik nije prijavljen, stranica za prijavljivanje se prikazuje korisniku kako bi se prijavio. Na primer, odgovor sa greškom izgleda sledeće:

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

Provera valjanosti ID tokena

Samo dobijanje ID tokena nije dovoljno za potvrdu identiteta korisnika, potrebno je i da potvrdite valjanost potpisa tokena i da verifikujete zahteve u tokenu na osnovu zahteva vaše aplikacije. Javna krajnja tačka tokena obezbeđuje javni ključ portala, koji može da se koristi za proveru valjanosti potpisa tokena kojeg je obezbedio portal. URL adresa javne krajnje tačke tokena je: <portal_url>/_services/auth/publickey.

Uključivanje ili isključivanje toka implicitnog odobrenja

Podrazumevano, tok implicitnog odobrenja je omogućen. Ako želite da isključite tok implicitnog odobrenja, podesite vrednost podešavanja lokacije Connector/ImplicitGrantFlowEnabled na vrednost netačno.

Ako ovo podešavanje lokacije nije dostupno na vašem portalu, morate da kreirate novo podešavanje lokacije sa odgovarajućom vrednošću.

Konfigurisanje važenja tokena

Podrazumevano, token važi 15 minuta. Ako želite da promenite važenje tokena, podesite vrednost podešavanja lokacije ImplicitGrantFlow/TokenExpirationTime na potrebnu vrednost. Vrednost mora biti navedena u sekundama. Maksimalna vrednost može da bude 1 čas, a minimalna vrednost mora biti 1 minut. Ako je navedena netačna vrednost (na primer, alfanumerički znakovi), koristi se podrazumevana vrednost od 15 minuta. Ako navedete vrednost koja je veća od maksimalne vrednosti ili je manja od minimalne vrednosti, koriste se maksimalna, to jest minimalna vrednosti, podrazumevano.

Na primer, da biste podesili važenje tokena na 30 minuta, podesite vrednost podešavanja lokacije ImplicitGrantFlow/TokenExpirationTime na 1800. Da biste podesili važenje tokena na 1 čas podesite vrednost podešavanja lokacije ImplicitGrantFlow/TokenExpirationTime na 3600.

Registrovanje ID klijenta za tok implicitnog odobrenja

Morate registrovati ID klijenta na portalu za koji je dozvoljen ovaj tok. Da biste registrovali ID klijenta, morate da kreirate sledeća podešavanja lokacije:

Postavka lokacije Value
ImplicitGrantFlow/RegisteredClientId Važeće vrednosti ID-a klijenta koje su dozvoljene za ovaj portal. Vrednosti moraju da budu razdvojene tačkom i zarezom i mogu da sadrže alfanumeričke znakove i crtice. Maksimalna dužina je 36 znakova.
ImplicitGrantFlow/{ClientId}/RedirectUri Važeći URI identifikatori za preusmerenje koji su dozvoljeni za određeni ID klijenta. Vrednosti moraju da budu razdvojene tačkom i zarezom. Navedena URL adresa mora da bude za važeću veb-stranicu portala.

Primer koda

Sledeći primer koda možete da koristite da biste započeli sa korišćenjem OAuth 2.0 implicitnog odobrenja sa API-jima za Power Apps portale.

Koristite OAuth token portala sa spoljnim Web API-jem

Ovaj primer je projekat zasnovan na ASP.NET i koristi se za potvrđivanje ID tokena kojeg su izdali Power Apps portali. Kompletan primer možete pronaći ovde: Koristite OAuth token sa eksternim Web API-jem.

Primer krajnje tačke tokena

Ovaj primer pokazuje kako možete koristiti funkciju getAuthenticationToken za pribavljanje ID tokena pomoću krajnje tačke tokena u Power Apps portalima. Primer možete pronaći ovde: Primer tokena krajnje tačke.

Napomena

Možete li nam reći o svojim željenim postavkama jezika u dokumentaciji? Ispunite kratku anketu. (imajte na umu da je ova anketa na engleskom jeziku)

Anketa će trajati oko sedam minuta. Ne prikupljaju se lični podaci (izjava o privatnosti).