2015-11-08 1 views

ответ

2

Цели между JWS и JWE различны. JWS используется для подписи претензий, JWE используется для передачи конфиденциальных данных.

Если вы хотите внедрить систему аутентификации, JWS необходимо использовать для проверки подлинности требований.

Вы также можете зашифровать свой JWS с помощью JWE, если некоторые из претензий в вашем JWS содержат конфиденциальную информацию.

Но использовать только JWE - это не какой-то смысл в вашем контексте.

6

Подписи JSON Web Signature (JWS) подписываются подписью, которая может быть проверена сервером с секретным ключом подписи. Это гарантирует, что претензии не были смягчены при передаче между клиентом и сервером. Содержимое токена JWS кодируется Base64 и не зашифровано (запомнить кодировка отличается от шифрования!). Закодированные данные Base64 выглядят зашифрованными в том смысле, что они выглядят как мусорный текст, но на самом деле тривиально просто вернуться к читаемым данным. Поэтому всегда рекомендуется не содержать конфиденциальной информации в JWT. Целесообразно использовать JWT только тогда, когда вы хотите обмениваться информацией между двумя сторонами (или между клиентом и сервером), и никакие конфиденциальные данные не передаются как полезная нагрузка в токене.

Но что, если вы хотите включить какую-либо личную информацию в токен? Вы не хотите, чтобы ваша конфиденциальная информация присутствовала в токене, который только кодируется Base64, который может быть легко декодирован любым злоумышленником. К счастью, существует способ шифрования и защиты данных претензий другим, более безопасным уровнем защиты, известным как JSON Web Encryption (JWE). Он определяет способ шифрования данных ваших требований (в основном это структура данных на основе JSON), чтобы только предполагаемый получатель мог прочитать информацию, присутствующую в токене.

Лучший способ справиться с веб-токена в:

  • Подпиши, так что это хорошо известно, что маркер происходит от авторизованного клиента.
  • Зашифруйте его, чтобы только разрешенный сервер мог сказать, что он говорит.

У нас есть несколько хороших библиотек, доступных в Java, которые могут шифровать JSON веб-токена:

  1. Jose4J
  2. Nimbus-JOSE-JWT

Оба вышеуказанные библиотеки с открытым исходным кодом (Apache 2.0) реализация спецификации спецификации JWT и JOSE (Javascript Object Signing and Encryption). Они оба являются качественными библиотеками, и вы не можете сделать неправильный выбор. Однако JWT.IO имеет приятный интерфейс, чтобы показать различия в каждой доступной библиотеке.