Я ищу решение о том, как улучшить безопасность для JWT без использования шифрования и в то же время разрешить пользователю мультисессию.
Стандартный алгоритм создания подписи:
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
Что, если мы объединяем некоторый уникальный идентификатор клиента (IP / MAC-адрес / отпечаток браузера) (что-то, что можно экспортировать из самого запроса без передачи тела запроса) с нашим секретом?
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret + UNIQUEIDENTIFIER)
Такое решение не позволит хакеру получить доступ к нашим данным, даже если будет похищен весь JWT.
К сожалению, использование IP не является лучшим для UNIQUEIDENTIFIER, потому что клиент может использовать динамический IP.
Есть идеи, какой параметр http-запроса можно использовать как UNIQUEIDENTIFIER?