Generator for Basic Auth-header

Skriv inn brukernavn og passord for å få headeren Authorization: Basic og en curl-kommando som er klar til bruk, eller lim inn en eksisterende header for å se påloggingsinformasjonen i den.

Authorization-header
curl-kommando

Dekode en eksisterende header

Kjører helt i nettleseren din. Ingenting lastes opp.

Slik bruker du verktøyet

  1. Skriv inn brukernavnet i Brukernavn og passordet i Passord.
  2. Kopier den genererte Authorization-headeren inn i klienten din, eller bruk curl-kommandoen for å teste forespørselen.
  3. Vil du lese en eksisterende header, limer du den inn under Dekode en eksisterende header, så vises brukernavnet og passordet.

Slik fungerer HTTP Basic-autentisering

Basic-autentisering er definert i RFC 7617. Når en ressurs er beskyttet, svarer serveren med 401 Unauthorized og en WWW-Authenticate: Basic realm="..."-header. Klienten setter deretter sammen brukernavnet og passordet med et kolon, koder resultatet som Base64 og sender det med hver forespørsel:

Authorization: Basic base64(username ":" password)

# Eksempel fra RFC 7617: bruker "Aladdin", passord "open sesame"
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Nettlesere håndterer denne utvekslingen selv og viser en påloggingsdialog, mens skript og API-klienter vanligvis sender headeren med den første forespørselen uten å vente på utfordringen fra serveren. Siden kolonet skiller de to verdiene, kan ikke brukernavnet inneholde et kolon, men passordet kan. En server kan legge til charset="UTF-8" i utfordringen for å varsle om at påloggingsinformasjon med ikke-ASCII-tegn forventes i UTF-8.

Base64 er ikke kryptering

Headeren ser kryptisk ut, men alle som ser den, kan finne passordet på få sekunder, med dekoderen på denne siden eller en hvilken som helst Base64-dekoder. Basic-autentisering er bare akseptabelt over HTTPS, der TLS krypterer headeren under overføringen. Husk også at:

  • påloggingsinformasjonen sendes med hver forespørsel, så én enkelt forespørsel over vanlig HTTP avslører den;
  • proxyer, lastbalanserere og feilsøkingsverktøy kan logge Authorization-headeren hvis de ikke er konfigurert til å la være;
  • nettlesere husker innskrevet påloggingsinformasjon til de lukkes, og det finnes ingen standard måte å logge ut på.

For offentlige API-er passer tilbakekallbare API-tokener eller OAuth bedre. Basic-autentisering er fortsatt et fornuftig valg for interne verktøy, testmiljøer og kall mellom servere over TLS.

Sende headeren fra kode

# curl bygger headeren selv
curl -u 'user:password' https://api.example.com/

// JavaScript fetch (btoa håndterer bare Latin-1-tegn)
fetch(url, { headers: { Authorization: 'Basic ' + btoa('user:password') } })

# Python requests
requests.get(url, auth=('user', 'password'))

Unngå å bygge påloggingsinformasjon inn i URL-en, som i https://user:password@host/. RFC 3986 fraråder den formen, den havner i nettleserhistorikken og serverlogger, og moderne nettlesere begrenser den.

Ofte stilte spørsmål

Hvordan dekoder jeg en Basic Auth-header?

Lim inn headeren under Dekode en eksisterende header, så vises brukernavnet og passordet med en gang. Enhver Base64-dekoder gir det samme resultatet, og det er nettopp derfor headeren bare skal sendes over HTTPS.

Kan passordet inneholde et kolon?

Ja. Serveren deler den dekodede verdien ved det første kolonet, så alt etter det hører til passordet. Brukernavnet kan derimot ikke inneholde kolon.

Er HTTP Basic-autentisering sikker?

Over HTTPS og med et sterkt, unikt passord beskyttes påloggingsinformasjonen under overføringen, men den sendes med hver forespørsel og kan ikke utløpe slik et token kan. Bruk den aldri over vanlig HTTP.

Hvorfor mislykkes påloggingen med passord som har aksenter eller ikke-latinske tegn?
Klienten og serveren kan være uenige om tegnkodingen. RFC 7617 lar serveren angi charset="UTF-8". Uten den kan eldre servere anta ISO-8859-1 og sammenligne andre byte.
Sendes passordet mitt noe sted?

Nei. Headeren bygges av JavaScript i nettleseren din, og ingenting overføres. Bruk likevel testbrukere når du deler en generert curl-kommando med andre.