> base64url | jwt | url-säker <

// Base64url - Base64-variant utan padding som är säker för webbadresser och filnamn

[URL-SAFE]

URL-kompatibel

Inga speciella URL-tecken – säkert för query-parametrar och sökvägar.

[JWT]

JWT-standard

Används i JSON Web Tokens och OAuth 2.0-specifikationer.

[NO-PADDING]

Valfri padding

Padding-tecken (=) kan hoppas över för renare webbadresser.

>> teknisk information

Hur Base64url fungerar:

Base64url är en variant av Base64 som ersätter "+" med "-" och "/" med "_", vilket gör resultatet säkert för webbadresser och filnamn. Padding-tecknet "=" utelämnas ofta eftersom det kan skapa problem i webbadresser.

Jämförelse:

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

Varför använda Base64url:

  • >JWT-token
  • >OAuth 2.0-flöden
  • >Query-parametrar i URL
  • >Kodning av filnamn
  • >Webb-API-signaturer

>> vanliga frågor

Vad är Base64url?

Base64url är en variant av Base64-kodning som är säker för webbadresser och filnamn. Den ersätter "+" med "-", "/" med "_" och kan ta bort padding-tecknen "=" för att undvika problem med URL-kodning.

Varför inte använda vanlig Base64 i webbadresser?

Vanlig Base64 använder tecknen "+", "/" och "=", som har speciell betydelse i webbadresser. "+" kan tolkas som mellanslag, "/" är en sökvägsseparator och "=" används för parametrar, vilket kan skapa problem vid tolkning.

Var används Base64url?

Base64url används i stor utsträckning i JWT (JSON Web Tokens), OAuth 2.0-autentiseringskoder, SAML-assertioner och alla API:er som behöver skicka binära data i webbadresser eller HTTP-huvuden.

Är padding obligatorisk i Base64url?

Nej, padding är valfri i Base64url. Många implementationer utelämnar den eftersom längden kan beräknas. JWT-specifikationen kräver särskilt att ingen padding används för att göra webbadresserna kortare.

// Skillnader mot Base64

Base64Base64url
+-
/_
=—

// Base64url i kod

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)

>> Fler frågor

F: Varför utelämnar Base64url “=”?

S: Utfyllnaden kan härledas ur längden och “=” har särskild betydelse i URL:er och frågesträngar. Därför skriver JWT (RFC 7515) och många API:er Base64url utan utfyllnad.

F: Hur återställer jag utfyllnaden före avkodning?

S: Titta på längden modulo 4: rest 2 → lägg till ==, rest 3 → lägg till =, rest 0 → inget. Rest 1 är aldrig giltigt. Byt också - mot + och _ mot /.

F: Är Base64url kryptering?

S: Nej, det är bara en kodning – vem som helst kan vända den. Innehållet i en JWT-payload är läsbart, så lägg inga hemligheter där.

Andra språk