Weboldalak hitelesítési protokolljai
A hitelesítési rendszerek számos weboldal gerincét képezik. Lehetővé teszi a felhasználók számára a webhelyre való bejelentkezést és az adatok megőrzését a látogatások között. Alapvető fontosságú a robusztus felhasználói élmény biztosításában, amely jutalmazza a felhasználókat az adataik megadásáért. A hitelesítések gyakran hozzáférést biztosítanak személyes magánadatokhoz, amelyek nyilvánosságra kerülése kárt okozhat a felhasználónak. Ezek megelőzésére olyan hitelesítési protokollokat hoztak létre, amelyek biztosítják a kérések biztonságát, ugyanakkor lehetővé teszik, hogy a felhasználók továbbra is biztonságosan bejelentkezhessenek a rendszerébe bármilyen környezetből.
Basic SSL Auth
A basic auth a webes hitelesítés legegyszerűbb formája. A szabványos HTTP fejléceket használja a bonyolultabb, sütikre, munkamenet-azonosítókra és bejelentkezési oldalakra támaszkodó megoldások helyett. Az alap auth rendszerbe nagyon kevés biztonság van beépítve. A hitelesítő adatok csak Base64 kódolással kerülnek továbbításra, és nincsenek titkosítva vagy tördelve. A rendszerben rejlő bizonytalanságok miatt ezek a kérések leggyakrabban HTTPS-en keresztül történnek.
A felhatalmazási információkat a következő formátumban kell összeállítani és a fejlécbe foglalni:
Formátum:
<!--Authorization: Basic -->
Az alapvető hitelesítési protokoll részletes leírása itt található: http://www.w3.org/Protocols/HTTP/1.0/spec.html#AA
Digest Auth
Digest Auth az alap SSL-hitelesítéshez hasonlóan működik, azzal a különbséggel, hogy a jelszó titkosítása egyirányú hash segítségével történik. MD5 kriptográfiai kivonatolást használ egy nonce (egy szerver által generált érték, amely megakadályozza a visszajátszási támadásokat) segítségével.
A Digest Auth kérés tipikus folyamata a következő :
- A felhasználó egy olyan oldalra navigál, amely a felhasználó hitelesítését igényli.
- A szerver 401 üzenettel válaszol, amely azt jelzi, hogy a felhasználó jelenleg nem jogosult a tartalom elérésére. A válaszban tartalmazza a nonce-t is, amelyet az engedélyezés során használnak a visszajátszási támadások megelőzésére,
- Az oldal ezután megjelenít egy hitelesítési felületet a szükséges adatok ( felhasználónév és jelszó )
- A megadott adatokat a szerver a kérelemben szereplő hitelesítési fejléccel továbbítja, amely egy válaszkódot tartalmaz.
- A szerver ezután ellenőrzi a megadott hitelesítő adatokat, és elfogadja a hitelesítést, vagy 401 üzenetet küld vissza, ha a hitelesítő adatok helytelenek, ami miatt a felhasználónak újra meg kell jelennie a hitelesítési felületen.
A Digest Auth protokoll teljes részleteit itt találja: https://www.ietf.org/rfc/rfc2617.txt
OAuth 1.0
Az OAuth 1.0 protokoll a szerver és a webhely közötti megosztott titokra támaszkodik. Ez a megosztott titok egy aláírás létrehozására szolgál, amelyet a kérés tartalmaz. A generált aláírást arra használják, hogy a szerveroldalon ellenőrizzék a hitelesítési kérelem érvényességét. A felhasználó engedélyezésének folyamata általában három lépésben történik( 3-lábú OAuth):
- A webhely megkapja a kérvénytokent.
- A felhasználó engedélyezi a kérvénytokent.
- A webhely kicseréli a kérvénytokent hozzáférési tokenre.
A háromlépcsős OAuth-kérelem teljesítésének folyamata általában a következőképpen zajlik:
-
A webhely egy aláírt kérést küld a Request tokenért. Ennek a kérésnek a következő paramétereket kell tartalmaznia:
- oauth_consumer_key
- oauth_timestamp
- oauth_nonce
- oauth_signature
- oauth_signature_method
- oauth_version
- oauth_callback
.
Ezt a kérést a szerver validálja, és ha validált, akkor a következő formátumban adja vissza a kérés tokenjét:
- oauth_token
- oauth_token_secret
- és a szerver által visszaküldött további paramétereket.
- A kérés tokenjének lekérdezése után a következő lépés az, hogy felszólítsa a felhasználót a bejelentkezési adatok megadására. Ezeket az oauth_token kérési tokennel aláírássá formázza, majd a kéréssel együtt visszaküldi a kiszolgálónak érvényesítésre. A kérés sikeres érvényesítését követően a szerver a következőket küldi vissza:
- oauth_token
- oauth_verifier
Ezeket a következő lépésben egy hozzáférési token lekérdezésére használjuk.
- Az utolsó lépés a 2. lépésben lekérdezett adatok kicserélése egy hozzáférési tokenre , amely a szerver erőforrásainak elérésére szolgál. A kérési token cseréje egy hozzáférési tokenre, a következő aláírt kérelemmel
- oauth_token -a 2. lépésből visszakapott
- oauth_consumer_key
- oauth_nonce
- oauth_signature
- oauth_signature_method
- oauth_version
- oauth_verifier – kérést küldhet a szervernek.a 2. lépésből visszakapod
Ez egy hozzáférési tokent ad vissza, amelyet a titkoddal együtt használhatsz a szervertől való információkéréshez.
Az OAuth 1.0 protokoll teljes részleteit itt találja: https://tools.ietf.org/html/rfc5849
OAuth 2.0
Ez hasonló az OAuth 1.0 protokollhoz, egy ügyfél azonosítóra és titokra támaszkodik a kérés formázásához, de leegyszerűsíti az OAuth 1.0 rendszerben rejlő bonyolult aláírási folyamat nagy részét. A felhasználó engedélyezésének folyamata a háromlábú OAuth 2.0 protokoll a következő:
-
A felhasználót az engedélyezés céljából a szolgáltatáshoz irányítják, az engedélyezési URL-ben szereplő következő adatokkal:
- client_id
- redirect_uri
- response_type
- scope
-
A felhasználó ezután hitelesíti magát a szolgáltatásnál, és hozzáférést biztosít az alkalmazásnak az adataihoz. Sikeres hitelesítés után a felhasználó visszairányításra kerül a redirect_uri-ra a következő paraméterekkel:
- code
- state
-
A 2. lépésben visszaküldött kódot az alkalmazás a hozzáférési token kérésére használja. Ennek a kérésnek tartalmaznia kell:
- client_id
- client_secret
- code
- redirect_uri
- grant_type – Ennek “authorization_code”
A szerver ellenőrzi ezeket az adatokat, majd egy lejárati idővel ellátott hozzáférési tokent küld vissza, ha azok érvényesek. Ezeket általában a következő formátumban küldi vissza:
- access_token
- expires_in
- refresh_token
Az OAuth 2.0 protokoll teljes részleteit itt találja: http://oauth.net/2/
A hitelesítési protokollok lehetővé teszik az adatok különböző biztonsági szintekkel történő védelmét. Az elérendő adatoktól és az Ön által kívánt biztonsági szinttől függően a fenti protokollok valamelyikének bevezetésével biztos lehet abban, hogy adatai biztonságban vannak, és csak olyan felhasználók férnek hozzá, akiknek engedélyezve van a rendszerhez való hozzáférésük.