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.
Información general sobre 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_challengetransformandocode_verifiermediante el cifradoS256. -
El cliente dirige el explorador a la página de inicio de sesión de OAuth2, junto con el
code_challengegenerado. 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 le vuelve a dirigir 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_verifierutilizandocode_challenge_methoddesde 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 tokeny, 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 la creación de la aplicación OAuth2, consulte Crear una aplicación web de una sola página de OAuth2 mediante PKCE en Creación de aplicaciones OAuth2 para integraciones de Workfront
Creación de la clave de prueba 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 punto final /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 reto.
Necesita añadir el código en su aplicación cliente para generar 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.
Solicitud de 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 transfieren:
-
client_idcoincide 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_typeescode, porque la aplicación usa el tipo de concesión Código de autorización. -
redirect_uries 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_methodes el método hash utilizado para generar el desafío, que siempre esS256para las aplicaciones Oauth2 de Workfront que utilizan PKCE. -
code_challengees el desafío de código utilizado para PKCE.
Intercambio del código para 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 transfieren:
-
grant_typeesauthorization_code, porque la aplicación usa el tipo de concesión Código de autorización. -
redirect_uridebe coincidir con el URI que se usó para obtener el código de autorización. -
codees el código de autorización que recibió del extremo /authorize. -
code_verifieres el verificador de código PKCE que su aplicación generó en Crear la clave de prueba para el intercambio de código. -
client_ididentifica 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 POST a la API de forma similar a la siguiente:
| code language-none |
|---|
|