Подтвердить что ты не робот

Роли с использованием JWT

Я новичок в JWT. Я немного изучил JWT и понял, что он создан как "header.claims.signature".

Рассмотрим простой сценарий следующим образом:

  • Клиент получает аутентификацию
  • Клиент может иметь (одну или несколько) роли администратора, участника, зарегистрированного, гостя
  • Сервер не поддерживает сеанс (и зависит только от JWT для аутентификации/авторизации)

После аутентификации сервер находит тип клиента, и я предполагаю, что customerId и роли будут частью "претензий" в JWT. Сообщите мне, если мое предположение неверно (или против стандартного).

Часть "претензий" JWT не зашифрована (просто закодирована). Это обеспечивает легкую дыру в безопасности, где потребитель (услуга) может просто модифицировать часть "претензий" JWT и повторно отправлять то же самое с большим количеством ролей (для которых клиент/потребитель не имеет права).

Если мое понимание/предположение неверно, как мы достигаем того, к чему я нацелен?

4b9b3361

Ответ 1

При использовании JWS (header.claims.signature) часть "претензий" JWT защищена целостностью подписи. Поэтому, если "претензии" или любая другая часть JWT изменена кем-либо без соответствующего ключа, проверка подписи на JWT не удастся, и токен должен быть отклонен.

Ответ 2

Часть "претензий" JWT может быть проверена, но другая проблема при добавлении чего-то вроде ролей в "претензию" - это случай, когда вы меняете роли пользователя, но старый токен по-прежнему содержит предыдущие роли, назначенные пользователю. Поэтому будьте осторожны. Вы можете просто сохранить идентификатор пользователя в токене и получить любую другую информацию, связанную с пользователем, на основе вашего механизма сохранения (базы данных или что-либо еще).

Ответ 3

Другим вариантом является поиск пользователя в базе данных во время аутентификации на основе идентификатора пользователя, включенного в токен, для проверки ролей или других аспектов их личности, не включенных в JWT.

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