OAuth 2.1 PKCE es una extensión del framework de autorización OAuth 2.0, específicamente diseñada para mitigar el riesgo de interceptación de códigos de autorización en clientes públicos que no pueden mantener un secreto de cliente de forma segura. PKCE introduce un mecanismo criptográfico donde el cliente genera un 'code verifier' secreto y un 'code challenge' derivado de este. El 'code challenge' se envía al servidor de autorización durante la solicitud de autorización. Posteriormente, cuando el cliente intercambia el código de autorización por un token de acceso, debe enviar el 'code verifier' original. El servidor de autorización valida que el 'code verifier' coincide con el 'code challenge' inicial, asegurando que solo el cliente que inició el flujo puede completar el intercambio, incluso si el código de autorización fue interceptado.

En el mundo real, OAuth 2.1 PKCE es la práctica estándar para la autenticación y autorización en aplicaciones móviles nativas (iOS, Android) y Single Page Applications (SPAs) que se ejecutan en navegadores. Herramientas y frameworks como Auth0, Okta, Keycloak y AWS Cognito implementan y recomiendan PKCE por defecto para sus flujos de cliente público. Bibliotecas cliente de OAuth, como 'AppAuth' para iOS y Android, y 'oidc-client-js' para JavaScript, integran PKCE para simplificar su uso por parte de los desarrolladores. Prácticamente cualquier aplicación moderna que interactúe con una API protegida por OAuth 2.0 y que no pueda mantener un secreto de cliente de forma segura, debería estar utilizando PKCE.

Para un arquitecto, OAuth 2.1 PKCE es fundamental porque resuelve un problema de seguridad crítico en la arquitectura de microservicios y aplicaciones distribuidas. Su adopción elimina la necesidad de secretos de cliente en aplicaciones públicas, simplificando la gestión de credenciales y reduciendo la superficie de ataque. La decisión de diseño clave es siempre utilizar PKCE para clientes públicos, incluso si el proveedor de identidad no lo exige explícitamente, ya que añade una capa de seguridad robusta sin una complejidad significativa. Ignorar PKCE en clientes públicos introduce una vulnerabilidad conocida (la interceptación del código de autorización) que puede llevar a la suplantación de identidad del usuario. Por lo tanto, PKCE no es una opción, sino un requisito de seguridad para arquitecturas modernas que involucran clientes no confiables.