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

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 pribavljanje tokena za bezbedan pristup koji ć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 se šalju na bezbedan način spoljnim AJAX pozivima. Ovo ne samo da će pomoći programerima da prosleđuju kontekst potvrde identiteta, već će i pomoći korisnicima da obezbede svoje API-je korišćenjem ovog mehanizma.

Napomena

Za najbolje bezbednosne prakse preporučuje se korišćenje prilagođenih certifikata za OAuth 2.0 implicitni protok grantova. Korišćenje implicitnog toka granta bez prilagođenog certifikata na kraju neće biti podržano.

OAuth 2.0 tok implicitnog odobrenja podržava krajnje tačke koje klijent može da poziva kako bi dobio ID token. U ove svrhe se koriste dve krajnje tačke: ovlasti i token.

Detalji o krajnjoj tački sa odobrenjem

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 aud, kao i appid parametar 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 Ovaj 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" }

Detalji tokena krajnje tačke

Možete i da preuzmete token slanjem zahteva krajnjoj tački za /token. Razlikuje se od krajnje tačke za odobrenje na način na koji krajnja tačka za odobrenje obrađuje logiku tokena na zasebnoj stranici (redirect_uri), dok krajnja tačka tokena obrađuje logiku tokena na istoj stranici. 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 aud, kao i appid parametar 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 Ovaj 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.

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

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

Možete da koristite sledeći uzorak koda da biste počeli sa korišćenjem OAuth 2.0 Implicit Grant sa Power Apps portala API-ja.

Koristite OAuth token portala sa spoljnim Web API-jem

Ovaj uzorak je ASP.NET zasnovan na projektu i koristi se za proveru ID simbola koji izdaje Power Apps portala. Kompletan primer možete pronaći ovde: Koristite OAuth token sa eksternim Web API-jem.

Primera odobrenja krajnje tačke

Ovaj primer pokazuje kako odobrenje krajnje tačke vraća ID token kao fragment u preusmerenoj URL adresi. Takođe obuhvata proveru statusa podržanog u implicitnom odobrenju. Primer možete pronaći ovde: Primer odobrenja krajnje tačke.

Primer krajnje tačke tokena

Ovaj uzorak prikazuje kako možete da koristite funkciju getAuthenticationToken za dopremanje ID simbola pomoću simbola krajnja tačka u Power Apps portalima. Primer možete pronaći ovde: Primer tokena krajnje tačke.