GraphQL.cz/Fórum/Můžu použít HMAC pro ověřování uživatelů v GraphQL?

Můžu použít HMAC pro ověřování uživatelů v GraphQL?

Chtěl bych se zeptat, jestli je možné používat HMAC (Hash-based Message Authentication Code) pro ověřování uživatelů v aplikacích, které využívají GraphQL. Mám na mysli, jestli je to bezpečné a efektivní řešení pro ochranu komunikace mezi klientem a serverem. Zajímalo by mě, jakým způsobem by se dal HMAC implementovat do systému autentizace uživatelů. Je potřeba nějaké speciální nastavení nebo knihovna, kterou bych měl použít? Taky by mě zajímalo, jak to funguje s tokeny a jestli je nutné mít nějaký backendový server, který by správu těchto HMAC klíčů zajišťoval. Dále bych rád věděl, jestli někdo má zkušenosti s kombinací HMAC a GraphQL a zda se setkal s nějakými problémy nebo výhodami. Vlastně mě zajímá, jestli je to běžná praxe v oboru a jaké jsou alternativy, pokud HMAC není ideální volba. Doufám, že mi někdo pomůže objasnit tyto otázky a podělí se o své zkušenosti.

142 slov
1.4 minut čtení
10. 9. 2024
Roman Mašek

Jo, HMAC se dá použít na ověřování uživatelů v GraphQL. Je to vlastně bezpečný způsob, jak zajistit, že data poslaná mezi klientem a serverem nejsou podvržená. HMAC funguje tak, že vezmeš nějaký tajný klíč (ten bys měl uchovávat na serveru) a kombinujes ho s daty, co chceš poslat. Pak to hashneš a ten hash pošleš jako součást požadavku.

Co se týče implementace, můžeš použít různé knihovny podle toho, v jakém jazyce děláš. Například pro Node.js je populární crypto modul. Napřed musíš mít nějaký proces, kdy si uživatel vytvoří účet a dostane klíč nebo token, což pak používáš při každým požadavku.

Není nutný speciální backend na správu klíčů, ale je dobrý mít nějaký systém pro jejich generování a revokaci. A s GraphQL to funguje v podstatě stejně jako s REST – posíláš HMAC jako součást hlaviček nebo těla požadavku.

Zkušenosti s HMAC jsou většinou pozitivní, ale můžeš narazit na komplikace s expirací tokenů nebo s obnovováním klíčů. Pokud bys chtěl něco jiného, tak OAuth nebo JWT (JSON Web Tokens) jsou také běžné alternativy. Hlavně záleží na tom, co přesně potřebuješ a jakou máš architekturu.

180 slov
1.8 minut čtení
3. 1. 2023
Robert Suchý

HMAC se dá použít pro ověřování uživatelů v GraphQL, ale není to úplně běžná praxe. V podstatě HMAC zajišťuje integritu a autenticitu zpráv, takže bys ho mohl využít na ověření, že data od klienta nepodepsal někdo jiný. Ale pro autentizaci uživatelů se obvykle používají tokeny jako JWT, které obsahují i informace o uživatelských právech.

Pokud bys chtěl implementovat HMAC, potřebuješ mít tajný klíč, který bys měl uložený na serveru a nikdy ho nesmíš poskytnout klientovi. Klient by pak posílal HMAC jako součást dotazu a server by ho ověřoval. To ale znamená, že musíš mít nějakou logiku na serveru, která se o to postará.

Co se týče knihoven, tak záleží na tom, jaký jazyk používáš. Většinou existují knihovny pro generování HMAC pro různé programovací jazyky. Ale může to být složitější než jen použít hotový řešení jako JWT s nějakým frameworkem na autentizaci.

Celkově to může fungovat, ale možná budeš mít víc práce s bezpečností a správou klíčů než s klasickými metodami. Také je dobrý mít na paměti, že pokud nemáš zkušenosti s kryptografií, můžeš udělat chybu. Pokud hledáš alternativy, zkus se podívat na OAuth nebo OpenID Connect, což jsou běžné standardy pro autentizaci.

190 slov
1.9 minut čtení
19. 8. 2022
Barbora Švábová

Jasně, HMAC můžeš použít pro ověřování uživatelů v GraphQL. Je to vlastně bezpečný způsob, jak zajistit integritu a autenticitu zpráv. Funguje to tak, že vezmeš tajný klíč a kombinuješ ho s daty (např. uživatelským ID nebo tokenem), což ti dá hash. Pak ten hash posíláš spolu s požadavkem na server, kde ho ověří – jestli se shoduje s tím, co server vypočítal.

Pro implementaci nepotřebuješ žádné speciální nastavení, ale určitě je dobrý mít nějakou knihovnu pro HMAC, třeba v Node.js nebo Pythonu. Co se tokenů týče, HMAC můžeš používat jako součást JWT (JSON Web Token), což je běžná praxe v autentizaci.

A ano, budeš potřebovat backendový server pro správu těch HMAC klíčů. Jinak to moc nefunguje – potřebuješ mít centrální místo, kde se ty klíče udržují a kde probíhá ta validace.

Někteří lidi mají dobré zkušenosti s HMAC a GraphQL, ale jako u všeho – je potřeba být opatrný a neudělat chybu při generování těch hashů. Alternativy by mohly být třeba OAuth nebo API klíče, ale HMAC je rozhodně solidní volba.

171 slov
1.7 minut čtení
20. 1. 2023
Vojtěch Urban
GraphQL.cz/Články/Autentizace v GraphQL
Zabezpečení API pomocí HMAC v GraphQLJak používat HMAC (Hash-based Message Authentication Code) k posílení bezpečnosti vašeho GraphQL API. Praktické tipy a triky pro vývojáře i laiky.
1000 slov
10 minut čtení
16. 10. 2021
Markéta Svobodová
Přečíst článek
Podobné otázky