Což je dobré pro maximální zabezpečení webu

JWT i OAuth vám mohou pomoci zvýšit zabezpečení vaší webové aplikace tím, že nabízejí bezpečné ověřování a autorizaci. Ale který z nich byste měli implementovat, abyste uživatelům umožnili bezpečný přístup k vaší webové aplikaci? Na tuto otázku jsme připravili podrobný článek o JWT vs. OAuth.

Po jeho přečtení budete mít jasnou představu o tom, co jsou JWT a OAuth, jaké výhody nabízejí, jak se liší a který z nich byste měli implementovat, abyste zvýšili bezpečnost své webové aplikace.

Bez dalších řečí se do toho vrhneme.

Co je JWT?

JWT, což je zkratka pro JSON Web Token, je otevřený standard definující způsob, jak bezpečně sdílet informace mezi dvěma stranami jako objekt JSON. Protože jsou informace digitálně podepsány, strany mohou důvěřovat a ověřovat informace přenášené prostřednictvím webových tokenů JSON.

Relativně malá velikost JWT umožňuje jejich odesílání prostřednictvím parametru POST, adresy URL nebo uvnitř hlavičky HTTP. Webový token JSON má tři části: záhlaví, užitečné zatížení a podpis.

Záhlaví říká, o jaký typ tokenu se jedná a jaký typ podepisovacího algoritmu se používá. Část Payload JWT zahrnuje tvrzení, která jsou prohlášeními o uživatelích a dodatečnými údaji.

Jak název napovídá, část podpisu webového tokenu JSON má podpis, který ověřuje, že zpráva nebyla během cesty zmírněna.

Jak fungují JWT

Zdroj obrázku: DEV

Níže je uvedeno, jak webový token JSON funguje.

Přihlášení uživatele

Uživatelé se do vaší webové aplikace přihlašují zadáním svých uživatelských jmen a hesel. Poté vaše aplikace přenese tyto přihlašovací údaje na ověřovací server.

Generování tokenů

Poté, co ověřovací server ověří přihlašovací údaje uživatelů, vygeneruje webové tokeny JSON a odešle je uživatelům. Tyto JWT mohou obsahovat důležité informace o uživatelích a ověřovacích relacích. Uživatelé ukládají tyto JWT lokálně. Na základě nastavení může server také podepisovat JWT pomocí sdíleného tajného nebo soukromého klíče pro zvýšení bezpečnosti.

Ověření tokenu

Když uživatelé požádají váš aplikační server o přístup k jakémukoli prostředku, zahrnou své JWT do svých požadavků na server. Váš aplikační server ověří podpisy v JWT a zkontroluje nároky v nákladech, aby ověřil, zda mají uživatelé povolen přístup k požadovaným zdrojům.

Pokud jsou JWT platné, bude uživatelům udělen přístup k požadovaným zdrojům ve vaší webové aplikaci.

Případy použití JWT

Webové tokeny JSON lze používat následujícími způsoby:

#1. Oprávnění

Poté, co se uživatelé úspěšně přihlásí do vaší webové aplikace prostřednictvím koncového bodu přihlášení, ověřovací server jim vydá JWT. Uživatelé budou používat své JWT pro přístup ke zdrojům v rámci aplikace, které vyžadují ověření k prokázání jejich identity.

Výměna informací mezi stranami

JSON Web Token může být správnou volbou pro bezpečný přenos informací platným uživatelům. Webové tokeny JSON jsou podepsány, aby bylo zajištěno, že informace pocházejí z původního zdroje. Struktura JWT (podpisová část) také umožňuje přijímačům ověřit, že informace nejsou během cesty upravovány.

Výhody JWT

Níže jsou uvedeny klíčové výhody implementace JWT ve vaší webové aplikaci.

  • Na rozdíl od tokenů SAML jsou JWT lehké. Můžete je tedy rychle implementovat do prostředí HTML a HTPP, díky čemuž jsou JWT ideální pro klientské aplikace, jako jsou mobilní aplikace.
  • JWT nabízejí robustní zabezpečení. JWT můžete symetricky podepisovat sdíleným tajemstvím pomocí algoritmu HMAC nebo soukromého klíče, abyste je podepisovali asymetricky.
  • JWT jsou dodávány s vestavěným mechanismem vypršení platnosti, který vám umožňuje nastavit dobu vypršení platnosti JWT pro zvýšení bezpečnosti.
  • Webové tokeny JSON jsou široce přijímány různými řešeními jednotného přihlašování. Díky tomu se s JWT snadno pracuje.

Kromě toho mohou JWT ušetřit úložný prostor databáze ve vaší společnosti. Důvodem je, že váš server vytváří pouze JWT a jsou uloženy na straně klienta. JWT také nevyžadují vyhledávání v databázi.

JWT lze tedy rychle ověřit a nabídnout tak vynikající uživatelskou zkušenost.

Omezení JWT

Ačkoli JWT jsou vynikající způsob, jak autorizovat uživatele. Mají určitá omezení, např.

  • Jste odpovědní za zajištění bezpečnosti šifrovacího klíče. Pokud se hackerovi dostane do rukou klíč, který podepisuje vaše JWT, máte velký problém. Mohli by vytvořit falešné tokeny, které by se zapletly do vašich uživatelských dat. To je obrovské bezpečnostní riziko.
  • JWT nepotřebují volání databáze pro každou kontrolu, což zní dobře. Pokud však potřebujete jednu zrušit co nejdříve, budete ji muset umístit na černou listinu. To není rychlý ani jednoduchý úkol.
  • Když vyprší platnost JWT, nejde jen o prodloužení časovače. Váš systém požádá uživatele, aby se znovu přihlásil, aby získal nový token. To zvyšuje složitost celého procesu a vyžaduje více promyšlení nad uživatelskými zkušenostmi a bezpečnostními toky. Pro usnadnění procesu můžete implementovat obnovovací tokeny v kombinaci s JWT. Po vypršení platnosti přístupového tokenu mohou klienti použít tyto obnovovací tokeny k vyžádání nových přístupových tokenů, aniž by klient znovu zadával přihlašovací údaje.
  • Implementace JWT ve vaší webové aplikaci není jednoduchý úkol; vyžaduje další inženýrskou práci. Budete muset nastavit proces vytváření tokenu, vybrat správný mechanismus podepisování, který bude vyhovovat vaší aplikaci, a vše integrovat do vaší stávající architektury.

JWT nejsou jednokrokové řešení, ale spíše projekt, který vyžaduje pečlivé plánování a realizaci.

Co je OAuth?

OAuth, zkratka pro otevřenou autorizaci, je otevřený standardní autorizační protokol pro autorizaci. Umožňuje webovým aplikacím nebo webům přistupovat ke zdrojům hostovaným aplikacemi třetích stran jménem uživatelů, aniž by uživatelé sdíleli přihlašovací údaje pro aplikace třetích stran.

Nyní, napsaný jako OAuth 2.0 (nejnovější verze OAuth), je široce používán k ověřování uživatelů prostřednictvím ověřovacího serveru.

Například se zavedeným protokolem OAuth se uživatelé mohou přihlásit do vaší aplikace pomocí svých účtů na Facebooku nebo Google. Své přihlašovací údaje však zadají pouze na účtech Facebook nebo Google.

Jak funguje OAuth

Zdroj obrázku: Zoho

Máte například aplikaci pro správu času. A abyste umožnili komukoli efektivně používat vaši aplikaci, potřebujete přístup k jejich e-mailovým schránkám. V dřívějších dnech museli uživatelé sdílet své přihlašovací údaje s vaší aplikací, aby aplikaci umožnili přístup k jejich schránkám. OAuth2.0 tento problém vyřešil.

Takto vypadá pracovní postup OAuth2.0:

  • Vaše aplikace pro správu času (klient) požaduje přístup k chráněným zdrojům; v tomto případě je to schránka uživatele, kterou vlastní uživatel (vlastník zdroje). Vaše aplikace tak činí odesláním uživatele do autorizovaného koncového bodu.
  • Vlastník zdroje (uživatel) ověří a autorizuje požadavek na přístup ke zdroji z aplikace pro správu času. Klient (vaše aplikace) získá autorizaci od autorizovaného koncového bodu.
  • Vaše aplikace si vyžádá přístupový token od autorizačního serveru pro přístup k doručené poště uživatele. Učiní tak odesláním udělení autorizace a ověřením vlastní identity.
  • Pokud je identita vaší aplikace ověřena a udělení autorizace je platné, vaše aplikace obdrží přístupový token pro přístup do doručené pošty uživatele.
  • Pokud je přístupový token platný, vaše aplikace má nyní přístup k uživatelským datům (doručená pošta uživatele) odesláním přístupového tokenu k ověření.
  • Nyní má vaše aplikace pro správu času přístup k doručené poště uživatele. Stejně jako Oauth různé typy grantůtok autorizace se může mírně lišit v závislosti na typech udělení autorizace.

    Výhody OAuth

    Níže jsou uvedeny klíčové výhody používání OAuth.

    • OAuth je široce přijímaný standard. To znamená, že všechny přední autentizační služby rozumí a používají OAuth.
    • Uživatelé najdou mnoho zásuvných modulů a funkcí OAuth, ze kterých si mohou vybrat, a to díky širokému použití a kompatibilitě.
    • OAuth nabízí testované klientské knihovny pro téměř všechny programovací jazyky a webové rámce. S protokolem OAuth tedy můžete používat svůj preferovaný jazyk.
    • OAuth je vysoce bezpečný a dobře prověřený. Protože je tak široce používán, odborníci již zvážili všechna možná bezpečnostní rizika.
    • OAuth je skvělé pro oddělení kódu. Kód vaší hlavní aplikace se při zpracovávání úkolů ověřování nezkazí. To usnadňuje správu a aktualizaci aplikace z dlouhodobého hlediska.

    Případy použití protokolu OAuth

    Níže jsou uvedeny některé oblíbené případy použití protokolu OAuth:

    • Nejběžnějším použitím OAuth 2.0 je vytváření aplikací třetích stran pro přístup k uživatelským účtům. S OAuth 2.0 mohou uživatelé autorizovat třetí strany pro přístup k jejich datům uloženým v různých službách, aniž by třetím stranám poskytovali přihlašovací údaje pro tyto služby.
    • Jako vlastník webové aplikace můžete použít protokol OAuth 2.0 k implementaci jednotného přihlášení. Tato open source řešení OAuth můžete prozkoumat pro svůj projekt.
    • OAuth 2.0 můžete implementovat do své brány API, aby brána API fungovala jako autorizační server. Tím zajistíte, že brána API bude předávat požadavky od klientů s platnými přístupovými tokeny.
    • OAuth 2.0 může umožnit IoT a chytrým zařízením, jako jsou ledničky nebo televizory, komunikovat s API třetích stran jménem uživatelů. To se hodí, když se uživatel chce přihlásit do aplikace na miniaplikacích bez běžné klávesnice, jako je chytrá televize nebo herní konzole.

    Omezení protokolu OAuth

    Rozsah dostupných toků může být pro nové uživatele OAuth skličující. Není to jen o výběru jednoho; někdy potřebujete kombinaci, abyste splnili všechny vaše bezpečnostní požadavky. Tato složitost může začátečníkům ztížit, aby věděli, kde začít, co používat a jak to efektivně integrovat.

    Každý tok slouží jedinečnému účelu, ať už jde o mobilní aplikace, komunikaci mezi servery nebo webové aplikace. Před výběrem je tedy nezbytné pečlivě analyzovat vaše konkrétní potřeby.

    OAuth 2.0 závisí na SSL/TLS, aby byly věci v bezpečí. Pokud není SSL/TLS správně nastaveno, může být ohroženo zabezpečení OAuth 2.0.

    OAuth také může způsobit problémy s ochranou soukromí, zejména při sledování aktivity uživatelů. Když používáte službu, jako je „Přihlášení přes Google“, Google se může dozvědět o vaší aktivitě na webu třetí strany. Google nejenže může vědět, že jste se přihlásili, ale může také sledovat, jak často a kdy s daným webem pracujete.

    Navíc by OAuth mohlo být přehnané pro jednodušší nastavení, jako je aplikace s pouze předním a zadním koncem. V takových případech možná nebudete potřebovat jeho složitosti.

    Rozdíl mezi JWT a OAuth

    JWT a OAuth slouží klíčové funkci ověřování identity uživatele pro autorizaci přístupu ke zdrojům. Jsou to základní nástroje v oblasti bezpečnosti, ale liší se rozsahem, složitostí a aplikací.

    VlastnostiJWTsOAuthHlavní použitíJWTs se zaměřují hlavně na API.OAuth pokrývá web, prohlížeč, API a další aplikace.Token vs. ProtocolJWTs jsou formát tokenu.OAuth je autorizační protokol.StorageJWTs spoléhají pouze na úložiště na straně klienta.OAuth používá jak stranu klienta, tak úložiště na straně serveru. Flexibilita JWT mají omezenější rozsah. OAuth nabízí větší flexibilitu a širší škálu případů použití. Snadné použitíJWT jsou jednodušší a snáze uchopitelné. OAuth je složitější.

    Zatímco JWT jsou přímočařejší a zaměřené na zabezpečení API, OAuth poskytuje komplexní řešení mechanismu ověřování, které se může přizpůsobit různým scénářům.

    A OAuth může uživatelům umožnit povolit aplikaci třetí strany přístup k jejich datům na jiné platformě, aniž by odhalili své přihlašovací údaje.

    Zda je lepší, závisí na konkrétních potřebách daného systému nebo sítě.

    Můžete používat JWT a OAuth společně?

    Ačkoli JWT a OAuth slouží různým účelům, můžete je kombinovat.

    Protokol OAuth nespecifikuje žádný formát tokenu, který musí být striktně používán. Takže můžete implementovat JWT v OAuth.

    Například OAuth2 Authentication server může vydat přístupový token obsahující JWT. A tento JWT by mohl zahrnout další informace do užitečného zatížení, čímž by se zlepšil výkon. Důvodem je snížení počtu zpátečních cest mezi autentizačními a zdrojovými servery.

    Kombinace JWT a OAuth2 může také probíhat prostřednictvím přístupu se dvěma tokeny – OAuth2 touto metodou vydává dva samostatné tokeny: access_token a JWT. JWT obsahuje další informace o identitě. Tento přístup poskytuje další vrstvu podrobností, což vám dává větší kontrolu nad uživatelským přístupem a daty.

    Když se rozhodnete pro tuto strategii s dvěma tokeny, je důležité používat OpenID Connect. OpenID Connect staví na OAuth2 a přidává do tokenů více standardizovaných polí.

    Použití JWT místo OAuth2 může věci zrychlit a zjednodušit pro konkrétní úkoly. Ale také to může ztížit vývoj.

    Při rozhodování o použití JWT s OAuth2 zvažte, zda zvýšení rychlosti ospravedlňuje další práci ve vývoji.

    Závěr

    V bitvě JWT vs. OAuth o maximální zabezpečení webu má každý z nich své výhody a nevýhody. JWT svítí pro bezstavovou a rychlou autentizaci, ale má omezení, jako je absence vestavěného odvolání. OAuth vyniká ve složitých autorizačních scénářích, ale pro jednodušší projekty může být přehnaný.

    Pokud potřebujete robustní autorizaci a efektivní ověřování, zvažte kombinaci JWT a OAuth prostřednictvím OpenID Connect.

    Vaše volba by měla záviset na vašich konkrétních potřebách projektu, nejen na humbuku kolem těchto technologií.

    Kromě toho můžete prozkoumat tyto oblíbené platformy pro ověřování uživatelů a vybrat si nejlepší řešení pro vaši aplikaci.