OAuth 2.0 ofrece múltiples modos de autorización, entre los cuales la Authorization Code Grant es la más utilizada y segura. code_challenge es una función mejorada en seguridad dentro de este modo, utilizada principalmente para el mecanismo PKCE (Proof Key for Code Exchange).
¿Qué es el PKCE?
PKCE (Clave de Prueba para el Intercambio de Códigos) es una extensión diseñada para mejorar la seguridad del patrón de código de autorización OAuth 2.0, especialmente cuando se utiliza en clientes públicos como aplicaciones JavaScript o aplicaciones móviles que se ejecutan en navegadores. PKCE previene que los códigos de autorización sean interceptados y mal utilizados añadiendo un paso adicional de autenticación a las solicitudes de autorización.
code_challenge Rol
code_challenge forma parte del mecanismo PKCE, generado y enviado durante la fase de solicitud de autorización. Se basa en un valor secreto (llamado code_verifier), transformado por un algoritmo de hash como S256. El propósito de code_challenge es proporcionar una base de validación para las solicitudes posteriores de tokens sin exponer directamente el code_verifier.
Generación y uso de code_challenge y code_verifier
Generación code_verifier: code_verifier es una cadena de alta entropía y generada aleatoriamente,Longitud de caracteres (entre 43 y 128). El valor por defecto es 43。
Generación code_challenge: Usando code_verifier, code_challenge se genera mediante un algoritmo de hash (como S256). Para S256, code_challenge es la codificación URL en Base64 del valor hash code_verifier SHA-256, pero el carácter de relleno = de la codificación debe eliminarse y la longitud de salida debe ser de 43 caracteres (ya que tras la codificación URL en Base64, cada 4 caracteres representa 3 bytes, pero el último bloque de caracteres puede ser menor que 4 caracteres, por lo que la longitud puede variar ligeramente tras eliminar = caracteres).
Usa code_challenge en las solicitudes de autorización: Al iniciar una solicitud de autorización, code_challenge se envía como uno de los parámetros de la solicitud al servidor de autorización.
Uso de code_verifier en las solicitudes de token: Cuando el servidor de autorización devuelve el código de autorización, el cliente utiliza este código junto con el code_verifier previamente generado para solicitar acceso al endpoint del token. El servidor de autorización verifica si el code_challenge y el code_verifier coinciden, asegurando que la solicitud sea iniciada por el cliente original.
Generación PKCE
Herramientas de generación PKCE en línea:El inicio de sesión del hipervínculo es visible.
El código C# se genera de la siguiente manera:
Como se muestra a continuación:
Referencia:
El inicio de sesión del hipervínculo es visible.
El inicio de sesión del hipervínculo es visible. |