178просмотров
11 января 2024 г.
Score: 196
💡Small Tip: Если приложение работает с JWT (JSON Web Token), то обычно ему требуется JWT_SECRET для создания/проверки подписи по алгоритму: HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), JWT_SECRET ) Хорошая практика – выносить значение секрета в настройки приложения. Но ещё лучше – добавить в приложение возможность ротации значений этого секрета, что уменьшит риск его утечки. Для этого в настройки вместо одного значения выносим список пар ключ-значение: "jwt_keys": { "2024-01-15": "9PRJdoKCFBh/wezToNukI4BrvL2nqWLtllWBMILbj6Y=", "2024-01-01": "3QxGq86nNBxlL74hv4iSktsj0+9vyGfDu1xeGg8q5BU=", "2023-12-15": "RwZwIHhYG1AfoWcdb1LT6Pq5hMWvdaS9tuByWsX01XU=", "2023-12-01": "LlceZPcwnnrJeDRGmPCEghtG3O777A23NmSsPrB1H94=" } где ключ – это дата, с которой начинает использоваться данный секрет для генерации новых подписей, а значение – само значение секрета. При создании токена берём нужный секрет на текущую дату и кладём эту дату в заголовок в поле kid (Key ID). При валидации берём из конфига нужное значение на основе значения kid. Старые значения можно удалять из конфига, когда все выпущенные с ними токены проэкспарятся. Таким образом ротация секретов будет бесшовной, не требуя инвалидации старых токенов после смены значений.
178
просмотров
1294
символов
Нет
эмодзи
Нет
медиа

Другие посты @SystemOutBlog

Все посты канала →
💡Small Tip: Если приложение работает с JWT (JSON Web Token) — @SystemOutBlog | PostSniper