Přeskočit na obsah

Basic access authentication

Z Wikipedie, otevřené encyklopedie
(rozdíl) ← Starší revize | zobrazit aktuální verzi (rozdíl) | Novější revize → (rozdíl)

Základní ověření přístupu (anglicky basic access authentication) je metoda v rámci protokolu HTTP, která umožňuje webovému prohlížeči (nebo jinému klientskému programu) poslat v rámci požadavku webovému serveru také autentizační informace — jméno a heslo.

Před zasláním je ze jména a hesla nejdříve udělán jediný řetězec tak, že se za jméno připojí dvojtečka a za ni heslo. Výsledný řetězec je poté zakódován metodou Base64 a posléze odeslán.

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:

import base64
print base64.decodestring("QWxhZGRpbjpvcGVuIHNlc2FtZQ==")

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[1](Hypertext Transfer Protocol – HTTP/1.0) a jeho další analýza a rozšíření jsou popsána v RFC 2616[2] (Hypertext Transfer Protocol -- HTTP/1.1) a RFC 2617[3] (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 „odlogovat se“. Prohlížeč si přihlášení proto pamatuje až do okamžiku, kdy je vypnut.

Příklad komunikace

Typicky probíhá komunikace následovně:


  • 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
  • Server odpoví 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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<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>
  • 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==
  • 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

... Obsah stránky ...

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

Reference