Sobes.tech
Middle

Co je to OAuth ověřování a jak funguje?

sobes.tech AI

Odpověď od AI

OAuth je otevřený standard autorizace. Umožňuje uživateli poskytnout třetí straně omezený přístup ke svým údajům uloženým na jiném serveru (resource server) bez nutnosti předávat své přihlašovací údaje (uživatelské jméno/heslo) této aplikaci.

Práce OAuth je založena na vydávání "přístupových tokenů" místo přihlašovacích údajů. Typický průběh vypadá takto:

  1. Žádost o autorizaci: Uživatel se pokouší provést akci v třetí straně aplikaci, která vyžaduje přístup k datům z resource serveru. Aplikace iniciuje žádost o autorizaci k autorizačnímu serveru resource serveru.
  2. Přesměrování na autorizační server: Uživatel je přesměrován na stránku autorizačního serveru.
  3. Ověření uživatele: Uživatel se autentizuje na autorizačním serveru (pokud již není autentizován).
  4. Souhlas uživatele (Consent): Autorizační server žádá uživatele o svolení k poskytnutí třetí straně určité úrovně přístupu k jeho datům (scopes). Uživatel buď souhlasí, nebo odmítne žádost.
  5. Vydání autorizačního kódu: Pokud uživatel souhlasí, autorizační server přesměruje uživatele zpět do třetí strany aplikace a předá "autorizační kód".
  6. Výměna autorizačního kódu za přístupový token: Třetí strana aplikace, která obdržela kód, přímo požádá autorizační server o výměnu tohoto kódu za "přístupový token" (Access Token) a případně "obnovovací token" (Refresh Token). Tento požadavek probíhá mezi servery, bez zásahu prohlížeče uživatele, což zvyšuje bezpečnost.
  7. Přístup k datům: Třetí strana aplikace používá získaný přístupový token k provádění požadavků na resource server jménem uživatele. Při každém takovém požadavku je token zaslán v hlavičce.
  8. Validace tokenu: Resource server validuje přístupový token a pokud je platný a odpovídá požadovaným scope, poskytne přístup k datům.

OAuth má několik toků (flows), vhodných pro různé scénáře, například:

  • Authorization Code Flow: Nejbezpečnější, používá se pro webové aplikace s backendem.
  • Implicit Flow: Zastaralý, používal se pro webové aplikace bez backendu.
  • Client Credentials Flow: Pro aplikace, které získávají přístup ke svým vlastním zdrojům, nikoli uživatelským.
  • Resource Owner Password Credentials Flow: Nedoporučuje se, předává uživatelské přihlašovací údaje aplikaci.

(Příklad Authorization Code Flow)

V C# se pro implementaci OAuth ve webových aplikacích často používají knihovny, jako například ASP.NET Core Identity s různými poskytovateli (Google, Facebook atd.), nebo knihovny IdentityServer pro vytvoření vlastního autorizačního serveru.