Kopīgot, izmantojot


OAuth 2.0 netiešās piešķiršanas plūsmas lietošana Jūsu portālā

Piezīme

No 2022. gada 12. oktobra, Power Apps portāli ir Power Pages. Papildinformācija. Pakalpojums Microsoft Power Pages tagad ir vispārēji pieejams (emuārs)
Drīzumā Power Apps portālu dokumentācija tiks migrēta un sapludināta ar Power Pages dokumentāciju.

Šis līdzeklis ļauj veikt izsaukumus klienta vārdā uz ārējiem API un nodrošināt tos, izmantojot OAuth netiešās piešķiršanas plūsmu. Tas nodrošina galapunktu, lai iegūtu drošas piekļuves pilnvaras. Šīs pilnvaras ietver lietotāja identitātes informāciju, kuru ārējiem API ir jāizmanto autorizēšanai, izpildot OAuth 2.0 netiešās piešķiršanas plūsmu. Lietotāja, kurš ir pierakstījies, identitātes informācija tiek nodota drošinātā veidā ārējiem AJAX izsaukumiem, kas izstrādātājiem palīdz nodot autentifikācijas kontekstu un arī palīdzēs lietotājiem aizsargāt savu API.

OAuth 2.0 netiešās piešķiršanas plūsma atbalsta pilnvaru galapunktus, ko klients var izsaukt, lai iegūtu ID pilnvaru.

Pielāgoti sertifikāti

Noklusējuma sertifikāta izmantošana ar OAuth 2.0 netiešas piešķiršanas plūsmu novecojusi metode. Lietojot OAuth 2.0 galapunktu, jums būs jāizmanto pielāgots sertifikāts. Izmantojiet Power Platform administrēšanas centru, lai augšupielādētu pielāgoto sertifikātu. Pēc pielāgotā sertifikātu augšupielādēšanas ir jāatjaunina vietnes iestatījumi, kā norādīts tālāk.

  1. Atveriet  portāla iestatījumus  un atlasiet  Vietnes iestatījumi.

  2. Lai izveidotu jaunu iestatījumu, atlasiet  Jauns.

  3. Lai rediģētu esošu iestatījumu, režģī atlasiet vietnes iestatījumus.

  4. Norādīt vērtības

    • Nosaukums: CustomCertificates/ImplicitGrantflow
    • Tīmekļa vietne: saistītā tīmekļa vietne.
    • Vērtība: nokopējiet augšupielādētā pielāgotā sertifika nospiedumu no pielāgotā sertifikātu pārvaldīšanas ekrāna un ielīmējiet to šeit. Šī vērtība norāda, kurš sertifikāts tiks izmantots netiešai atļauju plūsmai.
  5. Atlasiet  Saglabāt un aizvērt. Jaunu vietnes iestatījumu vispārīgā izvēlne ar norādītām vērtībām.

Informācija par pilnvaras galapunktu

Pilnvaru varat arī iegūt, veicot Post pieprasījumu uz /token galapunktu. Pilnvaras galapunkta vietrādis URL ir: <portal_url>/_services/auth/token. Pilnvaras galapunkts atbalsta šādus parametrus:

Parametrs Vai obligāti? Apraksts
Klienta ID Šī virkne tiek nodota, veicot izsaukumu uz autorizēšanas galapunktu. Jums ir jānodrošina, ka klienta ID ir reģistrēts portālā. Pretējā gadījumā tiek parādīta kļūda. Pieprasījumos klienta ID pilnvarā tiek pievienots kā aud, kā arī appid parametrs, un klienti to var izmantot, lai apstiprinātu, vai atgrieztā pilnvara ir viņu programmai.
Maksimālais garums ir 36 rakstzīmes. Tiek atbalstītas tikai burtciparu rakstzīmes un defises.
redirect_uri Vietrādis URL portālam, uz kuru var sūtīt un no kura var saņemt autentifikācijas atbildes. Tam ir jābūt reģistrētam konkrētajai client_id vērtībai, kas tiek izmantota izsaukumā, un tā vērtībai ir precīzi jāsakrīt ar reģistrēto.
Statuss Pieprasījumā ietverta vērtība, kas tiek atgriezta arī pilnvaras atbildē. Tā var būt virkne ar jebkādu saturu, ko Jūs vēlaties izmantot. Parasti tiek izmantota nejauši ģenerēta, unikāla vērtība, lai novērstu starpvietņu pieprasījuma viltošanas uzbrukumus.
Maksimālais garums ir 20 rakstzīmes.
nonce Klienta sūtīta virknes vērtība, kas ir ietverta izveidotajā ID pilnvarā kā prasība. Pēc tam klients var apliecināt šo vērtību, lai mazinātu pilnvaru atkārtošanas uzbrukumus. Maksimālais garums ir 20 rakstzīmes.
atbildes veids Nē. Šis parametrs atbalsta tikai token vērtību, ļāujot programmai saņemt piekļuves pilnvaru no autorizēšanas galapunkta nekavējoties, neveicot otru pieprasījumu uz autorizēšanas galapunktu.

Piezīme

Lai gan parametri client_id, redirect_uri, state un nonce ir neobligāti, ir ieteicams tos lietot, lai pārliecinātos par Jūsu integrāciju drošumu.

Sekmīga atbilde

Pilnvaras galapunkts atgriežas savā statusā un tā darbības laiks izbeidzas kā atbildes galvenei, un atgriež pilnvaru veidlapas pamattekstā.

Kļūdas atbilde

Kļūda pilnvaras galapunktā tiek atgriezta kā JSON dokuments ar šādām vērtībām:

  • Kļūdas ID: Unikāls kļūdas identifikators.
  • Kļūdas ziņojums: Specifisks kļūdas ziņojums, kas var noderēt, lai identificētu autentifikācijas kļūdas cēloni.
  • Korelācijas ID: Atkļūdošanas nolūkos izmantojams GUID. Ja esat iespējojis diagnostikas žurnālu veidošanu, korelācijas ID būtu servera kļūdu žurnālos.
  • Laikspiedols: Datums un laiks, kad tiek ģenerēta šī kļūda.

Kļūdas ziņojums tiek rādīts noklusējuma valodā lietotājam, kurš ir pierakstījies. Ja lietotājs nav pierakstījies, tiek parādīta pierakstīšanās lapa, kur lietotājam pierakstīties. Piemēram, kļūdas atbilde izskatās šādi:

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

Informācija par autorizēšanas galapunktu

Piezīme

Autorizēšanas galapunkts vairs netiek atbalstīts. Izmantojiet pilnvaras galapunkta POST pieprasījumu, lai iegūtu ID pilnvaru.]

Autorizēšanas galapunkta vietrādis URL ir: <portal_url>/_services/auth/authorize. Autorizēšanas galapunkts atbalsta šādus parametrus:

Parametrs Vai obligāti? Apraksts
Klienta ID Šī virkne tiek nodota, veicot izsaukumu uz autorizēšanas galapunktu. Jums ir jānodrošina, ka klienta ID ir reģistrēts portālā. Pretējā gadījumā tiek parādīta kļūda. Pieprasījumos klienta ID pilnvarā tiek pievienots kā aud, kā arī appid parametrs, un klienti to var izmantot, lai apstiprinātu, vai atgrieztā pilnvara ir viņu programmai.
Maksimālais garums ir 36 rakstzīmes. Tiek atbalstītas tikai burtciparu rakstzīmes un defises.
redirect_uri Vietrādis URL portālam, uz kuru var sūtīt un no kura var saņemt autentifikācijas atbildes. Tam ir jābūt reģistrētam konkrētajai client_id vērtībai, kas tiek izmantota izsaukumā, un tā vērtībai ir precīzi jāsakrīt ar reģistrēto.
Statuss Pieprasījumā ietverta vērtība, kas tiek atgriezta arī pilnvaras atbildē. Tā var būt virkne ar jebkādu saturu, ko Jūs vēlaties izmantot. Parasti tiek izmantota nejauši ģenerēta, unikāla vērtība, lai novērstu starpvietņu pieprasījuma viltošanas uzbrukumus.
Maksimālais garums ir 20 rakstzīmes.
nonce Klienta sūtīta virknes vērtība, kas ir ietverta izveidotajā ID pilnvarā kā prasība. Pēc tam klients var apliecināt šo vērtību, lai mazinātu pilnvaru atkārtošanas uzbrukumus. Maksimālais garums ir 20 rakstzīmes.
atbildes veids Nē. Šis parametrs atbalsta tikai token vērtību, ļāujot programmai saņemt piekļuves pilnvaru no autorizēšanas galapunkta nekavējoties, neveicot otru pieprasījumu uz autorizēšanas galapunktu.

Sekmīga atbilde

Atbildes vietrādī URL fragmenta veidā autorizēšanas galapunkts atgriež tālāk norādītās atbildes:

  • token: Pilnvara tiek atgriezta kā tīmekļa pilnvara JSON Web Token (JWT), kura ir digitāli parakstīta ar portāla privāto atslēgu.
  • state: /ja pieprasījumā ir ietverts statusa parametrs, atbildē ir jābūt redzamai tai pašai vērtībai. Programmai ir jāapliecina, ka statusa vērtības pieprasījumā un atbildē ir identiskas.
  • expires_in: Laiks, cik ilgi piekļuves pilnvara ir derīga (sekundēs).

Piemēram, sekmīga atbilde izskatās šādi:

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

Kļūdas atbilde

Kļūda autorizēšanas galapunktā tiek atgriezta kā JSON dokuments ar šādām vērtībām:

  • Kļūdas ID: Unikāls kļūdas identifikators.
  • Kļūdas ziņojums: Specifisks kļūdas ziņojums, kas var noderēt, lai identificētu autentifikācijas kļūdas cēloni.
  • Korelācijas ID: Atkļūdošanas nolūkos izmantojams GUID. Ja esat iespējojis diagnostikas žurnālu veidošanu, korelācijas ID būtu servera kļūdu žurnālos.
  • Laikspiedols: Datums un laiks, kad tiek ģenerēta šī kļūda.

Kļūdas ziņojums tiek rādīts noklusējuma valodā lietotājam, kurš ir pierakstījies. Ja lietotājs nav pierakstījies, tiek parādīta pierakstīšanās lapa, lai lietotājs pierakstītos. Piemēram, kļūdas atbilde izskatās šādi:

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

ID pilnvaras apstiprināšana

Lai autentificētu lietotāju, nepietiek tikai ar ID pilnvaras saņemšanu; Jums ir nepieciešams arī apstiprināt pilnvaras parakstu un pārliecināties, ka šajā pilnvarā esošie pieprasījumi ir balstīti uz Jūsu programmas prasībām. Publiskais pilnvaras galapunkts nodrošina publisko portāla atslēgu, kuru var izmantot, lai apstiprinātu portāla nodrošinātās pilnvaras parakstu. Publiskā pilnvaras galapunkta vietrādis URL ir: <portal_url>/_services/auth/publickey.

Netiešās piešķiršanas plūsmas ieslēgšana un izslēgšana

Pēc noklusējuma netiešās piešķiršanas plūsma ir iespējota. Ja vēlaties izslēgt netiešās piešķiršanas plūsmu, vietnes iestatījuma Connector/ImplicitGrantFlowEnabled vērtību iestatiet uz False.

Ja šis vietnes iestatījums Jūsu portālā nav pieejams, Jums ir nepieciešams izveidot jaunu vietnes iestatījumu ar atbilstošo vērtību.

Pilnvaras derīguma konfigurēšana

Pēc noklusējuma pilnvara ir derīga 15 minūtes. Ja vēlaties mainīt pilnvaras derīgumu, vietnes iestatījuma ImplicitGrantFlow/TokenExpirationTime vērtību iestatiet uz nepieciešamo vērtību. Šī vērtība ir jānorāda sekundēs. Maksimālā vērtība var būt 1 stunda, un minimālajai vērtībai ir jābūt 1 minūte. Ja tiek norādīta nepareiza vērtība (piemēram, burtciparu rakstzīmes), tiek izmantota noklusējuma vērtība, kas ir 15 minūtes. Ja norādāt vērtību, kas ir lielāka par maksimālo vērtību vai ir mazāka par minimālo vērtību, pēc noklusējuma attiecīgi tiek izmantota maksimālā vai minimālā vērtība.

Piemēram, lai pilnvaras derīgumu iestatītu uz 30 minūtēm, vietnes iestatījuma ImplicitGrantFlow/TokenExpirationTime vērtība ir jāiestata uz 1800. Lai pilnvaras derīgumu iestatītu uz 1 stundu, vietnes iestatījuma ImplicitGrantFlow/TokenExpirationTime vērtība ir jāiestata uz 3600.

Klienta ID reģistrēšana netiešās piešķiršanas plūsmai

Jums ir jāreģistrē klienta ID tajā portālā, kurā šī plūsma ir atļauta. Lai reģistrētu klienta ID, Jums ir jāizveido tālāk norādītie vietnes iestatījumi:

Vietnes iestatījums Vērtība
Netiešā piešķiršanas plūsma/Reģistrēta klienta ID Derīgās klienta ID vērtības, kas ir atļautas šim portālam. Šīs vērtības ir jāatdala ar semikolu, un tajās var būt burtciparu rakstzīmes un defises. Maksimālais garums ir 36 rakstzīmes.
ImplicitGrantFlow/{ClientId}/RedirectUri Derīgie novirzīšanas URI, kas ir atļauti noteiktam klienta ID. Šīs vērtības ir jāatdala ar semikolu. Norādītajam vietrādim URL ir jābūt derīgas portāla tīmekļa lapas vietrādim.

Koda paraugs

Varat izmantot šo parauga kodu, lai sāktu lietot Oauth 2.0 netiešo piešķiršanu ar Power Apps portāliem API.

Portāla Oauth marķiera izmantošana ar ārēju tīmekļa API

Šis paraugs ir uz ASP.NET balstīts projekts, un tas tiek izmantots, lai apstiprinātu Power Apps portālu izdoto ID marķieri. Pilnu paraugu var atrast šeit: Izmantojiet portāla OAuth marķieri ar ārēju tīmekļa API.

Marķiera galapunkta paraugs

Šajā piemērā ir parādīts, kā varat izmantot funkciju getAuthenticationToken, lai ienestu ID marķieri, izmantojot marķiera galapunktu Power Apps portālos. Paraugu var atrast šeit: Marķiera galapunkta paraugs

Piezīme

Kādas ir jūsu dokumentācijas valodas preferences? Aizpildiet īsu aptauju. (ņemiet vērā, ka aptauja ir angļu valodā)

Aptaujai būs nepieciešamas aptuveni septiņas minūtes. Nekādi personas dati netiks vākti (paziņojums par konfidencialitāti).