Saltar al contenido
ecdsa.com

Base64url

El alfabeto base64 seguro para URL y nombres de archivo del RFC 4648 §5, que sustituye + y / por - y _ y, en JOSE, prescinde del relleno =; todas las partes de un JWT se codifican en base64url.
También se escribebase64urlBase64URLURL-safe base64RFC 4648 section 5

Base64 convierte cada 3 bytes en 4 caracteres, así que el tamaño codificado es de unos 4/3 de la entrada: una firma ES256 de 64 bytes pasa a 86 caracteres, y una firma RS256 de 256 bytes, a 342. JWS, JWE y JWK usan base64url sin relleno (RFC 7515 §2), igual que los id y rawId de WebAuthn en JSON, las pruebas DPoP y las divulgaciones de SD-JWT. Los archivos PEM, igual que MIME, usan el alfabeto estándar con relleno y saltos de línea.

Errores típicos: decodificar base64url con un decodificador base64 estándar (falla con - o _, o los altera sin avisar), añadir o exigir el relleno =, mezclar los dos alfabetos al pasar claves entre PEM y JWK, y comparar las cadenas codificadas en lugar de los bytes decodificados. Los analizadores estrictos de JOSE rechazan el relleno y los espacios en blanco dentro de un token compacto.

API: Buffer.from(s, "base64url") y buf.toString("base64url") en Node.js; base64.urlsafe_b64encode en Python (conserva el relleno, que tienes que quitar); base64.RawURLEncoding en Go; Base64.getUrlEncoder().withoutPadding() en Java.

Estándares y referencias

Todos los términos