A HTTP-hitelesítés vagy a HTTP-hitelesítés (amelyet az RFC 2617 határoz meg ) lehetővé teszi a kiszolgáló számára a HTTP azonosítását, amely megmutatja neki, hogy ismerünk felhasználói nevet és jelszót korlátozott hozzáférésű erőforrásokhoz való hozzáférés érdekében.
Amikor egy HTTP kliens védett erőforrást kér a szervertől, az utóbbi a kéréstől függően különböző módon válaszol:
Az RFC 2617 specifikáció két módszert határoz meg :
Ez a módszer a legegyszerűbb, ugyanakkor a legkevésbé biztonságos, mert továbbítja a 64 bázisban kódolt jelszót, amelyet könnyen dekódolhatunk. Csak titkosított kapcsolattal ( HTTPS protokoll ) ajánlott .
A kiszolgáló, amely nem kap megfelelő azonosító fejlécet, a következő HTTP fejlécet küldi:
WWW-Authenticate: Basic realm="WallyWorld"A szerver jelzi a szükséges módszert (Basic), majd a paramétereket. Az "Alap" módszerhez csak a "tartomány" paraméterre van szükség, amely azonosítja a védelmi tartományt.
Ezután a HTTP kliens a HTTP „Engedélyezés” fejléc megadásával megpróbálhatja újra a kérést. Ennek tartalmaznia kell az alkalmazott módszert (Basic), amelyet a felhasználó nevének és a jelszónak a Base64-ben való ábrázolása követ, amelyet a „:” (kettőspont) karakter választ el.
Például az "Aladdin" felhasználó "nyitott szezám" jelszóval történő hitelesítéséhez az ügyfél a következőket küldi:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==QWxhZGRpbjpvcGVuIHNlc2FtZQ==a szöveg Base64 reprezentációja Aladdin:open sesame.
Ez a módszer nem továbbítja a jelszót egyértelműen, de megköveteli, hogy azt egyértelműen tárolja (vagy SHA1 kivonatát, amely elegendő önmagának azonosításához, ezért jelszónak tekinthető). Még ha ez a módszer biztonságosabb is, mint az "Basic" módszer, mégis érzékeny a támadásokra (kommunikációs lehallgatás stb.), És még érzékenyebb bizonyos támadásokra (jelszófájlok lopása).
A „Digest” módszer összetettebb és több paramétert használ.
Azonosítási kérelemA szerver kérelmet küldhet a műfaj azonosítására:
WWW-Authenticate: Digest realm="[email protected]", qop="auth, auth-int", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", opaque="5ccc069c403ebaf9f0171e9517f40e41"A paraméterek vesszővel vannak elválasztva, és a következők:
realm Ez a beállítás megjelenik a felhasználó számára, hogy tudják, milyen nevet és jelszót használhatnak. A karakterláncnak tartalmaznia kell legalább a gép nevét és a szükséges felhasználói csoport nevét. domain (opcionális) Az URI-k szóközzel elválasztott listáját tartalmazza, amelyek meghatározzák a védelmi tartományt. Ez a paraméter megadja azon URI-k listáját, amelyekre a kért felhasználó érvényes. nonce A szerver által generált karakterlánc minden 401 válaszhoz. Javasoljuk, hogy ez a karakterlánc Base64 vagy hexadecimális karaktereket használjon . Ezt a paramétert használják az ügyfél válaszának kiszámításához. opaque (opcionális) A kiszolgáló által létrehozott karakterlánc, amelyet az ügyfélnek vissza kell adnia. stale (opcionális) Ennek a paraméternek két lehetséges értéke van: igaz vagy hamis . Ez igaz, ha az előző azonosító kérelmet elutasította csak azért, mert az olyan régi érték a „nonce” paraméter false másként. Az true érték azt jelzi, hogy az ügyfélnek újra kell próbálnia a kérést a kiszolgáló által biztosított új nonce érték felhasználásával, anélkül, hogy újból kéri a felhasználót egy név és jelszó megadásáról. algorithm (nem kötelező) Jelöli a kivonatolási funkciókhoz használandó algoritmust. Az RFC 2617 két értéket határoz meg : MD5 vagy MD5-sess . qop (opcionális) (A védelem minősége) Ez a paraméter jelzi a támogatott védelmi szinteket: auth vagy auth-int . Az ügyfél azonosításaA „Digest” módszerrel azonosító ügyfél két függvényt használ bizonyos paraméterek kiszámításához:
H(data) = MD5(data)A H függvény az MD5 hash függvény eredményét adja vissza karakterlánc formájában (hexadecimális formátum, kisbetűvel) . Használhat másik hash algoritmust is ( például SHA ). Az alkalmazott algoritmust az „algoritmus” paraméter határozza meg.
KD(secret, data) = H(secret:data)A KD függvény a H függvényt hívja argumentumként a két paraméter összefűzésének titkos és kettősponttal elválasztott adatoknak .
Az ügyfél ezért elküldi az „Engedélyezés” fejlécet, amely tartalmazza a „Digest” módszer nevét és a paramétereket:
username Felhasználónév. realm Ugyanaz az érték, mint a szerver válasza. nonce Ugyanaz az érték, mint a szerver válasza. algorithm Ugyanaz az érték, mint a szerver válasza. opaque Ugyanaz az érték, mint a szerver válasza. uri A kért védett erőforrás URI-je (itt lemásoljuk, mert egyes proxyk módosíthatják az eredeti URI-t). response Ez a paraméter 32 hexadecimális számjegyet tartalmaz, amely az ügyfél által kiszámított értéket képviseli, igazolva, hogy tudja a jelszót. qop (opcionális) (A védelem minősége) Ez a paraméter az alkalmazott védelem szintjét jelzi. Ennek meg kell egyeznie a szerver által visszaadott értékek egyikével. cnonce (ha qop van) Az ügyfél által generált karakterlánc. nc (ha qop van jelen) (Nonce Count) 8 hexadecimális számjegy, amely azt jelzi, hogy a kliens a szerver által visszaadott "nonce" paraméter értékét hányszor használta az ügyfél. nc = 00000001 először.A paraméter értékének kiszámítása a responsekövetkezőképpen történik:
Ha meg qopvan adva:
response = KD( H(A1), nonce:nc:cnonce:qop:H(A2) )Ha nem :
response = KD( H(A1), nonce:H(A2) )Ha algorithmaz MD5 vagy nincs megadva:
A1 = username:realm:passwordha algorithmaz MD5-sess :
A1 = H(username:realm:password):nonce:cnonceHa qopvan auth , vagy nincs megadva:
A2 = http-method:uriif qopis auth-int :
A2 = http-method:uri:H(entity)A kiszolgáló újraszámolja az ügyfelekkel megegyező értékeket, hogy ellenőrizze az azonosítás sikeres-e.
Ha a szerver pozitívan reagál (a felhasználó és a jelszó helyes), akkor a válaszban elküldi a "Authentication-Info" HTTP fejlécet, amely információkat tartalmaz a sikeres azonosításról és a következő azonosításról.
Ez a fejléc a paraméterek vesszővel elválasztott listáját is tartalmazza:
nextnonce A védelmi tartomány jövőbeni azonosításaihoz használandó érték. qop ( Választható ) a válaszra alkalmazott védelem minősége . Ennek a paraméternek ugyanannak az értéknek kell lennie, mint az ügyfélkérésben. rspauth ( Ha qop meg van adva ) Ezt a kölcsönös azonosító paramétert használják annak bizonyítására, hogy a szerver ismeri a felhasználót és a jelszavát is. Számítása ugyanúgy, mint a válasz paraméter kivételével értéke A2 ahol http-módszer egy üres karakterlánc. cnonce ( Ha a qop meg van adva ) Ugyanaz az érték, mint az ügyfél kérésében. nc ( Ha a qop meg van adva ) Ugyanaz az érték, mint az ügyfél kérésében.A fent leírt azonosítás a felhasználó és az eredetszerver között történik:
Az is lehetséges, hogy azonosítsa magát a köztes szervereken:
Ehhez a HTTP Proxy-Authenticate és Proxy-Authorization fejléceket használják a WWW-Authenticate és Authorization fejlécek helyett . A 401 HTTP helyett 407 HTTP állapotkódot használunk.
A Proxy-Authentication-Info fejlécnek ugyanaz a szerepe, mint a Authentication-Info fejlécnek .
Előfordulhat, hogy az ügyfélnek azonosítania kell magát a proxy és az origó kiszolgáló számára is, de nem ugyanazon válaszban.
Azonosítás nem használható átlátszó proxy esetén