GraphQL.cz/Fórum/Můžu použít JWT s Apollo Serverem pro GraphQL?

Můžu použít JWT s Apollo Serverem pro GraphQL?

Zajímalo by mě, jestli je možné implementovat JWT (JSON Web Token) do Apollo Serveru, když pracuji s GraphQL. Mám už nějaké zkušenosti s REST API a vím, že JWT se běžně používá pro autentizaci a autorizaci uživatelů, ale nejsem si jistý, jak to funguje v kontextu GraphQL. Jakým způsobem bych měl nastavit server, aby správně ověřoval token a povolil přístup k určitým dotazům nebo mutacím? Existují nějaké specifické knihovny nebo osvědčené postupy, které bych měl následovat? Dále by mě zajímalo, co všechno musím udělat pro to, abych bezpečně odeslal a zpracoval JWT na straně klienta. Myslíte si, že je použití JWT dobrá praxe v kombinaci s Apollo Serverem? Nebo byste doporučili něco jiného pro zabezpečení API? Hlavně bych chtěl mít jistotu, že moje aplikace bude dobře chráněná a uživatelé nebudou mít problémy s přístupem. Díky za pomoc!

137 slov
1.4 minut čtení
12. 12. 2024
Ivana Jarošová

Jasně, můžeš použít JWT s Apollo Serverem. V podstatě to funguje podobně jako u REST API, akorát místo endpointů máš dotazy a mutace. Musíš si v Apollo Serveru nastavit middleware, který bude ověřovat token z hlaviček požadavků. To uděláš tak, že do kontextu serveru přidáš funkci, která zkontroluje platnost JWT a podle toho nastaví uživatelské údaje do kontextu.

Obvykle se používá knihovna jako jsonwebtoken pro dekódování a ověřování tokenů. Pokud je token platný, pak můžeš třeba povolit přístup k určitým dotazům nebo mutacím podle rolí uživatele, což je super pro zabezpečení. Ověřuj hlavně expiraci tokenu, aby ses vyhnul problémům.

Na straně klienta bys měl token uchovávat třeba v localStorage nebo sessionStorage, ale dávej pozor na bezpečnostní rizika jako XSS. Určitě se taky podívej na to, jak správně odesílat token v hlavičkách při každém požadavku.

Když to shrnu, JWT je dobrá volba pro autentizaci v Apollo Serveru, pokud si to dobře nastavíš a dodržíš bezpečnostní best practices.

154 slov
1.5 minut čtení
26. 7. 2024
Anna Roubalová

Jasně, můžeš použít JWT s Apollo Serverem. Je to dost běžný způsob, jak řešit autentizaci v GraphQL. V podstatě to funguje stejně jako u REST API, akorát místo hlaviček HTTP můžeš token posílat buď v hlavičce nebo jako argument v dotazu (ale hlavička je lepší).

Na serverové straně si můžeš vytvořit middleware, který ověří token při každém dotazu. Apollo Server má context funkci, kde si můžeš token z hlavičky vytáhnout a ověřit ho pomocí nějaký knihovny jako například jsonwebtoken. Když je token platný, můžeš do kontextu přidat info o uživateli, aby ses k nim mohl později dostat v resolvers.

Co se týče klienta, doporučuji ukládat JWT do localStorage nebo sessionStorage a při každém požadavku ho posílat s hlavičkou Authorization. Je dobrý mít na paměti bezpečnost, takže asi nebude špatné přidat nějaké refresh tokeny, aby ses vyhnul tomu, že uživatel bude muset neustále znovu přihlašovat.

Celkově je použití JWT s Apollo Serverem dobrá praxe. Ale nezapomeň na zabezpečení a validaci vstupů. Také se podívej na CORS, jestli potřebuješ povolit některý domény. Když tohle všechno pohlídáš, tak bys měl být v pohodě.

177 slov
1.8 minut čtení
8. 1. 2025
Robert Suchý

Jasně, JWT se dá v pohodě použít s Apollo Serverem pro GraphQL. V podstatě to funguje dost podobně jako u REST API. Měl bys v middleware nakonfigurovat ověřování tokenu, což se většinou dělá v kontextu Apollo Serveru. Takže ve funkci kontextu vezmeš token z hlavičky požadavku, ověříš ho a pokud je validní, můžeš ho přidat do kontextu, aby byl dostupný ve všech resolvers.

Knihovny jako jsonwebtoken jsou super na práci s JWT - můžeš snadno dekódovat a ověřit token. Co se týče zabezpečení, určitě si dej pozor na expiraci tokenů a refresh tokeny, aby ses vyhnul problémům s přihlášením uživatelů.

Na straně klienta je dobrý posílat token v Authorization hlavičce. Taky se ujisti, že to máš zabezpečený přes HTTPS, aby ti nikdo nemohl token ukrást. Využití JWT je podle mě dobrá praxe, ale hodně záleží na tvých specifických potřebách. Pokud chceš mít dobrou kontrolu nad přístupem k různým částem API, tak do toho klidně jdi.

153 slov
1.5 minut čtení
25. 11. 2024
Alois Šimek
GraphQL.cz/Články/Autentizace v GraphQL
Implementace JWT autentizace v GraphQL API: Kompletní průvodceNaučte se, jak implementovat JWT (JSON Web Token) autentizaci pro zabezpečení vašeho GraphQL API. Tento podrobný návod vás provede všemi kroky, od zák...
1000 slov
10 minut čtení
21. 4. 2023
Richard Malý
Přečíst článek
Podobné otázky