Gebruik impliciete stroom van toekenning voor OAuth 2.0 in uw portal

Notitie

Met ingang van 12 oktober 2022 wordt Power Apps-portals hernoemd tot Power Pages. Meer informatie: Microsoft Power Pages is nu algemeen beschikbaar (blog)
We zullen binnenkort de documentatie voor Power Apps-portals migreren en samenvoegen met Power Pages-documentatie.

Met deze functie kan een klant oproepen aan de clientzijde doen bij externe APIs en deze beveiligen met behulp van de impliciete stroom van toekenning voor OAuth. Het biedt een eindpunt om tokens voor veilige toegang te verkrijgen. Deze tokens bevatten gegevens over gebruikersidentiteit voor gebruik door externe API's voor autorisatie na impliciete stroom van toekenning voor OAuth 2.0. De identiteitsgegevens van een aangemelde gebruiker wordt op een beveiligde manier doorgegeven aan de externe AJAX-aanroepen, wat ontwikkelaars helpt om de verificatiecontext door te geven en gebruikers bovendien helpt hun API's te beveiligen.

Impliciete stroom van toekenning voor OAuth 2.0 ondersteunt eindpunten voor tokens die een client kan aanroepen om een id-token te krijgen.

Aangepaste certificaten

Het gebruik van het standaardcertificaat voor ompliciete OAuth 2.0-toewijzingsstroom 2.0 is afgeschaft. U moet een aangepast certificaat gebruiken tijdens het gebruik van de OAuth 2.0-eindpunt. Gebruik het Power Platform-beheercentrum om het aangepaste certificaat te uploaden. Nadat u het aangepaste certificaat hebt geüpload, moet u de site-instellingen bijwerken zoals hieronder:

  1. Ga naar portalinstellingen en selecteer Site-instellingen.

  2. Als u een nieuwe instelling wilt maken, selecteert u Nieuw.

  3. Als u een bestaande instelling wilt bewerken, selecteert u de site-instelling in het raster.

  4. Waarden opgeven:

    • Naam: CustomCertificates/ImplicitGrantflow
    • Website: de gekoppelde website
    • Waarde:: kopieer de vingerafdruk van het geüploade aangepaste certificaat van het scherm Aangepast certificaat beheren en plak deze hier. De waarde geeft aan welk certificaat wordt gebruikt voor de impliciete toekenningsstroom.
  5. Selecteer Opslaan en sluiten. Algemeen menu voor nieuwe site-instellingen met gespecificeerde waarden.

Token-eindpuntdetails

U kunt ook een token verkrijgen door een boekingsaanvraag bij het /token-eindpunt te doen. De URL voor het tokeneindpunt is: <portal_url>/_services/auth/token. Het tokeneindpunt ondersteunt de volgende parameters:

Parameter Vereist? Beschrijving
client_id Nee Een tekenreeks die wordt doorgegeven bij het doen van een oproep bij het autorisatie-eindpunt. U moet ervoor zorgen dat de client-id is geregistreerd bij de portal. Anders wordt een fout weergegeven. De client-id wordt toegevoegd in claims in het token als parameter aud en appid en kan worden gebruikt door clients om te valideren dat het token is geretourneerd voor hun app.
De maximumlengte is 36 tekens. Alleen alfanumerieke tekens en koppeltekens worden ondersteund.
redirect_uri Nee URL van de portal waar verificatieresponses kunnen worden verzonden en ontvangen. Deze moet worden geregistreerd voor de specifieke client_id die is gebruikt in de oproep en moet exact dezelfde waarde hebben zoals is geregistreerd.
staat Nee Een waarde die in de aanvraag is opgenomen die ook in de tokenrespons is geretourneerd. Dit kan een tekenreeks van elke inhoud zijn die u wilt gebruiken. Gewoonlijk wordt een willekeurig gegenereerde, unieke waarde gebruikt om CSRF-aanvallen (Cross-Site Request Forgery) te voorkomen.
De maximumlengte is 20 tekens.
nonce Nee Een tekenreekswaarde die door de client is verzonden, die als een claim wordt opgenomen in het resulterende ID-token. De client kan deze waarde vervolgens controleren om tokenherhalingsaanvallen te beperken. De maximumlengte is 20 tekens.
response_type Nee Deze parameter ondersteunt alleen token als waarde, zodat uw app onmiddellijk een toegangstoken kan ontvangen van het autorisatie-eindpunt zonder een tweede aanvraag bij het autorisatie-eindpunt te hoeven doen.

Notitie

Hoewel de parameters client_id, redirect_uri, state en nonce optioneel zijn, wordt het aanbevolen om ze te gebruiken zodat uw integraties beveiligd zijn.

Succesvolle respons

Met het tokeneindpunt worden state en expires_in als responskopteksten geretourneerd, en het token in het hoofdgedeelte van het formulier.

Foutrespons

De fout in een tokeneindpunt wordt geretourneerd als een JSON-document met de volgende waarden:

  • Fout-id: de unieke id van de fout.
  • Foutbericht: een specifiek foutbericht aan de hand waarvan u de hoofdoorzaak van een verificatiefout kunt identificeren.
  • Correlatie-id: een GUID die wordt gebruikt voor foutopsporingdoeleinden. Als u diagnostische registratie hebt ingeschakeld, is de correlatie-id in serverfoutenlogboeken aanwezig.
  • Tijdstempel: de datum en het tijdstip waarop de fout is gegenereerd.

Het foutbericht wordt weergegeven in de standaardtaal van de aangemelde gebruiker. Als de gebruiker niet is aangemeld, wordt een aanmeldingspagina weergegeven waarmee de gebruiker zich kan aanmelden. Een foutrespons ziet er bijvoorbeeld als volgt uit:

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

Autorisatie-eindpuntdetails

Notitie

Autorisatie-eindpunt is afgeschaft. Gebruik POST-aanvraag voor tokeneindpunt om id-token te verkrijgen.]

De URL voor het autorisatie-eindpunt is: <portal_url>/_services/auth/authorize. Het autorisatie-eindpunt ondersteunt de volgende parameters:

Parameter Vereist? Beschrijving
client_id Ja Een tekenreeks die wordt doorgegeven bij het doen van een oproep bij het autorisatie-eindpunt. U moet ervoor zorgen dat de client-id is geregistreerd bij de portal. Anders wordt een fout weergegeven. De client-id wordt toegevoegd in claims in het token als parameter aud en appid en kan worden gebruikt door clients om te valideren dat het token is geretourneerd voor hun app.
De maximumlengte is 36 tekens. Alleen alfanumerieke tekens en koppeltekens worden ondersteund.
redirect_uri Ja URL van de portal waar verificatieresponses kunnen worden verzonden en ontvangen. Deze moet worden geregistreerd voor de specifieke client_id die is gebruikt in de oproep en moet exact dezelfde waarde hebben zoals is geregistreerd.
staat Nee Een waarde die in de aanvraag is opgenomen die ook in de tokenrespons is geretourneerd. Dit kan een tekenreeks van elke inhoud zijn die u wilt gebruiken. Gewoonlijk wordt een willekeurig gegenereerde, unieke waarde gebruikt om CSRF-aanvallen (Cross-Site Request Forgery) te voorkomen.
De maximumlengte is 20 tekens.
nonce Nee Een tekenreekswaarde die door de client is verzonden, die als een claim wordt opgenomen in het resulterende ID-token. De client kan deze waarde vervolgens controleren om tokenherhalingsaanvallen te beperken. De maximumlengte is 20 tekens.
response_type Nee Deze parameter ondersteunt alleen token als waarde, zodat uw app onmiddellijk een toegangstoken kan ontvangen van het autorisatie-eindpunt zonder een tweede aanvraag bij het autorisatie-eindpunt te hoeven doen.

Succesvolle respons

Met het autorisatie-eindpunt worden de volgende waarden als een fragment in de respons-URL geretourneerd:

  • token: token wordt geretourneerd als een JSON Web Token (JWT) dat digitaal is ondertekend door de persoonlijke sleutel van de portal.
  • state: als een state-parameter in de aanvraag wordt opgenomen, moet dezelfde waarde in de respons worden weergegeven. De app moet controleren of de state-waarden in de aanvraag en respons identiek zijn.
  • expires_in: de tijd gedurende welke het toegangstoken geldig is (in seconden).

Een succesvolle respons ziet er bijvoorbeeld als volgt uit:

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

Foutrespons

De fout in het autorisatie-eindpunt wordt geretourneerd als een JSON-document met de volgende waarden:

  • Fout-id: de unieke id van de fout.
  • Foutbericht: een specifiek foutbericht aan de hand waarvan u de hoofdoorzaak van een verificatiefout kunt identificeren.
  • Correlatie-id: een GUID die wordt gebruikt voor foutopsporingdoeleinden. Als u diagnostische registratie hebt ingeschakeld, is de correlatie-id in serverfoutenlogboeken aanwezig.
  • Tijdstempel: de datum en het tijdstip waarop de fout is gegenereerd.

Het foutbericht wordt weergegeven in de standaardtaal van de aangemelde gebruiker. Als de gebruiker niet is aangemeld, wordt de aanmeldingspagina weergegeven waarmee de gebruiker zich kan aanmelden. Een foutrespons ziet er bijvoorbeeld als volgt uit:

{"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-token valideren

Om de gebruiker te verifiëren, is het niet voldoende om alleen een id-token te verkrijgen. U moet ook de handtekening van het token valideren en de claims in het token verifiëren op basis van de vereisten van uw app. Het openbare tokeneindpunt biedt de openbare sleutel van de portal, waarmee de handtekening van het door de portal verschafte token kan worden gevalideerd. De URL voor het openbare tokeneindpunt is: <portal_url>/_services/auth/publickey.

Impliciete stroom van toekenning in- of uitschakelen

Impliciete stroom van toekenning wordt standaard ingeschakeld. Als u impliciete stroom van toekenning wilt uitschakelen, stelt u de waarde van de site-instelling Connector/ImplicitGrantFlowEnabled in op False.

Als deze site-instelling niet beschikbaar is in uw portal, moet u een nieuwe site-instelling maken met de juiste waarde.

Geldigheid van tokens configureren

Standaard is het token gedurende 15 minuten geldig. Als u de geldigheid van het token wilt wijzigen, stelt u de waarde van de site-instelling ImplicitGrantFlow/TokenExpirationTime in op de vereiste waarde. De waarde moet in seconden worden opgegeven. De maximumwaarde kan 1 uur zijn en de minimumwaarde moet 1 minuut zijn. Als een onjuiste waarde wordt opgegeven (bijvoorbeeld alfanumerieke tekens) wordt de standaardwaarde van 15 minuten gebruikt. Als u een waarde groter dan de maximumwaarde of kleiner dan de minimumwaarde opgeeft, worden de maximum- en minimumwaarden standaard gebruikt.

Als u bijvoorbeeld de tokengeldigheid wilt instellen op 30 minuten, stelt u de waarde van de site-instelling ImplicitGrantFlow/TokenExpirationTime in op 1800. Als u de tokengeldigheid wilt instellen op 1 uur, stelt u de waarde van de site-instelling ImplicitGrantFlow/TokenExpirationTime in op 3600.

Client-id voor impliciete stroom van toekenning registreren

U moet de client-id registreren met de portal waarvoor deze stroom is toegestaan. Als u een client-id wilt registreren, moet u de volgende site-instellingen maken:

Site-instelling Value
ImplicitGrantFlow/RegisteredClientId De geldige waarden voor de client-id die voor deze portal zijn toegestaan. De waarden moeten door een puntkomma worden gescheiden en kunnen alfanumerieke tekens en koppeltekens bevatten. De maximumlengte is 36 tekens.
ImplicitGrantFlow/{ClientId}/RedirectUri De geldige omleidings-URI´s die voor een specifiek client-id zijn toegestaan. De waarden moeten door een puntkomma worden gescheiden. De opgegeven URL moet van een geldige webpagina van de portal zijn.

Voorbeeldcode

U kunt de volgende voorbeeldcode gebruiken om aan de slag te gaan met het gebruik van impliciete toekenning voor Oauth 2.0 met API's voor Power Apps-portals.

Portal OAuth-token met een externe web-API gebruiken

Dit voorbeeld is een ASP.NET-project en wordt gebruikt om het id-token te valideren dat door Power Apps-portals is afgegeven. Het volledige voorbeeld is hier te vinden: Portal OAuth-token met een externe web-API gebruiken.

Voorbeeld van tokeneindpunt

Dit voorbeeld laat zien hoe u de functie getAuthenticationToken kunt gebruiken om een id-token op te halen met behulp van het tokeneindpunt in Power Apps-portals. Het voorbeeld is hier te vinden: Voorbeeld van tokeneindpunt.

Notitie

Laat ons uw taalvoorkeuren voor documentatie weten! Beantwoord een korte enquête. (houd er rekening mee dat deze in het Engels is)

De enquête duurt ongeveer zeven minuten. Er worden geen persoonlijke gegevens verzameld (privacyverklaring).