Comparteix a través de


Utilitzar el flux de concessió implícit OAuth 2.0 dins del vostre portal

Nota

Des del 12 d'octubre de 2022, els portals del Power Apps són Power Pages. Més informació: Microsoft Power Pages ara està disponible de manera general (bloc)
Ben aviat migrarem i combinarem la documentació dels portals del Power Apps amb la documentació del Power Pages.

Aquesta característica permet a un client fer trucades de client a API externes i protegir-les mitjançant el flux de concessió implícit OAuth. Proporciona un extrem per obtenir testimonis d'accés segurs. Aquests testimonis inclouran informació d'identitat d'usuari que s'utilitzaran per a API externes per a l'autorització després del flux de concessió implícit OAuth 2.0. La informació d'identitat d'un usuari que ha iniciat la sessió es passa d'una manera segura a les crides AJAX externes, la qual cosa ajuda els desenvolupadors a passar el context d'autenticació i ajudarà els usuaris a protegir les seves API.

El flux de concessió implícit OAuth 2.0 és compatible amb els extrems de testimoni que un client pot cridar per obtenir un testimoni d'identificació.

Certificats personalitzats

L'ús del certificat per defecte del flux de concessió implícita OAuth 2.0 és obsolet. Haureu d'utilitzar un certificat personalitzat mentre utilitzeu l'extrem OAuth 2.0. Utilitzeu el Centre d'administració de Power Platform per carregar el certificat personalitzat. Després de carregar el certificat personalitzat, heu d'actualitzar la configuració del lloc de la manera següent:

  1. Aneu a  configuració del portal  i seleccioneu  Configuració del lloc.

  2. Per crear una configuració nova, seleccioneu  Crea.

  3. Per editar una configuració existent: seleccioneu la configuració del lloc que es mostra a la quadrícula.

  4. Especifiqueu valors:

    • Nom : CustomCertificates/ImplicitGrantflow
    • Lloc web: el lloc web associat
    • Valor: copieu l'empremta digital del certificat personalitzat carregat des de la pantalla Administrar el certificat personalitzat i enganxeu-lo aquí. El valor indicarà quin certificat s'utilitzarà per al flux de concessió implícit.
  5. Seleccioneu  Desa i tanca. Menú general per a Configuració del lloc nova amb valors especificats.

Detalls de l'extrem testimoni

També podeu obtenir un testimoni si feu una sol·licitud de publicació a l'extrem /token. L'adreça URL de l'extrem del testimoni és: <portal_url>/_services/auth/token. L'extrem del testimoni admet els paràmetres següents:

Paràmetre Obligatori? Descripció
client_id No Una cadena que es passa quan es fa una trucada a l'extrem d'autorització. Heu d'assegurar-vos que l’ID de client estigui registrat al portal. En cas contrari, es visualitzarà un error. L'ID de client s'afegeix a les reclamacions del testimoni com a paràmetre aud i appid, i els clients el poden utilitzar per validar que el testimoni retornat és per a la seva aplicació.
La longitud màxima és de 36 caràcters. Només s’admeten caràcters alfanumèrics i guions.
redirect_uri No Adreça URL del portal on es poden enviar i rebre respostes d'autenticació. Cal registrar-lo per al client_id concret que s’utilitza en la trucada i hauria de ser exactament el mateix valor que el registrat.
state No Un valor inclòs a la sol·licitud que també es retorna a la resposta del testimoni. Pot ser una cadena de qualsevol contingut que vulgueu utilitzar. Normalment, s'utilitza un valor únic generat aleatòriament per evitar atacs de falsificació de sol·licitud creuada.
La longitud màxima és de 20 caràcters.
nonce No Un valor de cadena enviat pel client que s'inclou com a reclamació al testimoni d'identificació resultant. El client pot verificar aquest valor per mitigar els atacs de reproducció del testimoni. La longitud màxima és de 20 caràcters.
response_type No Aquest paràmetre només admet token com a valor, cosa que permet que la vostra aplicació rebi immediatament un testimoni d'accés des de l'extrem d'autorització, sense fer una segona sol·licitud.

Nota

Tot i que els paràmetres client_id, redirect_uri, state i nonce són opcionals, es recomana utilitzar-los per tal de garantir que les integracions siguin segures.

Resposta correcta

L'extrem del testimoni retorna state i expires_in com a capçaleres de resposta i testimoni al cos del formulari.

Resposta de l'error

L’error de l'extrem de testimoni es retorna com a document JSON amb els valors següents:

  • ID error: Identificador únic de l'error.
  • Missatge d'error: un missatge d'error específic que us pot ajudar a identificar la causa arrel d'un error d'autenticació.
  • ID de correlació: un GUID que s'utilitza per a la depuració. Si heu activat el registre de diagnòstic, hi ha d'haver un identificador de correlació en els registres d’error del servidor.
  • Marca horària: Data i hora de generació de l'error.

El missatge d’error es mostra en l’idioma per defecte de l’usuari que ha iniciat la sessió. Si l'usuari no ha iniciat la sessió, es mostrarà una pàgina d'inici de sessió per tal que la iniciï. Per exemple, una resposta d'error apareix de la manera següent:

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

Detalls de l'extrem d'autorització

Nota

L'extrem d'autorització és obsolet. Utilitzeu la sol·licitud POST de l'extrem del testimoni per obtenir el testimoni d'identificador.]

L'adreça URL de l'extrem d'autorització és: <portal_url>/_services/auth/authorize. L'extrem d'autorització admet els paràmetres següents:

Paràmetre Obligatori? Descripció
client_id Una cadena que es passa quan es fa una trucada a l'extrem d'autorització. Heu d'assegurar-vos que l’ID de client estigui registrat al portal. En cas contrari, es visualitzarà un error. L'ID de client s'afegeix a les reclamacions del testimoni com a paràmetre aud i appid, i els clients el poden utilitzar per validar que el testimoni retornat és per a la seva aplicació.
La longitud màxima és de 36 caràcters. Només s’admeten caràcters alfanumèrics i guions.
redirect_uri Adreça URL del portal on es poden enviar i rebre respostes d'autenticació. Cal registrar-lo per al client_id concret que s’utilitza en la trucada i hauria de ser exactament el mateix valor que el registrat.
state No Un valor inclòs a la sol·licitud que també es retorna a la resposta del testimoni. Pot ser una cadena de qualsevol contingut que vulgueu utilitzar. Normalment, s'utilitza un valor únic generat aleatòriament per evitar atacs de falsificació de sol·licitud creuada.
La longitud màxima és de 20 caràcters.
nonce No Un valor de cadena enviat pel client que s'inclou com a reclamació al testimoni d'identificació resultant. El client pot verificar aquest valor per mitigar els atacs de reproducció del testimoni. La longitud màxima és de 20 caràcters.
response_type No Aquest paràmetre només admet token com a valor, cosa que permet que la vostra aplicació rebi immediatament un testimoni d'accés des de l'extrem d'autorització, sense fer una segona sol·licitud.

Resposta correcta

L'extrem d’autorització retorna els següents valors a l’adreça URL de resposta com a fragment:

  • testimoni: el testimoni es retorna com a testimoni web JSON (JWT) signat digitalment per la clau privada del portal.
  • estat: si s'inclou un paràmetre d'estat a la sol·licitud, ha d'aparèixer el mateix valor a la resposta. L’aplicació ha de verificar que els valors d’estat de la sol·licitud i la resposta siguin idèntics.
  • expires_in: el període de temps que el testimoni d’accés és vàlid (en segons).

Per exemple, una resposta correcta apareix de la manera següent:

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

Resposta de l'error

L’error de l'extrem d'autorització es retorna com a document JSON amb els valors següents:

  • ID error: Identificador únic de l'error.
  • Missatge d'error: un missatge d'error específic que us pot ajudar a identificar la causa arrel d'un error d'autenticació.
  • ID de correlació: un GUID que s'utilitza per a la depuració. Si heu activat el registre de diagnòstic, hi ha d'haver un identificador de correlació en els registres d’error del servidor.
  • Marca horària: Data i hora de generació de l'error.

El missatge d’error es mostra en l’idioma per defecte de l’usuari que ha iniciat la sessió. Si l'usuari no ha iniciat la sessió, es mostrarà la pàgina d'inici de sessió per tal que la iniciï. Per exemple, una resposta d'error apareix de la manera següent:

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

Validar el testimoni d'ID

Aconseguir un testimoni d'identificació no és suficient per autenticar l'usuari; també heu de validar la signatura del testimoni i verificar les reclamacions del testimoni segons els requisits de la vostra aplicació. L'extrem del testimoni públic proporciona la clau pública del portal, que es pot utilitzar per validar la signatura del testimoni proporcionada pel portal. L'adreça URL de l'extrem del testimoni públic és: <portal_url>/_services/auth/publickey.

Activar o desactivar el flux de concessió implícit

Per defecte, el flux de concessió implícit està habilitat. Si voleu desactivar el flux de concessió implícit, establiu la configuració del valor del lloc Connector/ImplicitGrantFlowEnabled a False.

Si aquesta configuració del lloc no està disponible al vostre portal, heu de crear una configuració de lloc nova amb el valor adequat.

Configurar la validesa del testimoni

Per defecte, el testimoni és vàlid durant 15 minuts. Si voleu canviar la validesa del testimoni, establiu el valor de la configuració del lloc ImplicitGrantFlow/TokenExpirationTime al valor requerit. El valor s'ha d'especificar en segons. El valor màxim pot ser una hora i el valor mínim ha de ser un minut. Si s'especifica un valor incorrecte (per exemple, caràcters alfanumèrics), s'utilitza el valor per defecte de 15 minuts. Si especifiqueu un valor superior al valor màxim o inferior al valor mínim, s’utilitzaran els valors màxim i mínim, respectivament, per defecte.

Per exemple, per establir la validesa del testimoni a 30 minuts, establiu el valor de la configuració del lloc ImplicitGrantFlow/TokenExpirationTime a 1800. Per establir la validesa del testimoni a 1 hora, establiu el valor de la configuració del lloc ImplicitGrantFlow/TokenExpirationTime a 3600.

Registrar l'ID de client per a un flux de concessió implícit

Heu de registrar l’ID de client al portal per al qual s'ha permès aquest flux. Per registrar un ID de client, heu de crear la configuració del lloc següent:

Configuració del lloc Value
ImplicitGrantFlow/RegisteredClientId Els valors d’ID de client vàlids que s’admeten per a aquest portal. Els valors han d'estar separats per un punt i coma i poden contenir caràcters alfanumèrics i guions. La longitud màxima és de 36 caràcters.
ImplicitGrantFlow/{ClientId}/RedirectUri Les URI de redirecció vàlides que es permeten per a una ID de client específic. Els valors han d'estar separats per un punt i coma. L’adreça URL proporcionada ha de ser una pàgina web vàlida del portal.

Codi d'exemple

Podeu utilitzar el codi d'exemple següent per començar a utilitzar la concessió implícita OAuth 2.0 amb les API dels portals del Power Apps.

Utilitzar el testimoni Oauth del portal amb una API web externa

Aquesta mostra és un projecte basat en ASP.NET i s'utilitza per validar el testimoni d'ID emès pels portals del Power Apps. La mostra completa es pot trobar aquí: Utilitzar el testimoni OAuth del portal amb una API web externa.

Mostra del testimoni de l'extrem

Aquesta mostra indica com podeu utilitzar la funció getAuthenticationToken per cercar un testimoni d'ID amb l'extrem de testimoni als portals del Power Apps. La mostra es pot trobar aquí: Mostra d'extrem de testimoni.

Nota

Ens podeu dir quines són les vostres preferències d'idioma per a la documentació? Responeu una breu enquesta. (tingueu en compte que l'idioma de l'enquesta és l'anglès)

Trigareu uns set minuts a completar l'enquesta. No es recopilen dades personals (declaració de privadesa).