USERCLIENTIdP (Google)APIconsentcode → tokenscoped access

OAuth 2.0

11 min olvasniWeb technológia

Minden „Bejelentkezés Google-fiókkal” gomb, minden „Csatlakoztassa Twitter-fiókját” link, minden modern szolgáltatások közötti API-integráció az OAuth-on fut. A protokoll a jelszómegosztást tokenek és beleegyezési képernyők áramlásával váltja fel, és a mozgó részek megértése feloldja a támadások és a kényelem egy kategóriáját.

A cikk teljes szövege alább olvasható angol nyelven.

Az

OAuth 2.0 egy engedélyezési keretrendszer, amely lehetővé teszi, hogy egy alkalmazás korlátozott hozzáférést kapjon egy másik alkalmazás erőforrásaihoz a felhasználó nevében – anélkül, hogy látná a felhasználó jelszavát. A klasszikus használati eset: ha a naptáralkalmazásnak be kell olvasnia a Google Naptárat, nem kell megkövetelnie a Google-jelszó megadását. Az OAuth lehetővé teszi, hogy ehelyett hatókörű, visszavonható tokent biztosítson az alkalmazásnak.

A szereplők

Négy szerepkör egy OAuth-folyamatban:

  • Erőforrás-tulajdonos – Ön, az adatokkal rendelkező felhasználó valahol a hozzáférést kérő alkalmazás (pl. harmadik féltől származó naptármegjelenítő)
  • Authorization server – az Önt hitelesítő és tokeneket kibocsátó szolgáltatás (pl. a Google OAuth végpontja)
  • Az Ön adatait tároló API, az Ön adatait tároló API3PLZ22XPLZg. API)

Az engedélyezési kódfolyam

A szabványos szerveroldali folyamat, egyszerűsítve:

  1. Az ügyfélalkalmazásban rákattint a "Csatlakozás a Google Naptárra" elemre.
  2. A kliens átirányítja a böngészőt a Google urri hatókörével, a kliens_ hitelesítési hatókörével_. (calendar.read), állapot (CSRF-token).
  3. Ha még nem jelentkezett be, hitelesíti magát a Google-nál.
  4. A Google megjelenít egy beleegyezési képernyőt: "A CalendarViewer olvasni akarja a naptárát. Engedélyezi?"
  5. Az Engedélyezés gombra kattint. A Google egy egyszeri engedélyezési kóddal visszairányítja az Ön böngészőjét az ügyfél átirányítási_uri címére.
  6. Az ügyfél szerveroldali kódja az engedélyezési kódot (és az ügyféltitkot) hozzáférési tokenre cseréli úgy, hogy közvetlenül hívja a Google token végpontját.
  7. Az ügyfél a hozzáférési jogkivonatot használja a Google Calendar4XP4X hívására4XXPLX az Ön Google nevében4XX. a hozzáférési jogkivonat lejár (általában egy óra), az ügyfél egy frissítési token segítségével szerez egy újat anélkül, hogy zavarná Önt.

A döntő biztonsági tulajdonság: a jelszava soha nem érinti az ügyfélalkalmazást. Az ügyfél egy hatókörű tokent kap, amelyet bármikor visszavonhat a Google-fiók irányítópultján.

OAuth 2.0 vs OAuth 2.1 vs OIDC

  • OAuth 2.02.0 64 szabvány (9 64 szabvány). Azóta számos kiterjesztett RFC-t és bevált gyakorlatot tartalmazó dokumentumot adtunk hozzá.
  • OAuth 2.1 (2026-os tervezetben) egyetlen specifikációba tömöríti a jelenlegi bevált gyakorlatokat – kötelező PKCE, eltávolított Implicit Flow stb.XPLZ61OXXIDZ Csatlakozás2 Az (OIDC) egy identitásréteg az OAuth 2.0 tetején. Az OAuth önmagában átlátszatlan hozzáférési tokent ad; Az OIDC hozzáad egy ID tokent (JWT), amely hitelesíti a felhasználót. A legtöbb "Bejelentkezés ezzel..." gomb OIDC-t használ, nem egyszerű OAuth-ot.

Az engedélytípusok

OAuth 2.0 többféle folyamatot határoz meg a különböző forgatókönyvekhez:

  • A fent leírt folyam3-szerveroldali kódX. PKCE-kiterjesztéssel, amelyet mobil- és SPA-alkalmazások is használnak.
  • IImplicit Flow (elavult) – a hozzáférési tokeneket közvetlenül URL-részleten keresztül bocsátották ki. Sebezhető a token szivárgással szemben; felváltva az engedélyezési kód + PKCE.
  • Resource Owner Password Credentials (ritkán használt) – az ügyfél begyűjti a felhasználó jelszavát és kicseréli egy tokenre. Csak régi áttelepítési forgatókönyvekben használható.
  • Client Credentials – gépek közötti kapcsolatokhoz, ahol nincs felhasználó. A kliens hitelesíti magát, és saját erőforrásaihoz kap egy tokent.
  • Device Code — böngésző nélküli eszközökhöz (TV-k, IoT). A készülék kódot mutat; a felhasználó telefonról vagy laptopról engedélyez.
  • Refresh Token — egy hosszú élettartamú frissítési tokent új hozzáférési tokenre cserél felhasználói beavatkozás nélkül.

PKCE: a must-have bővítmény

XPLZPLZ9Pro kulcsa Code Exchange, ejtsd: "pixie") megakadályozza az engedélyezési kód elfogási támadásait. A kliens véletlenszerű titkot generál, kivonatolja, és elküldi a hash-t az engedélyezési kérelemben. A kód cseréjekor elküldi az eredeti titkot. Az engedélyezési szerver ellenőrzi a hash egyezéseit. A kódot elfogó támadók nem cserélhetik ki azt az eredeti titok nélkül.

PKCE mostantól kötelező minden OAuth-kliens számára – nyilvános (böngésző, mobil) és bizalmas (szerveroldali) egyaránt.

Scopes

A tokeneket meghatározott hatókörrel adják ki – azokkal a műveletekkel, amelyeket végrehajthatnak. A Google tipikus hatókörei így néznek ki: https://www.googleapis.com/auth/calendar.readonly. Az ügyfél hatóköröket kér; a felhasználó látja őket a hozzájárulási képernyőn, és jóváhagyja vagy elutasítja. A legkisebb jogosultság elve: csak a ténylegesen szükséges hatóköröket kérje.

Gyakori OAuth-támadások

  • Open redirect. A rosszul konfigurált redirect_uri paraméter lehetővé teszi, hogy a támadó átirányítsa az engedélyezési kódot a saját kiszolgálójára.XPLZ1S1XXtaZ paraméter1 kihagyás. A felhasználói munkamenethez kötött állapotérték nélkül az OAuth-folyamatok sebezhetők a CSRF-vel szemben – a támadó ráveszi az áldozatot, hogy olyan OAuth-folyamatot hajtson végre, amely összekapcsolja a támadó fiókját az áldozat munkamenetével.
  • Token-kiszivárgás a böngésző történetében. gyengeség).
  • Token-lopás XSS-en keresztül. Ha az ügyfélalkalmazás tokeneket tárol a localStorage-ban, és bármilyen XSS-sebezhetősége van, a támadók ellophatják azokat.
  • A beleegyező képernyő adathalászata. Egy érzékeny támadó regisztrál egy érzékeny ügyfélkört. a felhasználó, aki a hozzájárulási képernyőn az „Engedélyezés” gombra kattint, ellenőrzés nélkül hozzáférést biztosít.

Mi a teendő felhasználóként?

  • Rendszeresen ellenőrizze a csatlakoztatott alkalmazásokat a Google/Apple/Microsoft/Facebook/GitHub-fiók beállításainál. Vonja vissza azokat, amelyeket nem használ.
  • A hozzáférés megadása előtt olvassa el a hozzájárulási képernyő hatóköreit. A „naptár kezelése” eltér a „Naptár megtekintése” kifejezéstől.
  • Legyen szkeptikus az olyan alkalmazásoktól érkező OAuth-kérésekkel szemben, amelyeket nem ismer fel, még akkor is, ha azok egy ismerős munkafolyamat során jelennek meg.

Gyakran ismételt kérdések

Az OAuth ugyanaz, mint a hitelesítés?
Nem. Az OAuth felhatalmazás – engedélyt ad az ügyfélnek az erőforrásokhoz való hozzáféréshez. Az OAuth-ra épülő OpenID Connect hitelesítést ad hozzá. "Jelentkezzen be Google-lal" az OIDC; A „Google Naptár csatlakoztatása” lehet attól függően, hogy az alkalmazásnak tudnia kell-e Önt, vagy csak hozzá kell férnie az Ön adataihoz.
Használjam az OAuth-ot vagy tároljam a jelszavakat?
Használja az OAuth-ot, ahol csak lehetséges. A felhasználói jelszavak tárolása azt jelenti, hogy örököljük a kivonatolásért, a sózásért, a jogsértésekre adott válaszokért, a jelszó-helyreállításért és a 2FA-ért járó felelősséget. A Google/Apple/Microsoft/GitHub OAuth-on keresztüli delegálása mindezt kivonja. A kompromisszum az, hogy a felhasználóknak fiókokra van szükségük ezeknél a szolgáltatóknál.
Miért lehet visszavonni az OAuth-tokeneket, de a jelszavakat nem?
A tokenek egy bejegyzésre hivatkoznak az engedélyezési kiszolgáló adatbázisában. A bejegyzés visszavonása azonnal érvényteleníti a tokent. A jelszavak tudás – elforgathatja a jelszót, és kikényszerítheti az újrahitelesítést, de a régi jelszó mindaddig érvényes marad, amíg ezt meg nem teszi.
Mi a különbség az OAuth 2.0 és az OAuth 1.0 között?
Az OAuth 1.0 (2007) minden kérésnél kriptográfiai aláírásokat használt. Az OAuth 2.0 (2012) a TLS-re támaszkodik a szállítás biztonsága érdekében, és hordozójogkivonatokat használ. Az OAuth 2.0 megvalósítása egyszerűbb, és szinte minden modern API-ban megtalálható; Az OAuth 1.0 lényegében elavult.
Veszélyesek az OAuth-tokenek, ha kiszivárognak?
Igen – a jogkivonat birtokában bárki rendelkezik hozzáféréssel, amíg le nem jár vagy visszavonják. Enyhítések: rövid hozzáférési jogkivonatok élettartama (jellemzően 1 óra), biztonságosabban tárolt tokenek frissítése, hatókör minimalizálása, naplózás. A hozzáférési jogkivonatokat érvényességi idejük alatt ugyanolyan óvatosan kezelje, mint a jelszavakat.
Az OAuth 2.0 magyarázata: Hogyan működik a „Bejelentkezés Google-lal” valójában