Sådan bruger du værktøjet
- Indtast brugernavn og adgangskode.
- Kopiér den genererede Authorization-header til din klient, eller brug curl-kommandoen til at teste anmodningen.
- Vil du læse en eksisterende header, så indsæt den under Afkod en eksisterende header, hvorefter brugernavn og adgangskode vises.
Sådan fungerer HTTP Basic-godkendelse
Basic-godkendelse er defineret i RFC 7617. Når en ressource er beskyttet, svarer serveren med 401 Unauthorized og headeren WWW-Authenticate: Basic realm="...". Klienten sætter derefter brugernavn og adgangskode sammen med et kolon, koder resultatet som Base64 og sender det med hver anmodning:
Authorization: Basic base64(username ":" password)
# Eksempel fra RFC 7617: bruger "Aladdin", adgangskode "open sesame"
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Browsere klarer selv denne udveksling og viser en logindialog, mens scripts og API-klienter som regel sender headeren med den første anmodning uden at vente på udfordringen fra serveren. Da kolonet adskiller de to værdier, må brugernavnet ikke indeholde et kolon, men det må adgangskoden gerne. En server kan tilføje charset="UTF-8" til sin udfordring for at angive, at loginoplysninger med ikke-ASCII-tegn forventes i UTF-8.
Base64 er ikke kryptering
Headeren ser ulæselig ud, men alle, der ser den, kan gendanne adgangskoden på få sekunder med dekoderen på denne side eller en hvilken som helst Base64-dekoder. Basic-godkendelse er kun acceptabel over HTTPS, hvor TLS krypterer headeren under overførslen. Husk også, at:
- loginoplysningerne sendes med hver anmodning, så en enkelt almindelig HTTP-anmodning afslører dem;
- proxyer, load balancere og fejlsøgningsværktøjer kan logge headeren
Authorization, medmindre de er sat op til at lade være; - browsere husker indtastede loginoplysninger, indtil de lukkes, og der findes ingen standardmåde at logge ud på.
Til offentlige API'er er API-tokens, der kan tilbagekaldes, eller OAuth et bedre valg. Basic-godkendelse er stadig et fornuftigt valg til interne værktøjer, testmiljøer og kald mellem servere over TLS.
Send headeren fra kode
# curl bygger selv headeren
curl -u 'user:password' https://api.example.com/
// JavaScript fetch (btoa håndterer kun Latin-1-tegn)
fetch(url, { headers: { Authorization: 'Basic ' + btoa('user:password') } })
# Python requests
requests.get(url, auth=('user', 'password'))
Undgå at indlejre loginoplysninger i URL'en, som i https://user:password@host/. RFC 3986 frarøder den form, den ender i browserhistorikken og serverlogfiler, og moderne browsere begrænser den.
Ofte stillede spørgsmål
Hvordan afkoder jeg en Basic Auth-header?
Indsæt headeren under Afkod en eksisterende header, så vises brugernavn og adgangskode med det samme. Enhver Base64-dekoder giver det samme resultat, og det er netop derfor, headeren kun må sendes over HTTPS.
Må adgangskoden indeholde et kolon?
Ja. Serveren deler den afkodede værdi ved det første kolon, så alt efter det hører til adgangskoden. Brugernavnet må derimod ikke indeholde et kolon.
Er HTTP Basic-godkendelse sikker?
Over HTTPS med en stærk, unik adgangskode beskytter den loginoplysningerne under overførslen, men de sendes med hver anmodning og kan ikke udløbe som et token. Brug den aldrig over almindelig HTTP.
Hvorfor mislykkes login med adgangskoder, der indeholder æ, ø, å eller ikke-latinske tegn?
charset="UTF-8". Uden det kan ældre servere gå ud fra ISO-8859-1 og sammenligne andre bytes.Bliver min adgangskode sendt nogen steder hen?
Nej. Headeren bygges af JavaScript i din browser, og intet bliver overført. Brug alligevel testloginoplysninger, når du deler en genereret curl-kommando med andre.