Bruke implisitt tillatelsesflyt for OAuth 2.0 i portalen
Obs!
Fra og med 12. oktober 2022 er Power Apps-portaler Power Pages. Mer informasjon: Microsoft Power Pages er nå tilgjengelig (blogg)
Vi overfører og slår snart sammen Power Apps-portaldokumentasjonen med Power Pages-dokumentasjonen.
Denne funksjonen gjør det mulig for en kunde for å utføre klientsidekall til eksterne API-er og sikre dem ved hjelp av implisitt tillatelsesflyt for OAuth. Den inneholder et endepunkt for å hente sikre tilgangstokener. Disse tokenene inneholder informasjon om bruker-ID som skal brukes av eksterne API-er for godkjenning ved å følge implisitt tillatelsesflyt for OAuth 2.0. Identitetsinformasjonen til en pålogget bruker sendes på en sikker måte til de eksterne AJAX-kallene, noe som hjelper utviklere med å sende godkjenningskontekst, og den vil også hjelpe brukere med å sikre sine API-er.
Implisitt tillatelsesflyt for OAuth 2.0 støtter endepunkter for token som en klient kan kalle for få et ID-token.
Egendefinerte sertifikater
Bruk av standardsertifikatet for flyten for implisitt tillatelse for OAuth 2.0 er avskrevet. Du må bruke et egendefinert sertifikat når du bruker OAuth 2.0-endepunkt. Bruk Power Platform-administrasjonssenteret til å laste opp det egendefinerte sertifikatet. Når du har lastet opp det egendefinerte sertifikatet, må du oppdatere områdeinnstillingene som nedenfor:
Gå til Portalinnstillinger og velg Områdeinnstillinger.
Hvis du vil opprette en ny innstilling, velger du Ny.
Hvis du vil redigere en eksisterende innstilling, velger du Nettstedinnstilling i rutenettet.
Angi verdier:
- Navn: CustomCertificates/ImplicitGrantflow
- Nettsted: Det tilknyttede nettstedet
- Verdi: Kopier avtrykket av det opplastede egendefinerte sertifikatet fra skjermbildet Behandle egendefinert sertifikat og lim det inn her. Verdien angir hvilket sertifikat som skal brukes til implisitt tillatelsesflyt.
Velg Lagre og lukk.
Endepunktdetaljer for token
Du kan også få et token ved å sende en posteringsforespørsel til /token
-endepunktet. URL-adressen for token-endepunktet er: <portal_url>/_services/auth/token
. Token-endepunktet støtter følgende parametere:
Parameter | Obligatorisk? | Beskrivelse |
---|---|---|
client_id | Nei | En streng som sendes når du kaller endepunktet for godkjenning. Du må sikre at klient-ID-en er registrert i portalen. Ellers vises det en feilmelding. Klient-ID legges til i krav i tokenet som aud og appid -parameter og kan brukes av klienter for å validere at tokenet returneres for appen.Maksimumslengden er 36 tegn. Bare alfanumeriske tegn og bindestrek støttes. |
redirect_uri | Nei | URL-adressen til portalen der godkjenningssvar kan sendes og mottas. Den må være registrert for den bestemte client_id som brukes i samtalen, og må være nøyaktig samme verdi som registrert. |
område | Nei | En verdi som er inkludert i forespørselen som også returneres i tokensvaret. Det kan være en streng for alt innhold som du vil bruke. Vanligvis brukes en vilkårlig generert unik verdi til å hindre forfalskning av forespørsler på tvers av områder. Maksimumslengden er 20 tegn. |
nonce | Nei | En strengverdi sendt av klienten som er inkludert i det resulterende ID-tokenet som et krav. Klienten kan deretter bekrefte denne verdien for å redusere tokenangrep. Maksimumslengden er 20 tegn. |
response_type | Nei | Denne parameteren støtter bare token som verdi og gjør at appen umiddelbart kan motta et tilgangstoken fra endepunktet for godkjenning, uten å gjøre en ekstra forespørsel til endepunktet for godkjenning. |
Obs!
Selv om client_id
, redirect_uri
, state
og nonce
er valgfrie parametere, anbefales det å bruke dem for å forsikre deg om dine integreringer er sikre.
Vellykket svar
Endepunktet for token returnerer state og expires_in som svartopptekster, og token i skjemaet.
Feilsvar
Feilen i et endepunkt for token returneres som et JSON-dokument med følgende verdier:
- Feil-ID: Unik identifikator for feilen.
- Feilmelding: En bestemt feilmelding som kan bidra til å identifisere rotårsaken til en godkjenningsfeil.
- Korrelasjons-ID: En GUID som brukes til feilsøking. Hvis du har aktivert diagnoselogging, vil korrelasjons-ID-en finnes i serverfeillogger.
- Tidsstempel: Datoen og klokkeslettet da feilen genereres.
Feilmeldingen vises på standardspråket for den påloggede brukeren. Hvis brukeren ikke er logget på, vises påloggingssiden for brukeren. Et feilsvar ser f.eks. slik ut:
{"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" }
Godkjenne endepunktdetaljer
Obs!
Godkjenning av endepunkt er avskrevet. Bruk POST-forespørselen for tokenendepunkter for å hente ID-token.]
URL-adressen for godkjenning av endepunkt er: <portal_url>/_services/auth/authorize
. Endepunktet for godkjenning støtter følgende parametere:
Parameter | Obligatorisk? | Beskrivelse |
---|---|---|
client_id | Ja | En streng som sendes når du kaller endepunktet for godkjenning. Du må sikre at klient-ID-en er registrert i portalen. Ellers vises det en feilmelding. Klient-ID legges til i krav i tokenet som aud og appid -parameter og kan brukes av klienter for å validere at tokenet returneres for appen.Maksimumslengden er 36 tegn. Bare alfanumeriske tegn og bindestrek støttes. |
redirect_uri | Ja | URL-adressen til portalen der godkjenningssvar kan sendes og mottas. Den må være registrert for den bestemte client_id som brukes i samtalen, og må være nøyaktig samme verdi som registrert. |
område | Nei | En verdi som er inkludert i forespørselen som også returneres i tokensvaret. Det kan være en streng for alt innhold som du vil bruke. Vanligvis brukes en vilkårlig generert unik verdi til å hindre forfalskning av forespørsler på tvers av områder. Maksimumslengden er 20 tegn. |
nonce | Nei | En strengverdi sendt av klienten som er inkludert i det resulterende ID-tokenet som et krav. Klienten kan deretter bekrefte denne verdien for å redusere tokenangrep. Maksimumslengden er 20 tegn. |
response_type | Nei | Denne parameteren støtter bare token som verdi og gjør at appen umiddelbart kan motta et tilgangstoken fra endepunktet for godkjenning, uten å gjøre en ekstra forespørsel til endepunktet for godkjenning. |
Vellykket svar
Endepunktet for godkjenning returnerer følgende verdier i URL-adressen for svar som et fragment:
- token: Tokenet returneres som et JSON Web Token (JWT) digitalt signert av portalens privatnøkkel.
- state: Hvis en state-parameter er inkludert i forespørselen, må den samme verdien vises i svaret. Appen skal kontrollere at state-verdiene i forespørselen og svaret er identiske.
- expires_in: Tidsrommet som tilgangstokenet er gyldig (i sekunder).
Et vellykket svar ser f.eks. slik ut:
GET https://aadb2cplayground.azurewebsites.net/#token=eyJ0eXAiOiJKV1QiLCJhbGciOI1NisIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q&expires_in=3599&state=arbitrary_data_you_sent_earlier
Feilsvar
Feilen i endepunktet for godkjenning returneres som et JSON-dokument med følgende verdier:
- Feil-ID: Unik identifikator for feilen.
- Feilmelding: En bestemt feilmelding som kan bidra til å identifisere rotårsaken til en godkjenningsfeil.
- Korrelasjons-ID: En GUID som brukes til feilsøking. Hvis du har aktivert diagnoselogging, vil korrelasjons-ID-en finnes i serverfeillogger.
- Tidsstempel: Datoen og klokkeslettet da feilen genereres.
Feilmeldingen vises på standardspråket for den påloggede brukeren. Hvis brukeren ikke er logget på, vises påloggingssiden for brukeren. Et feilsvar ser f.eks. slik ut:
{"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" }
Valider ID-token
Å bare motta et ID-token er ikke tilstrekkelig for å godkjenne brukeren. Du må også validere det tokenets signatur og kontrollere kravene i tokenet basert på appens krav. Endepunktet for fellestoken inneholder fellesnøkkelen for portalen, som kan brukes til å validere signaturen til tokenet levert av portalen. URL-adressen for endepunktet for fellestoken er: <portal_url>/_services/auth/publickey
.
Slå implisitt tillatelsesflyt på eller av
Implisitt tillatelsesflyt er aktivert som standard. Hvis du ønsker å deaktivere implisitt tillatelsesflyt, angir du verdien for området Connector/ImplicitGrantFlowEnabled til Usann.
Hvis denne områdeinnstillingen ikke er tilgjengelig i portalen, må du opprette en ny områdeinnstilling med den riktige verdien.
Konfigurere token-gyldighet
Som standard er tokenet gyldig i 15 minutter. Hvis du vil endre gyldigheten til et token, angir du verdien til områdeinnstillingen ImplicitGrantFlow/TokenExpirationTime til den nødvendige verdien. Verdien må være angitt i sekunder. Maksimumsverdien kan være 1 time, og den laveste verdien må være 1 minutt. Hvis det er angitt en ugyldig verdi (for eksempel alfanumeriske tegn), brukes standardverdien 15 minutter. Hvis du angir en verdi som er mer enn maksimumsverdien eller mindre enn minimumsverdien, brukes henholdsvis maksimums- og minimumsverdiene som standard.
Hvis du f.eks. vil angi token-gyldighet til 30 minutter, kan du angi verdien for områdeinnstillingen ImplicitGrantFlow/TokenExpirationTime til 1800. Hvis du vil angi token-gyldighet til 1 time, kan du angi verdien for områdeinnstillingen ImplicitGrantFlow/TokenExpirationTime til 3600.
Registrere klient-ID for implisitt tillatelsesflyt
Du må registrere klient-IDen med portalen som denne flyten er tillatt for. For å registrere en klient-ID må du opprette følgende områdeinnstillinger:
Områdeinnstilling | Value |
---|---|
ImplicitGrantFlow/RegisteredClientId | De gyldige klient-ID-verdiene som er tillatt for denne portalen. Verdiene må være atskilt med et semikolon og kan inneholde alfanumeriske tegn og bindestrek. Maksimumslengden er 36 tegn. |
ImplicitGrantFlow/{ClientId}/RedirectUri | De gyldige URI-ene for omdirigering som er tillatt for en bestemt klient-ID. Verdiene må være atskilt med et semikolon. Den angitte URL-adressen må være en gyldig webside for portalen. |
Eksempelkode
Du kan bruke følgende eksempelkode for å komme i gang med å bruke implisitt tillatelsesflyt for OAuth 2.0 med API-er for Power Apps-portaler.
Bruke Portal Oauth-token med en ekstern Web-API
Dette eksemplet er et ASP.NET-basert prosjekt og brukes til å validere ID-tokenet som utstedes av Power Apps-portaler. Du finner det fullstendige eksemplet her: Bruke Portal OAuth-token med en ekstern Web-API.
Eksempel på tokenendepunkt
Dette eksemplet viser hvordan du kan bruke getAuthenticationToken-funksjonen til å hente et ID-token ved hjelp av tokenendepunktet i Power Apps-portaler. Eksemplet finner du her: Eksempel på tokenendepunkt
Obs!
Kan du fortelle oss om språkinnstillingene for dokumentasjonen? Ta en kort undersøkelse. (vær oppmerksom på at denne undersøkelsen er på engelsk)
Undersøkelsen tar rundt sju minutter. Det blir ikke samlet inn noen personopplysninger (personvernerklæring).