Dela via


Använd implicit tilldelning av flöde för OAuth 2.0 inom portalen

Anteckning

Från och med den 12 oktober 2022 byter Power Apps-portaler namn till Power Pages. Mer information: Microsoft Power Pages är nu allmänt tillgänglig (blogg)
Vi kommer snart migrera och sammanfoga dokumentationen för Power Apps-portaler med Power Pages-dokumentationen.

Den här funktionen gör det möjligt för en kund att göra klientanrop till externa API:er och säkra dem med hjälp av implicit tilldelning av flöde för OAuth. Den tillhandahåller en slutpunkt för att få säkra åtkomsttokens. Dessa token innehåller information om användarens identitet som ska användas av externa API:er för auktorisering efter implicit tilldelning av flöde för OAuth 2.0. Identitetsinformationen för en inloggad användare skickas på ett säkert sätt till de externa AJAX-anropen, vilket hjälper utvecklare att skicka autentiseringskontext och hjälper även användarna att säkra sina API:er.

Implicit tilldelning av flöde för OAuth 2.0 stöder token-slutpunkter som en kund kan använda för att få ett ID-token.

Anpassade certifikat

Användning av standardcertifikatet för implicit tilldelning av flöde för OAuth 2.0 är inaktuellt. Du måste använda ett anpassat certifikat när du använder OAuth 2.0-slutpunkten. Använd Power Platforms administrationscenter för att ladda upp det anpassade certifikatet. När du har laddat upp det anpassade certifikatet måste du uppdatera webbplatsinställningarna enligt nedan:

  1. Gå till portalinställningar och välj Webbplatsinställningar.

  2. Om du vill skapa en ny inställning, välj Nytt.

  3. Redigera en befintlig inställning genom att välja den webbplatsinställning som visas i rutnätet.

  4. Ange värden:

    • Namn: CustomCertificates/ImplicitGrantflow
    • Webbplats: Den associerade webbplatsen
    • Värde: Kopiera tumavtrycket på det uppladdade anpassade certifikatet från skärmen Hantera anpassat certifikat och klistra in det här. Värdet visar vilket certifikat som används för implicit beviljande av flöde.
  5. Välj Spara och stäng. Allmän meny för nya webbplatsinställningar med angivna värden.

Information om tokens slutpunkt

Du kan också få ett token genom att göra en publiceringsbegäran till /token-slutpunkten. URL för tokenslutpunkt är: <portal_url>/_services/auth/token. Tokenslutpunkten stöder följande parametrar:

Parameter Obligatoriskt? Beskrivning
client_id Nej En sträng som skickas när du ringer till auktorisera slutpunkten. Du måste se till att klient-ID är registrerat med portalen. I annat fall visas ett felmeddelande. Klient-ID läggs till i anspråk i token som parameter aud och appid och kan användas av klienter för att verifiera att token som returneras är för deras app.
Maximal längd är 36 tecken. Endast alfanumeriska tecken och bindestreck stöds.
redirect_uri Nej URL till portalen där autentiseringssvar kan skickas och tas emot. Den måste registreras för en viss client_id används i anropet och ska vara exakt samma värde som registrerats.
tillstånd Nej Ett värde som också ingår i begäran returnerade i tokensvar. Det kan vara en sträng med innehåll som du vill använda. Vanligtvis används ett slumpmässigt genererat, unikt värde för att förhindra attack på flera platser.
Maximal längd är 20 tecken.
nonce Nej Ett strängvärde som skickades av klienten som ingår i den resulterande ID-token som anspråk. Klienten kan sedan verifiera det här värdet för att minska token repetitionsattacker. Maximal längd är 20 tecken.
response_type Nej Den här parametern har endast stöd för token som ett värde, vilket gör att ditt program får direkt åtkomsttoken från den auktoriserade slutpunkten, utan att göra en andra begäran att auktorisera slutpunkten.

Anteckning

Även om parametrar client_id, redirect_uri, state och nonce är valfria, bör du använda dem för att kontrollera att din integrering är säker.

Lyckat svar

Tokenslutpunkten returnerar tillstånd och expires_in som svarsrubrik och token i formulärtexten.

Felsvar

Fel i token slutpunkt returneras som ett JSON-dokument med följande värden:

  • Fel-ID: Unik identifierare för synkroniseringsfelet.
  • Felmeddelande: ett felmeddelande som kan hjälpa dig att identifiera orsaken till ett autentiseringsfel.
  • Korrelations-ID: en GUID som används för felsökning. Om du har aktiverat diagnostikloggning skulle korrelations-ID finnas i felloggar för servern.
  • Tidsstämpel: Datum och tid då synkroniseringsfelet genererades.

Felmeddelandet visas i standardspråket för den inloggade användaren. Om användaren inte är inloggad visas inloggningssidan för användare att logga in. Till exempel ett felsvar ser ut på följande sätt:

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

Auktorisera slutpunktinformation

Anteckning

Auktorisera slutpunkt är inaktuellt. Använd tokenslutpunkt POST-förfrågan för att få ID-token.]

URL för att auktorisera slutpunkt är:<portal_url>/_services/auth/authorize. Auktorisera slutpunkten stöder följande parametrar:

Parameter Obligatoriskt? Beskrivning
client_id Ja En sträng som skickas när du ringer till auktorisera slutpunkten. Du måste se till att klient-ID är registrerat med portalen. I annat fall visas ett felmeddelande. Klient-ID läggs till i anspråk i token som parameter aud och appid och kan användas av klienter för att verifiera att token som returneras är för deras app.
Maximal längd är 36 tecken. Endast alfanumeriska tecken och bindestreck stöds.
redirect_uri Ja URL till portalen där autentiseringssvar kan skickas och tas emot. Den måste registreras för en viss client_id används i anropet och ska vara exakt samma värde som registrerats.
tillstånd Nej Ett värde som också ingår i begäran returnerade i tokensvar. Det kan vara en sträng med innehåll som du vill använda. Vanligtvis används ett slumpmässigt genererat, unikt värde för att förhindra attack på flera platser.
Maximal längd är 20 tecken.
nonce Nej Ett strängvärde som skickades av klienten som ingår i den resulterande ID-token som anspråk. Klienten kan sedan verifiera det här värdet för att minska token repetitionsattacker. Maximal längd är 20 tecken.
response_type Nej Den här parametern har endast stöd för token som ett värde, vilket gör att ditt program får direkt åtkomsttoken från den auktoriserade slutpunkten, utan att göra en andra begäran att auktorisera slutpunkten.

Lyckat svar

Auktoriserade slutpunkten returnerar följande värden i svars-URL som en del:

  • token: Token returneras som ett JSON webbtoken (JWT) digitalt signerat av portalens privata nyckel.
  • tillstånd: om en tillståndsparameter inkluderas i begäran, visas samma värde i svaret. programmet bör kontrollera att värdena i förfrågan och svar är identiska.
  • expires_in: tidsperiod som åtkomsttoken är giltig (i sekunder).

Till exempel ett lyckat svar ser ut på följande sätt:

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

Felsvar

Fel i auktoriserad slutpunkt returneras som ett JSON-dokument med följande värden:

  • Fel-ID: Unik identifierare för synkroniseringsfelet.
  • Felmeddelande: ett felmeddelande som kan hjälpa dig att identifiera orsaken till ett autentiseringsfel.
  • Korrelations-ID: en GUID som används för felsökning. Om du har aktiverat diagnostikloggning skulle korrelations-ID finnas i felloggar för servern.
  • Tidsstämpel: Datum och tid då synkroniseringsfelet genererades.

Felmeddelandet visas i standardspråket för den inloggade användaren. Om användaren inte är inloggad visas inloggningssidan för användare att logga in. Till exempel ett felsvar ser ut på följande sätt:

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

Verifiera ID-token

Skaffa ett ID-token räcker inte för att autentisera användaren. Du måste också verifiera tokens signatur och kontrollera anspråk i token baserat på kraven i ditt program. Offentliga tokens slutpunkt innehåller den offentliga nyckeln för portalen, som kan användas för att verifiera signaturen för den token som skickas av portalen. URL för offentlig tokenslutpunkt är: <portal_url>/_services/auth/publickey.

Aktivera och inaktivera implicit tilldelning av flöde

Som standard är implicit tilldelning av flöde aktiverat. Om du vill inaktivera implicit beviljande av flöde anger du värdet för webbplatsinställning Connector/ImplicitGrantFlowEnabled till Falskt.

Om den här webbplatsinställningen inte är tillgänglig i din portal måste du skapa en ny webbplatsinställning med lämpligt värde.

Konfigurera tokens giltighet

Som standard gäller token i 15 minuter. Om du vill ändra giltighetstiden för token anger du värdet för webbplatsinställningen ImplicitGrantFlow/TokenExpirationTime till önskat värde. Värdet måste anges i sekunder. Det största värdet är 1 timme och det minsta värdet måste vara 1 minut. Om ett felaktigt värde har angetts (till exempel alfanumeriska tecken), används standardvärdet 15 minuter. Om du anger ett värde som är större än det största värdet eller mindre än det minsta värdet används största och minsta värde, som standard.

Till exempel om du vill ange tokens giltighet till 30 minuter, anger du värdet för webbplatsinställningen ImplicitGrantFlow/TokenExpirationTime till 1800. Om du vill ange tokens giltighet till 1 timme, anger du värdet för webbplatsinställningen ImplicitGrantFlow/TokenExpirationTime till 3600.

Registrera klient-ID för implicit tilldelning av flöde

Du måste registrera klient-ID med portalen som detta flöde är tillåtet för. Om du vill registrera ett klient-ID måste du skapa följande webbplatsinställningar:

Webbplatsinställning Value
ImplicitGrantFlow/RegisteredClientId Giltiga klient-ID-värden som tillåts för den här portalen. Värdena måste vara avgränsade med semikolon och kan innehålla alfanumeriska tecken och bindestreck. Maximal längd är 36 tecken.
ImplicitGrantFlow/{ClientId}/RedirectUri Giltiga omdirigerings-URL som tillåts för en viss klient-ID. Värdena måste vara avgränsade med semikolon. URL måste ha en giltig webbsida på portalen.

Exempelkod

Du kan använda följande exempelkod för att komma igång med att använda OAuth 2.0 Implicit Grant tillsammans med API:er för Power Apps-portaler.

Använd portalens Oauth-token med en extern webb-API

Detta exempel är ett ASP.NET-baserat projekt och används för att validera den ID-kod som utfärdats av Power Apps-portaler. Hela exemplet hittar du här: Använd portalens OAuth-token med en extern webb-API.

Tokenslutpunkt-exempel

Detta exempel visar hur du kan använda funktionen getAuthenticationToken för att hämta ett ID-token med hjälp av tokenslutpunkten i Power Apps-portaler. Exemplet hittas här: exempel på tokenslutpunkt.

Anteckning

Kan du berätta om dina inställningar för dokumentationsspråk? Svara i en kort undersökning. (observera att undersökningen är på engelska)

Undersökningen tar ungefär sju minuter. Inga personuppgifter samlas in (sekretesspolicy).