Úvod do JWT: JSON Web Token (JWT) je otevřený standard (RFC 7519), který definuje kompaktní a samostatný způsob bezpečného přenosu informací mezi stranami v objektech JSON. Tyto informace lze ověřit a důvěřovat prostřednictvím digitálních podpisů. JWT lze podepsat pomocí tajemství (pomocí algoritmu HMAC) nebo pomocí párů veřejných/soukromých klíčů RSA.
Některé scénáře, kde jsou JSON Web Tokeny užitečné:
Ověření identity:Toto je nejčastější případ použití JWT. Jakmile se uživatel přihlásí, každý další požadavek obsahuje JWT, které uživateli umožní přístup k trasám, službám a zdrojům povoleným tímto tokenem. Single sign-on je funkce, která je dnes široce využívána díky nízké režijní zátěži a snadné aplikaci napříč různými doménami.
Výměna informací:JSON Web Tokeny jsou skvělý způsob, jak bezpečně přenášet informace mezi stranami. Protože JWT lze podepsat – například pomocí párů veřejného/soukromého klíče – je možné si být jistý, že odesílatel je tím, za koho se vydává. Navíc, protože podpis je počítán pomocí hlaviček a payloadů, můžete také ověřit, že obsah nebyl upraven.
Oficiální webové stránky:Přihlášení k hypertextovému odkazu je viditelné.
Informace o JWT online:Přihlášení k hypertextovému odkazu je viditelné.
Analyzujte parametry JWT online Přihlášení k hypertextovému odkazu je viditelné.
Moje chápání JWT níže je špatné, prosím, poraďte mi
Za prvé, toto zařízení se nedoporučuje používat na webu MVC, můžete ho použít ve Webapi, umístění tohoto zařízení je API, ne relace náhradního webu!
asp.net návod na používání webAPI:Přihlášení k hypertextovému odkazu je viditelné.Kolo nebudu předělávat, podívat se na to, co je tento článek napsáno, je v pořádku.
Složení JWT
JWT se skládá ze tří částí: Header, Payload a Signature, přičemž mezi nimi jsou symboly teček, které tvoří tvar xx.yy.zz.
Všimněte si, že u podepsaných tokenů může tyto informace číst kdokoliv, i přes ochranu proti manipulaci. Nevkládejte citlivé informace do platných obsahových nebo hlavičkových prvků JWT, pokud nejsou šifrovány.
Například:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
{
alg: "HS256",
typ: "JWT" }.
{
sub: "1234567890",
name: "John Doe",
iat: 1516239022 }. [podpis] Jednoduše řečeno, kdokoli může tento token dešifrovat, ale pravost těchto informací nelze ověřit, pouze server, který token vytvořil, může ověřit pravost, proto do něj neukládejte citlivé informace.
Je zde problém, a to, že pokud uživatel změní heslo nebo je mu zakázáno se přihlásit, jak může JWT vyřešit platnost tokenu?
Můj vlastní nápad je přidat guid-podobný řetězec v sekci Payload a pak existovat v cache, při ověřování identity uživatele nejen ověřit jwt, ale také ověřit informace o Payload v jwt, validitu můžeme ovládat kontrolou cache.
|