Use flujo de concesión implícito de OAuth 2.0 en el portal

Nota

A partir del 12 de octubre de 2022, los portales de Power Apps son Power Pages. Más información: Microsoft Power Pages ya está disponible para el público en general (blog)
Pronto migraremos y fusionaremos la documentación de los portales de Power Apps con la documentación de Power Pages.

Esta característica permite que un cliente realice llamadas del lado del cliente a API externas y las proteja mediante flujo de concesión implícito de OAuth. Proporciona un extremo para obtener tokens de acceso seguro. Estos tokens de acceso seguro que contendrán información de identidad de usuario para uso de API externas para autorización después de flujo de concesión implícito de OAuth 2.0. La información de identidad de un usuario que inició sesión se pasa de manera segura a las llamadas AJAX externas, lo que ayuda a los desarrolladores a pasar el contexto de autenticación y también ayudará a los usuarios a proteger sus API.

El flujo de concesión implícito de OAuth 2.0 admite extremos de token a los que un cliente puede llamar para obtener un token de Id.

Certificados personalizados

Usar el certificado predeterminado para el flujo de concesión implícita OAuth 2.0 está en desuso. Deberá usar un certificado personalizado mientras usa un punto de conexión OAuth 2.0. Use el Centro de administración de Power Platform para cargar el certificado personalizado. Después de cargar el certificado personalizado, debe actualizar la configuración del sitio como se muestra a continuación:

  1. Vaya a configuración de portal y seleccione Configuración del sitio.

  2. Para crear un nuevo ajuste, seleccione  Nuevo.

  3. Para editar un ajuste existente, seleccione la configuración del sitio incluida en la cuadrícula.

  4. Especificar valores:

    • Nombre: CustomCertificates/ImplicitGrantflow
    • Sitio web: El sitio web asociado.
    • Valor: copie la huella digital del certificado personalizado cargado desde la pantalla Administrar certificado personalizado y péguela aquí. El valor indicará qué certificado se utilizará para el flujo de concesión implícito.
  5. Seleccione  Guardar y cerrar. Menú general para la configuración del nuevo sitio con valores especificados.

Detalles del extremo de token

También puede ir un token realizando una solicitud de publicación al extremo /token. La dirección URL para el extremo token es: <portal_url>/_services/auth/token. El extremo token admite los siguientes parámetros:

Parámetro ¿Obligatorio? Descripción
client_id No Una cadena que se pasa al realizar una llamada al extremo autorizar. Debe asegurarse de el identificador del cliente está registrado en el portal. De lo contrario, se muestra un error. El identificador de cliente se agrega en notificaciones en el token aud además del appid parámetro y lo pueden usar clientes para validar que el token devuelto es para su aplicación.
La longitud máxima es de 36 caracteres. Solo se admiten caracteres alfanuméricos y guiones.
redirect_uri No Dirección URL del portal donde se pueden enviar y recibir respuestas de autenticación. Debe estar registrado para el client_id específico usado en la llamada y debe ser exactamente el mismo valor que el registrado.
estado No Un valor incluido en la solicitud que también se devuelve en la respuesta del token. Puede ser una cadena de cualquier contenido que desee usar. Generalmente, se usa un valor único generado de forma aleatoria para evitar ataques de falsificación de solicitudes entre sitios.
La longitud máxima es de 20 caracteres.
nonce No Un valor de cadena enviado por el cliente que se incluye en el token de identificador resultante como notificación. El cliente puede entonces comprobar este valor para mitigar los ataques de repetición de token. La longitud máxima es de 20 caracteres.
response_type No Este parámetro solo admite token como valor, lo que permite a la aplicación inmediatamente recibir un token de acceso del extremo autorizar, sin realizar una segunda solicitud al extremo autorizar.

Nota

Aunque los parámetros client_id, redirect_uri, state y nonce son opcionales, se recomienda usarlos para asegurarse de que las integraciones son seguras.

Respuesta correcta

El extremo token devuelve state expires_in como encabezados de respuesta, y token en el cuerpo del formulario.

Respuesta de error

El error en el extremo token se devuelve como documento de JSON con los siguientes valores:

  • Id. de error: Identificador único del error.
  • Mensaje de error: Un mensaje de error específico que puede ayudarle a identificar la causa raíz de un error de autenticación.
  • Id. de correlación: Un GUID que se usa para fines de depuración. Si ha habilitado el registro de diagnóstico, el id. de correlación estaría presente en registros de errores del servidor.
  • Marca de tiempo: Fecha y hora en que se generó el error.

El mensaje de error se muestra en el idioma predeterminado del usuario que ha iniciado sesión. Si el usuario no ha iniciado sesión, una página de inicio de sesión se muestra para que el usuario inicie sesión. Por ejemplo, una respuesta de error tiene este 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" }

Autorizar detalles del extremo

Nota

Autorizar extremo está en desuso. Use la solicitud POST Extremo de token para obtener el token de id.]

La dirección URL para el extremo autorizar es: <portal_url>/_services/auth/authorize. El extremo autorizar admite los siguientes parámetros:

Parámetro ¿Obligatorio? Descripción
client_id Una cadena que se pasa al realizar una llamada al extremo autorizar. Debe asegurarse de el identificador del cliente está registrado en el portal. De lo contrario, se muestra un error. El identificador de cliente se agrega en notificaciones en el token aud además del appid parámetro y lo pueden usar clientes para validar que el token devuelto es para su aplicación.
La longitud máxima es de 36 caracteres. Solo se admiten caracteres alfanuméricos y guiones.
redirect_uri Dirección URL del portal donde se pueden enviar y recibir respuestas de autenticación. Debe estar registrado para el client_id específico usado en la llamada y debe ser exactamente el mismo valor que el registrado.
estado No Un valor incluido en la solicitud que también se devuelve en la respuesta del token. Puede ser una cadena de cualquier contenido que desee usar. Generalmente, se usa un valor único generado de forma aleatoria para evitar ataques de falsificación de solicitudes entre sitios.
La longitud máxima es de 20 caracteres.
nonce No Un valor de cadena enviado por el cliente que se incluye en el token de identificador resultante como notificación. El cliente puede entonces comprobar este valor para mitigar los ataques de repetición de token. La longitud máxima es de 20 caracteres.
response_type No Este parámetro solo admite token como valor, lo que permite a la aplicación inmediatamente recibir un token de acceso del extremo autorizar, sin realizar una segunda solicitud al extremo autorizar.

Respuesta correcta

El extremo autorizar devuelve los siguientes valores en la dirección URL de respuesta como fragmento:

  • token: El token se devuelve como token web JSON (JWT) firmado digitalmente por la clave privada del portal.
  • state: Si un parámetro de estado se incluye en la solicitud, el mismo valor debe aparecer en la respuesta. La aplicación debe comprobar que los valores de estado de la solicitud y la respuesta sean idénticos.
  • expires_in: El periodo de tiempo que el token de acceso es válido (en segundos).

Por ejemplo, una respuesta correcta tiene este aspecto:

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

Respuesta de error

El error en el extremo autorizar se devuelve como documento de JSON con los siguientes valores:

  • Id. de error: Identificador único del error.
  • Mensaje de error: Un mensaje de error específico que puede ayudarle a identificar la causa raíz de un error de autenticación.
  • Id. de correlación: Un GUID que se usa para fines de depuración. Si ha habilitado el registro de diagnóstico, el id. de correlación estaría presente en registros de errores del servidor.
  • Marca de tiempo: Fecha y hora en que se generó el error.

El mensaje de error se muestra en el idioma predeterminado del usuario que ha iniciado sesión. Si el usuario no ha iniciado sesión, la página de inicio de sesión se muestra para que el usuario inicie sesión. Por ejemplo, una respuesta de error tiene este 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 identificador

No basta con obtener un token de identificador para autenticar al usuario; también debe validar la firma del token y comprobar las notificaciones en el token según los requisitos de la aplicación. El extremo del token pública proporciona la clave pública del portal, que puede usarse para validar la firma del token proporcionado por el portal. La dirección URL para el extremo token público es: <portal_url>/_services/auth/publickey.

Activar o desactivar flujo de concesión implícito

De forma predeterminada, flujo de concesión implícito está habilitado. Si desea desactivar el flujo de concesión implícito, establezca el valor del ajuste Connector/ImplicitGrantFlowEnabled en Falso.

Si la configuración del sitio no está disponible en el portal, debe crear una nueva configuración del sitio con el valor apropiado.

Configure validez de token

De forma predeterminada, el token es válido durante 15 minutos. Si desea cambiar la validez del token, establezca el valor del sitio ImplicitGrantFlow/TokenExpirationTime con el valor necesario. El valor debe especificarse en segundos. El valor máximo puede ser 1 hora, y el valor mínimo debe ser 1 minuto. Si se especifica un valor incorrecto (por ejemplo, caracteres alfanuméricos), se usa el valor predeterminado de 15 minutos. Si especifica un valor mayor que el valor máximo o inferior al valor mínimo, se usarán los valores máximo y mínimo respectivamente de forma predeterminada.

Por ejemplo, para establecer la validez del token a 30 minutos, establezca el valor del sitio ImplicitGrantFlow/TokenExpirationTime en 1800. Para establecer la validez del token a 1 hora, establezca el valor del sitio ImplicitGrantFlow/TokenExpirationTime en 3600.

Registrar el identificador del cliente para flujo de concesión implícito

Debe registrar el identificador de cliente con el portal para el que está permitido este flujo. Para registrar un identificador del cliente, debe crear los siguientes valores del sitio:

Configuración del sitio Value
ImplicitGrantFlow/RegisteredClientId Los valores de identificador de cliente válidos que se permiten para este portal. Los valores deben ir separados por punto y coma y pueden contener caracteres alfanuméricos y guiones. La longitud máxima es de 36 caracteres.
ImplicitGrantFlow/{ClientId}/RedirectUri La redirección válida URI que se permite para un identificador de cliente específico. Los valores deben separar por punto y coma. La dirección URL proporcionada debe ser de una página web válida del portal.

Código de ejemplo

Puede usar el código siguiente para empezar a usar la concesión implícita de OAuth 2.0 con las API de portales de Power Apps.

Use el token de OAuth del portal con una API web externa

Este ejemplo es un proyecto basado en ASP.NET y se usa para validar el token de id. emitido por portales de Power Apps. El código de ejemplo completo se puede encontrar aquí: Use el token de OAuth del portal con una API web externa.

Ejemplo de extremo de token

Este ejemplo le muestra cómo puede usar la función getAuthenticationToken para capturar un token de identificador mediante el extremo de token en portales de Power Apps. El ejemplo se puede encontrar aquí: Ejemplo de extremo de token.

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).