Pular para o conteúdo
ecdsa.com

Base64url

O alfabeto base64 seguro para URLs e nomes de arquivo da RFC 4648 §5, que substitui + e / por - e _ e, no JOSE, omite o padding =; todas as partes de um JWT são codificadas em base64url.
Também escrito comobase64urlBase64URLURL-safe base64RFC 4648 section 5

O Base64 converte cada 3 bytes em 4 caracteres, então o tamanho codificado é cerca de 4/3 da entrada: uma assinatura ES256 de 64 bytes vira 86 caracteres, e uma assinatura RS256 de 256 bytes, 342. O JWS, o JWE e a JWK usam base64url sem padding (RFC 7515 §2), assim como o id e o rawId do WebAuthn em JSON, as provas DPoP e as disclosures do SD-JWT. Os arquivos PEM e o MIME usam o alfabeto padrão, com padding e quebras de linha.

Bugs típicos: a decodificação de base64url com um decodificador base64 padrão (que falha com - ou _ ou os corrompe silenciosamente), a adição ou a exigência do padding =, a mistura dos dois alfabetos ao mover chaves entre PEM e JWK e a comparação das strings codificadas em vez dos bytes decodificados. Parsers JOSE estritos rejeitam padding e espaços em branco dentro de um token compacto.

APIs: Buffer.from(s, "base64url") e buf.toString("base64url") no Node.js; base64.urlsafe_b64encode no Python (ele mantém o padding, que você precisa remover); base64.RawURLEncoding no Go; Base64.getUrlEncoder().withoutPadding() no Java.

Padrões e referências

Todos os termos