GraphQL.cz/Fórum/Jak mohu implementovat OAuth 2.0 v GraphQL pro grafickou autentizaci?

Jak mohu implementovat OAuth 2.0 v GraphQL pro grafickou autentizaci?

Zdravím všechny, chtěl bych se zeptat na něco, co mi už delší dobu vrtá hlavou. Pracuji na projektu, který využívá GraphQL jako hlavní API a potřebuji implementovat autentizaci pomocí OAuth 2.0. Mám obavy, že to nebude tak jednoduché, jak se zdá. Zvlášť když si uvědomím, že OAuth se většinou integruje s REST API a ne vždy se jasně uvádí, jak to udělat v kontextu GraphQL. Jakým způsobem bych měl začít? Mám přemýšlet o nějakém middleware, nebo využít nějaké knihovny, které by mohly usnadnit celý proces? Taktéž mě zajímá, jestli je lepší provést autentizaci na úrovni serveru nebo klienta, a co by bylo optimální pro správu tokenů. Měly by se tokeny ukládat do cookie nebo do localStorage, pokud bych chtěl poskytnout příjemnou uživatelskou zkušenost? A co třeba refresh tokeny? Jak je mám zpracovávat? Pokud máte nějaké zkušenosti nebo doporučení k této problematice, budu moc rád za každou radu. Děkuji!

148 slov
1.5 minut čtení
27. 9. 2022
Ladislav Sýkora

OAuth 2.0 v GraphQL může být trochu oříšek, ale dá se to zvládnout. Nejdřív si ujasni, jestli chceš autentizaci dělat na serveru nebo na klientu. Mnoho lidí dává přednost serveru, protože tam můžeš lépe chránit tajné klíče a tokeny. Pokud se rozhodneš pro server, můžeš použít middleware, jako je Apollo Server, a přidat kontrolu tokenu v kontextu. Když dostaneš request, zkontroluj token v hlavičce a ověř ho s poskytovatelem OAuth.

Pokud jde o správu tokenů, ukládat je do cookies je obecně bezpečnější než do localStorage, protože cookies mohou být nastaveny jako HttpOnly, což ztíží XSS útoky. Refresh tokeny bys měl mít oddělené a uchovávat je na serverové straně nebo v secure cookie. V každém případě je důležité mít dobrý plán na obnovu access tokenů, abys neměl uživatele neustále přihlašovat.

Dělej testy a sleduj nejlepší praxí, protože každá aplikace může mít své specifické potřeby.

142 slov
1.4 minut čtení
12. 5. 2021
Romana Klímová

Integrace OAuth 2.0 s GraphQL může být trochu jiná než s REST. Nejprve si ujasni, že potřebuješ od klienta získat autentizační token, což většinou probíhá přes nějaký přihlašovací endpoint. Pak už můžeš tento token posílat na server jako součást hlavičky každého GraphQL dotazu. Pokud jde o middleware, určitě doporučuji použít něco jako Apollo Server nebo Express.js, kde si nastavíš ověřování.

Pokud mluvíme o úložišti pro tokeny – localStorage je jednoduché, ale pokud chceš víc bezpečnosti, tak radši cookies (s HttpOnly a Secure flagy). Refresh tokeny bys měl mít na serveru a používat je k obnovení access tokenů bez nutnosti, aby se uživatel znovu přihlašoval. Takže ideálně udělej endpoint pro refresh, který pak zavoláš, když ti access token vyprší.

Mysli také na to, že autentizace na úrovni serveru je lepší z pohledu bezpečnosti, tak se snaž držet logiku co nejvíc na backendu. Klient by měl spíš jen posílat dotazy a zpracovávat odpovědi. Přeju hodně štěstí s implementací!

156 slov
1.6 minut čtení
21. 4. 2023
Antonín Janoušek

Implementace OAuth 2.0 v GraphQL je fakt tricky, ale dá se to zvládnout. Prvně si ujasni, jestli chceš autentizaci na serveru nebo klientovi. Obvykle je lepší ji řešit na serveru, aby ses vyhnul různým bezpečnostním problémům jako XSS. Použij middleware jako express-graphql nebo něco podobnýho, co ti umožní interceptovat requesty a kontrolovat tokeny.

Pokud jde o ukládání tokenů, localStorage je jednoduché, ale cookie ti poskytne lepší ochranu proti CSRF. Když už mluvíme o refresh tokenech, měj na paměti, že bys je měl bezpečně uchovávat a zpracovávat na serveru. Můžeš třeba mít endpoint pro refreshování tokenů, který se zavolá pokaždé, když vyprší platnost access tokenu.

Nějaké knihovny jako passport nebo apollo-server by ti mohly usnadnit život s autentizací. Měj na paměti, že implementace OAuth 2.0 v GraphQL není standardizovaná jako u REST API, takže flexibility bude víc než dost. Drž se dobrých praktik a mělo by to jít.

145 slov
1.5 minut čtení
23. 4. 2021
Šárka Adámková
GraphQL.cz/Články/Autentizace v GraphQL
Grafická autentizace uživatelů pomocí OAuth 2.0 v GraphQLObjevte, jak integrovat OAuth 2.0 pro grafickou autentizaci ve vašem GraphQL API a jak to ovlivňuje uživatelskou zkušenost.
1000 slov
10 minut čtení
12. 2. 2020
Jana Procházková
Přečíst článek
Podobné otázky