Sobes.tech
Middle

Mi az OAuth-hitelesítés és hogyan működik?

sobes.tech MI

Válasz az MI-től

Az OAuth egy nyílt hitelesítési szabvány. Lehetővé teszi a felhasználó számára, hogy harmadik fél alkalmazásának korlátozott hozzáférést biztosítson adataihoz, amelyek egy másik szolgáltatónál (erőforrás szerveren) vannak tárolva, anélkül, hogy át kellene adnia a hitelesítő adatait (felhasználónév/jelszó) ennek az alkalmazásnak.

Az OAuth működése az "hozzáférési tokenek" kiadásán alapul a hitelesítő adatok helyett. A tipikus folyamat a következőképpen néz ki:

  1. Hitelesítési kérés: A felhasználó megpróbál egy olyan harmadik fél alkalmazásban műveletet végrehajtani, amely hozzáférést igényel az erőforrás szerver adataihoz. Az alkalmazás hitelesítési kérést indít az erőforrás szerver hitelesítési szerveréhez.
  2. Átirányítás a hitelesítési szerverre: A felhasználót átirányítják a hitelesítési szerver oldalára.
  3. Felhasználói azonosítás: A felhasználó azonosítja magát a hitelesítési szerveren (ha még nem tette meg).
  4. Felhasználói hozzájárulás (Consent): A hitelesítési szerver kér egy engedélyt a felhasználótól, hogy bizonyos szintű hozzáférést biztosítson a harmadik fél alkalmazásának az adataihoz (scope-k). A felhasználó elfogadja vagy elutasítja a kérést.
  5. Hozzáférési kód kiadása: Ha a felhasználó elfogadja, a hitelesítési szerver visszairányítja a felhasználót a harmadik fél alkalmazásához, és átad egy "hozzáférési kódot".
  6. A hozzáférési kód cseréje hozzáférési tokenre: A harmadik fél alkalmazás, amely megkapta a hozzáférési kódot, közvetlenül a hitelesítési szerverhez fordul, hogy ezt a kódot hozzáférési tokenre (Access Token) és opcionálisan frissítési tokenre (Refresh Token) cserélje. Ez a kérés szerverek között történik, a felhasználó böngészője nélkül, növelve a biztonságot.
  7. Hozzáférés az adatokhoz: A harmadik fél alkalmazás a kapott hozzáférési tokent használja az erőforrás szerverhez való kérésekhez a felhasználó nevében. Minden ilyen kérésnél a tokent a fejlécben küldi.
  8. Token validálása: Az erőforrás szerver érvényesíti a hozzáférési tokent, és ha az érvényes és megfelel a kért scope-knak, hozzáférést biztosít az adatokhoz.

Az OAuth több folyamatot (flows) kínál, amelyek különböző forgatókönyvekhez alkalmasak, például:

  • Authorization Code Flow: A legbiztonságosabb, szerveroldali webalkalmazásokhoz használják.
  • Implicit Flow: Elavult, webalkalmazásokhoz, szerver nélkül.
  • Client Credentials Flow: Olyan alkalmazásokhoz, amelyek saját erőforrásaikhoz férnek hozzá, nem felhasználói adatokhoz.
  • Resource Owner Password Credentials Flow: Nem ajánlott, felhasználói hitelesítő adatok átadása az alkalmazásnak.

(Példa az Authorization Code Flow-ra)

C#-ban az OAuth megvalósításához webalkalmazásokban gyakran használnak könyvtárakat, mint például az ASP.NET Core Identity különböző szolgáltatókkal (Google, Facebook stb.), vagy az IdentityServer könyvtárakat saját hitelesítési szerver létrehozásához.