Basic access authentication

Basic access authentication (v překladu jednoduché ověření přístupu) je v informatice označení pro jednoduchou autentizaci při přístupu na webové stránky. Webový server vyzve pomocí protokolu HTTP přistupujícího klienta (typicky webový prohlížeč), aby poslal v rámci požadavku na stránku také autentizační informace (tj. jméno a heslo).

Popis

Jméno a heslo je zasláno jako jeden textový řetězec. Za jméno je připojena dvojtečka a za ni heslo. Výsledný řetězec je poté zakódován metodou Base64 a odeslán v rámci HTTP požadavku.

Přestože zakódování znesnadňuje čtení autentizačních informací člověkem, není jeho smyslem tyto informace kryptograficky zabezpečit. Dekódování je možné provést velmi rychle, například v Perlu:

use MIME::Base64;
$encoded = 'QWxhZGRpbjpvcGVuIHNlc2FtZQ==';
$decoded = decode_base64 $encoded;
print "$decoded\n"; # Aladdin:open sesame

v Pythonu:

print "QWxhZGRpbjpvcGVuIHNlc2FtZQ==".decode('base64')

nebo pomocí openssl:

$ echo -n "Aladdin:open sesame" | openssl enc -base64
QWxhZGRpbjpvcGVuIHNlc2FtZQ==
$ echo "QWxhZGRpbjpvcGVuIHNlc2FtZQ==" | openssl enc -base64 -d
Aladdin:open sesame

Smyslem kódování je umožnit přenos jmen a hesel obsahujících znaky nepatřící do množiny povolených znaků pro HTTP. Původní návrh základního ověření přístupu byl popsán v RFC 1945 (HTTP/1.0) a jeho další analýza a rozšíření jsou popsána v RFC 2616 (HTTP/1.1) a RFC 2617 (HTTP Authentication: Basic and Digest Access Authentication).

Výhody

Výhodou tohoto základní způsobu ověření přístupu je skutečnost, že je podporují všechny rozšířené webové prohlížeče (ty, které mají podíl alespoň 0,2%).

Nevýhody

Metoda je sice snadná na implementaci, ale počítá s tím, že spojení mezi klientem a serverem je bezpečné. Jméno a heslo je přenášeno nešifrovaně, tedy je pro útočníka snadné je odposlechnout. Další nevýhodou je skutečnost, že metoda neumožňuje serveru, aby klientovi nařídil se odhlásit. Prohlížeč si přihlášení proto pamatuje až do okamžiku, kdy je vypnut.

Příklad komunikace

Typicky probíhá komunikace následovně:

1) Klient požádá o stránku, která vyžaduje autentizaci, ale neposkytne jméno a heslo (uživatel například netuší, že bude požadováno, a zkrátka zadá prohlížeči adresu, nebo klikne na odkaz)

GET /private/index.html HTTP/1.0
Host: localhost

2) Server odpoví HTTP kódem 401 a zároveň poskytne informaci, k jaké oblasti přístupu se klient pokusil přistoupit

HTTP/1.0 401 Authorization Required
Server: HTTPd/1.0
Date: Sat, 27 Nov 2004 10:18:15 GMT
WWW-Authenticate: Basic realm="Secure Area"
Content-Type: text/html
Content-Length: 311

<HTML>
 <HEAD>
   <TITLE>Error</TITLE>
   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
 </HEAD>
   <BODY><H1>401 Unauthorised.</H1></BODY>
 </HTML>

3) Klient zobrazí informace o oblasti přístupu svému uživateli a zeptá se jej na jméno a heslo. Uživatel zadá jméno a heslo a prohlížeč znovu pošle svůj původní požadavek, nyní ovšem doplněn o autentizační údaje.

GET /private/index.html HTTP/1.0
Host: localhost
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

4) Je-li jméno a heslo správně, pak server pošle požadovanou stránku.

HTTP/1.0 200 OK
Server: HTTPd/1.0
Date: Sat, 27 Nov 2004 10:19:07 GMT
Content-Type: text/html
Content-Length: 10476

...vlastní obsah stránky...

Reference

V tomto článku byl použit překlad textu z článku Basic access authentication na anglické Wikipedii.