В чем разница между JSON Web Signature (JWS) и JSON Web Token (JWT)?

Я кодировал службу RESTful на Java. Вот что я понял до сих пор (поправьте меня, если я ошибаюсь):

авторизация токена выполняется с помощью JSON Web Tokens (JWT) которые имеют три части: заголовок, полезную нагрузку и секрет (общий между клиентом и сервером).

Я понял эту концепцию и споткнулся веб-подпись JSON (JWS) во время чтения о JWT.

JWS также является закодированной сущностью подобно JWT, имеющему заголовок, полезную нагрузку и общий секрет.

вопрос: в чем разница между двумя понятиями, а именно JWT и JWS? И если они похожи технически, то в чем разница в их реализация?

Это первый раз, когда я работаю с аутентификацией на основе токенов, поэтому, возможно, я неправильно понял концепцию.

P. S. Я узнал о JWS при просмотре через примеры этот сайт.

1 ответов


JWT на самом деле использует JWS для своей подписи, от спецификации:

веб-маркер JSON (JWT) - это компактный, URL-адрес-безопасное средство, представляющее требования, подлежащие передаче между двумя сторонами. Претензии в JWT в несколько кодируется как объект JavaScript Object Notation (JSON), который используется как полезная нагрузка структуры веб-подписи JSON (JWS) или как открытый текст структуры веб-шифрования JSON (JWE), включающей претензии, которые должны быть подписаны цифровой подписью или MACed и / или зашифрованный.

таким образом, JWT-это структура JWS с объектом JSON в качестве полезной нагрузки. Были определены некоторые необязательные ключи (или утверждения), такие как iss, aud, exp etc.

Это также означает, что его защита целостности не ограничивается только общими секретами, но также может использоваться криптография с открытым/закрытым ключом.