kodér | dekodér | komprimér

> base64url | jwt | url-sikker <

// Base64url - URL- og filnavnesikker Base64-variant uden padding

[URL-SAFE]

URL-kompatibel

Ingen særlige URL-tegn – sikkert til query-parametre og stier.

[JWT]

JWT-standard

Bruges i JSON Web Tokens og OAuth 2.0-specifikationer.

[NO-PADDING]

Valgfri padding

Padding-tegn (=) kan udelades for renere URL'er.

>> teknisk info

Hvordan Base64url fungerer:

Base64url er en variant af Base64, der erstatter "+" med "-" og "/" med "_", så resultatet er sikkert til URL'er og filnavne. Padding-tegnet "=" udelades ofte, da det kan give problemer i URL'er.

Sammenligning:

Base64: SGVsbG8+Pw== Base64url: SGVsbG8-Pw

Hvorfor bruge Base64url:

  • >JWT-tokens
  • >OAuth 2.0-flows
  • >URL-queryparametre
  • >Filnavnskodning
  • >Web-API-signaturer

>> ofte stillede spørgsmål

Hvad er Base64url?

Base64url er en URL- og filnavnesikker variant af Base64-kodning. Den erstatter "+" med "-", "/" med "_" og kan valgfrit fjerne padding-tegnet "=" for at undgå problemer med URL-kodning.

Hvorfor ikke bruge almindelig Base64 i URL'er?

Almindelig Base64 bruger tegnene "+", "/" og "=", som har særlige betydninger i URL'er. "+" kan tolkes som et mellemrum, "/" er en sti- separator, og "=" bruges til parametre, hvilket kan give parse-fejl.

Hvor bruges Base64url?

Base64url bruges bredt i JWT'er (JSON Web Tokens), OAuth 2.0-autorisationskoder, SAML-assertions og enhver API, der skal sende binære data i URL'er eller HTTP-headere.

Er padding påkrævet i Base64url?

Nej, padding er valgfri i Base64url. Mange implementationer udelader padding, da længden kan beregnes. JWT'er kræver specifikt ingen padding for at gøre URL'er mere kompakte.

// Forskelle fra Base64

Base64Base64url
+-
/_
=—

// Base64url i kode

JavaScript   btoa(s).replace(/\+/g,'-').replace(/\//g,'_').replace(/=+$/,'')
Node.js      Buffer.from(s).toString('base64url')
Python       base64.urlsafe_b64encode(b).rstrip(b'=')
Go           base64.RawURLEncoding.EncodeToString(b)
Padding      s + '=' * (-len(s) % 4)

>> Flere spørgsmål

S: Hvorfor udelader Base64url “=”?

S: Udfyldningen kan udledes af længden, og “=” har særlig betydning i URL’er og forespørgselsstrenge. Derfor skriver JWT (RFC 7515) og mange API’er Base64url uden udfyldning.

S: Hvordan gendanner jeg udfyldningen før afkodning?

S: Se på længden modulo 4: rest 2 → tilføj ==, rest 3 → tilføj =, rest 0 → intet. Rest 1 er aldrig gyldigt. Udskift også - med + og _ med /.

S: Er Base64url kryptering?

S: Nej, det er kun en kodning – alle kan vende den om. Indholdet af en JWT-payload er læseligt, så læg ikke hemmeligheder deri.

Andre sprog