> base64url | jwt | url-sikker <

// Base64url - Base64-variant uten padding som er trygg for URL-er og filnavn

[URL-SAFE]

URL-kompatibel

Ingen spesielle URL-tegn – trygt for spørringsparametere og stier.

[JWT]

JWT-standard

Brukes i JSON Web Tokens og OAuth 2.0-spesifikasjoner.

[NO-PADDING]

Valgfri padding

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

>> teknisk info

Hvordan Base64url fungerer:

Base64url er en variant av Base64 som erstatter "+" med "-" og "/" med "_", slik at resultatet er trygt for URL-er og filnavn. Padding-tegnet "=" utelates ofte fordi det kan gi problemer i URL-er.

Sammenligning:

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

Hvorfor bruke Base64url:

  • >JWT-tokens
  • >OAuth 2.0-flyter
  • >URL-spørringsparametere
  • >Filnavnkoding
  • >Web-API-signaturer

>> ofte stilte spørsmål

Hva er Base64url?

Base64url er en variant av Base64-koding som er trygg for URL-er og filnavn. Den erstatter "+" med "-", "/" med "_" og kan fjerne padding-tegnet "=" for å unngå problemer med URL-koding.

Hvorfor ikke bruke vanlig Base64 i URL-er?

Vanlig Base64 bruker tegnene "+", "/" og "=", som har spesielle betydninger i URL-er. "+" kan tolkes som mellomrom, "/" er en skilletegn for stier, og "=" brukes til parametere, noe som kan gi parse-feil.

Hvor brukes Base64url?

Base64url brukes mye i JWT (JSON Web Tokens), OAuth 2.0-autorisasjonskoder, SAML-assertsjoner og alle API-er som må sende binære data i URL-er eller HTTP-headere.

Er padding påkrevd i Base64url?

Nei, padding er valgfri i Base64url. Mange implementasjoner utelater den fordi lengden kan beregnes. JWT spesifiserer eksplisitt at padding ikke skal brukes for å få renere URL-er.

// Forskjeller 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ørsmål

S: Hvorfor utelater Base64url “=”?

S: Utfyllingen kan utledes av lengden, og “=” har spesiell betydning i URL-er og spørrestrenger. Derfor skriver JWT (RFC 7515) og mange API-er Base64url uten utfylling.

S: Hvordan gjenoppretter jeg utfyllingen før dekoding?

S: Se på lengden modulo 4: rest 2 → legg til ==, rest 3 → legg til =, rest 0 → ingenting. Rest 1 er aldri gyldig. Bytt også - med + og _ med /.

S: Er Base64url kryptering?

S: Nei, det er bare en koding – hvem som helst kan reversere den. Innholdet i en JWT-payload er lesbart, så ikke legg hemmeligheter der.

Andre språk