Compartir por


Utilice o fluxo de concesión implícita de OAuth 2.0 no seu portal

Nota

A partir do 12 de outubro de 2022, Portais de Power Apps é Power Pages. Máis información: Microsoft Power Pages xa está dispoñible de forma xeral (blog)
Proximamente migraremos e uniremos a documentación de Portais de Power Apps coa documentación de Power Pages.

Esta funcionalidade permite que un cliente realice chamadas do lado do cliente a API externas e protexelas utilizando o fluxo de concesión implícita de OAuth. Ofrece unextremo para obter tokens de acceso seguro. Estes tokens conterán información de identidade do usuario que usarán as API externas para a autorización despois do fluxo de concesión implícita de OAuth 2.0. A información de identidade dun usuario iniciado pásase de forma segura ás chamadas AJAX externas, o que axuda aos desenvolvedores a pasar o contexto de autenticación e tamén axudará aos usuarios a protexer as súas API.

O fluxo de concesión implícita de OAuth 2.0 admite extremos de token aos que un cliente pode chamar para obter un token de ID.

Certificados personalizados

O uso do fluxo de concesión implícita de certificado predeterminado para OAuth 2.0 está obsoleto. Deberá usar un certificado personalizado mentres utiliza o extremo de OAuth 2.0. Use o centro de administración de Power Platform para cargar o certificado personalizado. Despois de cargar o certificado personalizado, cómpre actualizar a configuración do sitio como se indica a continuación:

  1. Vaia á  configuración do portal  e seleccione  Configuración do sitio.

  2. Para crear unha nova configuración, seleccione  Nova.

  3. Para editar unha configuración existente, seleccione a configuración do sitio que aparece na grade.

  4. Especificar valores:

    • Nome: CustomCertificates/ImplicitGrantflow
    • Sitio web: O sitio web asociado.
    • Valor: copie a pegada dixital do certificado personalizado cargado desde a pantalla Xestionar certificado personalizado e péguea aquí. O valor indicará que certificado se utilizará para o fluxo de concesión implícita.
  5. Seleccione  Gardar e pechar. Menú Xeral para a configuración do novo sitio cos valores especificados.

Detalles do extremo token

Tamén pode obter un token realizando unha solicitude de publicación para o extremo /token. O URL do extremo token é: <portal_url>/_services/auth/token. O extremo de token admite os parámetros seguintes:

Parámetro Necesario? Descrición
client_id Non Cadea que se pasa ao realizar unha chamada ao extremo de autorizar. Debe garantir que o ID de cliente está rexistrado co portal. En caso contrario, móstrase un erro. O ID de cliente engádese en reclamacións no token como aud así como o parámetro appid e poden usalo os clientes para validar que o token devolto é para a aplicación.
A lonxitude máxima é de 36 caracteres. Só se admiten caracteres alfanuméricos e guións.
redirect_uri Non URL do portal onde as respostas de autenticación poden enviarse e recibirse. Debe rexistrase para o client_id concreto utilizado na chamada e debe ser exactamente o mesmo valor que está rexistrado.
estado Non Valor incluído na solicitude que tamén se devolve na resposta de token. Pode ser unha cadea de calquera contido que desexa utilizar. Normalmente, un valor único xerado aleatoriamente utilízase para evitar ataques de falsificación de solicitudes en múltiples sitios.
A lonxitude máxima é de 20 caracteres.
nonce Non Valor de cadea enviado polo cliente que está incluído no token de ID que resulta como reclamación. O cliente pode verificar este valor para mitigar ataques de reprodución de tokens. A lonxitude máxima é de 20 caracteres.
response_type No Este parámetro só admite token como valor, o que permite que a aplicación reciba inmediatamente un token de acceso do extremo de autorización, sen realizar unha segunda solicitude ao extremo de autorización.

Nota

Aínda que os parámetros client_id, redirect_uri, state e nonce son opcionais, é recomendable usalos para asegurarse de que as integracións son seguras.

Resposta correcta

O extremo de token devolve estado e expires_in como cabeceiras de resposta e token no corpo do formulario.

Resposta de erro

O erro no extremo token devólvese como un documento JSON cos seguintes valores:

  • ID de erro: Identificador único do erro.
  • Mensaxe de erro: Unha mensaxe de erro específica que pode axudar a identificar a causa raíz causa dun erro de autenticación.
  • ID de correlación: GUID que se utiliza con fines de depuración. Se ten activado o rexistro de diagnósticos, o ID de correlación aparecerá nos rexistros de erro de servidor.
  • Marca de hora: Data e hora en que se xera o erro.

A mensaxe de erro móstrase no idioma predefinido do usuario que iniciou sesión. Se o usuario non iniciou sesión, móstrase unha páxina de inicio de sesión para que o usuario inicie sesión. Por exemplo, unha resposta de erro ten o seguinte aspecto:

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

Detalles do extremo autorizar

Nota

O extremo de autorización está obsoleto. Use a solicitude POST do extremo de token para obter o token de identificación].

O URL do extremo autorizar é: <portal_url>/_services/auth/authorize. O extremo de autorizar admite os parámetros seguintes:

Parámetro Necesario? Descrición
client_id Si Cadea que se pasa ao realizar unha chamada ao extremo de autorizar. Debe garantir que o ID de cliente está rexistrado co portal. En caso contrario, móstrase un erro. O ID de cliente engádese en reclamacións no token como aud así como o parámetro appid e poden usalo os clientes para validar que o token devolto é para a aplicación.
A lonxitude máxima é de 36 caracteres. Só se admiten caracteres alfanuméricos e guións.
redirect_uri Si URL do portal onde as respostas de autenticación poden enviarse e recibirse. Debe rexistrase para o client_id concreto utilizado na chamada e debe ser exactamente o mesmo valor que está rexistrado.
estado Non Valor incluído na solicitude que tamén se devolve na resposta de token. Pode ser unha cadea de calquera contido que desexa utilizar. Normalmente, un valor único xerado aleatoriamente utilízase para evitar ataques de falsificación de solicitudes en múltiples sitios.
A lonxitude máxima é de 20 caracteres.
nonce Non Valor de cadea enviado polo cliente que está incluído no token de ID que resulta como reclamación. O cliente pode verificar este valor para mitigar ataques de reprodución de tokens. A lonxitude máxima é de 20 caracteres.
response_type No Este parámetro só admite token como valor, o que permite que a aplicación reciba inmediatamente un token de acceso do extremo de autorización, sen realizar unha segunda solicitude ao extremo de autorización.

Resposta correcta

O extremo autorizar devolve os seguintes valores no URL de resposta como un fragmento:

  • token: o token devólvese como un token web de JSON (JWT) asinado dixitalmente pola clave privada do portal.
  • estado: Se se inclúen un parámetro de estado na solicitude, o mesmo valor debería aparecen na resposta. A aplicación debe verificar que os valores de estado na solicitude e na resposta son idénticos.
  • expires_in: O período de tempo no que é válido o token de acceso (en segundos).

Por exemplo, unha resposta correcta ten o seguinte aspecto:

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

Resposta de erro

O erro no extremo autorizar devólvese como un documento JSON cos seguintes valores:

  • ID de erro: Identificador único do erro.
  • Mensaxe de erro: Unha mensaxe de erro específica que pode axudar a identificar a causa raíz causa dun erro de autenticación.
  • ID de correlación: GUID que se utiliza con fines de depuración. Se ten activado o rexistro de diagnósticos, o ID de correlación aparecerá nos rexistros de erro de servidor.
  • Marca de hora: Data e hora en que se xera o erro.

A mensaxe de erro móstrase no idioma predefinido do usuario que iniciou sesión. Se o usuario non iniciou sesión, móstrase a páxina de inicio de sesión para que o usuario inicie sesión. Por exemplo, unha resposta de erro ten o seguinte aspecto:

{"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 token de ID

Para autenticar o usuario non é suficiente obter un token de identificación; tamén debe validar a sinatura do token e verificar as solicitudes no token en función dos requirimentos da súa aplicación. O extremo de token público fornece a clave pública do portal, que pode utilizarse para validar a sinatura do token fornecida polo portal. O URL do extremo token público é: <portal_url>/_services/auth/publickey.

Activar ou desactivar fluxo de concesión implícita

Por defecto, o fluxo de concesión implícita está activado. Se desexa desactivar o fluxo de concesión implícita, defina o valor da configuración do sitio Conector/ImplicitGrantFlowEnabled como Falso.

Se a configuración do sitio non está dispoñible no seu portal, debe crear unha nova configuración do sitio co valor apropiado.

Configurar validez do token

Por defecto, o token é válido durante 15 minutos. Se desexa cambiar a validez do token, defina o valor da configuración do sitio de ImplicitGrantFlow/TokenExpirationTime ao valor requerido. O valor debe especificarse en segundos. O valor máximo pode ser 1 hora e o valor mínimo debe ser 1 minuto. Se se especifica un valor incorrecto (por exemplo, caracteres alfanuméricos), utilízase o valor predefinido de 15 minutos. Se especifica un valor superior ao valor máximo ou inferior ao valor mínimo, utilízanse os valores mínimos e máximos respectivamente, por defecto.

Por exemplo, para definir a validez do token en 30 minutos, defina o valor da configuración de sitio de ImplicitGrantFlow/TokenExpirationTime en 1800. Para definir a validez do token en 1 hora, defina o valor da configuración de sitio de ImplicitGrantFlow/TokenExpirationTime en 3600.

Rexistrar ID de cliente para o fluxo de concesión implícita

Debe rexistrar o ID do cliente co portal para o que está permitido este fluxo. Para rexistrar un ID de cliente, debe crear a configuración do sitio seguinte:

Configuración do sitio Value
ImplicitGrantFlow/RegisteredClientId Os valores de ID de cliente válidos permitidos para este portal. Os valores deben estar separados por un punto e coma e poden conter caracteres alfanuméricos e guións. A lonxitude máxima é de 36 caracteres.
ImplicitGrantFlow/{ClientId}/RedirectUri Os URI de redireccionamento válidos permitidos para un ID de cliente específico. Os valores debe estar separados por un punto e coma. O URL fornecido debe ser dunha páxina web válida do portal.

Código de mostra

Pode empregar o seguinte código de exemplo para comezar a usar a concesión implícita Oauth 2.0 coas API de portais de Power Apps.

Use o token Oauth do portal cunha API web externa

Esta mostra é un proxecto baseado en ASP.NET e úsase para validar o token de identificación emitido por portais de Power Apps. A mostra completa pódese atopar aquí: Usar o token Oauth do portal cunha API web externa.

Mostra de extremo de token

Esta mostra amosa como pode usar a función getAuthenticationToken para buscar un token de ID usando o extremo de token en portais de Power Apps. A mostra pódese atopar aquí: Mostra de extremo de token.

Nota

Pode indicarnos as súas preferencias para o idioma da documentación? Realice unha enquisa breve. (teña en conta que esa enquisa está en inglés)

Esta enquisa durará sete minutos aproximadamente. Non se recompilarán datos persoais (declaración de privacidade).