JSON Web TokenJSON Web Token (JWT) е JSON-базиран отворен стандарт (RFC 7519) за създаване на „жетони“, които съдържат определен брой твърдения. Например, един сървър може да генерира жетон, който съдържа твърдението „влязъл като администратор“ и достави тази информация до клиент. Клиентът тогава може да използва това означение да докаже, че е влязъл като администратор. Жетоните са подписани от ключа на сървъра, така че сървърът да е в състояние да удостовери, че подписът е законен. Жетоните са проектирани да бъдат компактни, URL-безопасни и използваеми най-вече в уеб браузър единично влизане (SSO) контекст. Твърденията JWT обикновено се използват, за да се предаде самоличността на регистрирани потребители между доставчик на идентичност и доставчик на услуга, или всякакъв друг вид твърдения, както се изисква от бизнес процесите. Жетоните могат да бъдат потвърдени и криптирани. JWT разчита на други JSON-базирани стандарти: (JSON Web Signature) RFC 7515 и JWE (JSON Web Encryption) RFC 7516. СтруктураJWTs обикновено имат три части: заглавие, полезен товар и подпис. Заглавието идентифицира кой алгоритъм се използва за генериране на подписа, и изглежда по следния начин:
HS256 показва, че този жетон е подписан с помощта HMAC-SHA256. Полезният товар съдържа твърденията, които искаме да добавим:
Както се предлага в спец JWT, включваме дата и час, наречени IAT, съкратено от „издаден в“. Подписът се изчислява чрез base64url кодиращи заглавието и полезния товар и ги слепва с точка за разделител:
Вземайки всичко заедно, ние кодираме подписа с base64url, и присъединяваме трите части, използвайки точки:
Изходът е три Base64 низа, разделени с точки, които могат лесно да бъдат прехвърлени в HTML и HTTP среди, като същевременно е по-компактен в сравнение с XML-базирани стандарти като SAML. Типични криптографски алгоритми, които са използвани, са HMAC с SHA-256 (HS256) и RSA подпис с SHA-256 (RS256). JWA (JSON Web Algorithms) RFC 7518 въвежда много повече за удостоверяване както и криптиране. Как работиВ удостоверяване, когато потребителят успешно се регистрира, използвайки своите данни, JSON Web Token ще бъдат върнат и трябва да бъде запазен локално (обикновено в локално пространство, но също така могат да се използват и бисквитки), вместо традиционния подход за създаване на сесия в сървър и връщане на бисквитка. Всеки път, когато потребителят поиска да получи достъп до защитен път или ресурс, потребителската програма трябва да изпрати JWT, обикновено в Авторизационната заглавна част, използвайки схемата Носител. Съдържанието на заглавието трябва да изглежда по следния начин:
Това е нестатичен механизъм за удостоверяване като състоянието на потребителя никога не е записано в паметта на сървъра. Защитените пътища на сървъра ще проверяват за валиден JWT в заглавната част на Авторизиращата заглавна част, и ако той е налице, на потребителят ще бъде позволено да получи достъп до защитените ресурси. Както JWTs са самостоятелни, цялата необходима информация е налице, намалявайки необходимостта да запита базата от данни на няколко пъти. Вижте повече подробности и онлайн инструменти в JWT.io Стандартни полетаИнтернет заявките дефинират следните стандартни полета („твърдения“), които могат да бъдат използвани в JWT набор от твърдения:
Следните полета могат да се използват за удостоверяване заглавията:
ПриложенияJWT приложения съществуват за Clojure, .NET (Public domain software), Go, Haskell, Python, Node.js, Java, JavaScript, Lua, Perl, PHP, Ruby, Rust, Scala, and Elixir. Източници
|