Configure y utilice las aplicaciones OAuth 2 personalizadas de su organización mediante el flujo PKCE
PKCE es un flujo de autorización seguro que funciona bien con aplicaciones que se actualizan dinámicamente, como las aplicaciones móviles, pero que resulta útil en todos los clientes OAuth2. En lugar de un secreto de cliente estático, PKCE utiliza una cadena generada dinámicamente, lo que elimina el riesgo de que se filtre un secreto de cliente.
Introducción a PKCE
Un flujo PKCE tiene los pasos siguientes. Los pasos de esta sección se presentan solo a título informativo. Para realizar estos procedimientos, consulte otras secciones de este artículo.
-
El cliente crea
code_challenge
al transformarcode_verifier
mediante el cifradoS256
. -
El cliente dirige el explorador a la página de inicio de sesión de OAuth2, junto con el
code_challenge
generado. Debe registrar la aplicación (cliente) para que OAuth2 pueda aceptar la solicitud de autorización. Después del registro, la aplicación puede redirigir el explorador a OAuth2. -
El servidor de autorización de OAuth2 redirige la solicitud de autenticación al usuario.
-
El usuario se autentica utilizando una de las opciones de inicio de sesión configuradas y puede ver una página de consentimiento en la que se enumeran los permisos que OAuth2 concederá a la aplicación.
-
OAuth2 redirige a su aplicación con un
authorization code
. -
Su aplicación envía este código, junto con
code_verifier
, a OAuth2. -
El servidor de autorización de OAuth2 transforma
code_verifier
utilizandocode_challenge_method
de la solicitud de autorización inicial y comprueba el resultado concode_challenge
. Si el valor de ambas cadenas coincide, el servidor ha comprobado que las solicitudes proceden del mismo cliente y emitirán unaccess token
. -
OAuth2 devuelve
access token
y, opcionalmente,refresh token
. -
La aplicación ahora puede utilizar estos tokens para llamar al servidor de recursos, como una API en nombre del usuario.
-
El servidor de recursos valida el token antes de responder a la solicitud.
Configuración de la aplicación
Para poder implementar la autorización, debe registrar la aplicación en OAuth2 creando una integración de aplicaciones desde Workfront.
Para obtener instrucciones sobre cómo crear la aplicación OAuth2, consulte Crear una aplicación web de una sola página de OAuth2 mediante PKCE en Crear aplicaciones OAuth2 para integraciones de Workfront
Crear la clave de revisión para el intercambio de código
De forma similar al flujo estándar del Código de autorización, la aplicación se inicia redireccionando el explorador del usuario al extremo /authorize
del servidor de autorización. Sin embargo, en este caso también tiene que pasar un reto de código.
El primer paso es generar un verificador de códigos y un desafío.
Debe agregar código en la aplicación cliente para crear el verificador de códigos y el reto de códigos.
El código del generador PKCE crea un resultado similar al siguiente:
code language-none |
---|
|
Su aplicación guarda code_verifier
para más adelante y envía code_challenge
junto con la solicitud de autorización a la dirección URL /authorize
del servidor de autorización.
Solicitar un código de autorización
Si utiliza el servidor de autorización personalizado predeterminado, la dirección URL de la solicitud sería similar a la siguiente:
code language-none |
---|
|
Tenga en cuenta los parámetros que se pasan:
-
client_id
coincide con el ID de cliente de la aplicación OAuth2 que creó en al configurar la aplicación.Para obtener instrucciones, consulte Creación de una aplicación web de una sola página de OAuth2 mediante PKCE en Creación de aplicaciones de OAuth2 para integraciones de Workfront.
-
response_type
escode
, porque la aplicación usa el tipo de concesión Código de autorización. -
redirect_uri
es la ubicación de devolución de llamada a la que se dirige el agente de usuario junto concode
. Debe coincidir con una de las direcciones URL de redireccionamiento que especificó al crear la aplicación OAuth2. -
code_challenge_method
es el método hash utilizado para generar el desafío, que siempre esS256
para las aplicaciones Oauth2 de Workfront que utilizan PKCE. -
code_challenge
es el desafío de código utilizado para PKCE.
Intercambio del código por tokens
Para intercambiar el código de autorización por un token de acceso, páselo al extremo /token
del servidor de autorización junto con code_verifier
.
code language-none |
---|
|
Tenga en cuenta los parámetros que se pasan:
-
grant_type
esauthorization_code
, porque la aplicación usa el tipo de concesión Código de autorización. -
redirect_uri
debe coincidir con el URI que se usó para obtener el código de autorización. -
code
es el código de autorización que recibió del extremo /authorize. -
code_verifier
es el verificador de código PKCE que su aplicación generó en Crear la clave de revisión para el intercambio de código. -
client_id
identifica a su cliente y debe coincidir con el valor preregistrado en OAuth2.
Si el código sigue siendo válido y el verificador de códigos coincide, la aplicación recibe un token de acceso.
code language-none |
---|
|
Validación del token de acceso
Cuando la aplicación pasa una solicitud con un token de acceso, el servidor de recursos debe validarla.
Puede validar el token de acceso con una llamada de API similar a la siguiente:
code language-none |
---|
|
Solicitar un token de actualización
Para solicitar un token de actualización, puede realizar una llamada al POST a la API de forma similar a la siguiente:
code language-none |
---|
|