Где хранить secret если на клиенте и api нельзя
Все привет. Долго штрудирую тему авторизации в рест апи по токенам и почти понял все кроме пары вещей. Одна из них изложена ниже.
У меня есть схема в которой есть
- клиент - некий сайт, на котором есть возможноть дернуть некий функционал с сервера с rest api.
- сервер авторизации - проверяет валиден ли пользователь и дает новый токен, когда истек предыдущий
- api сервер - получает от клиента токен, данные, проверяет токен, и если он валидный то выполняет действия над данными
Для того чтобы на сервере api расшифровать токен и проверить валиден ли он, нужно иметь secret которым подписан токен.
secret я сохраняю в redis на сервере авторизации в формате <email>:<secret>.
На клиенте его нельзя хранить(если верить умным людям в инетернете), так как это риски безопасности.
На сервере api его нельзя хранить, так как это нарушает один из принципов rest(не хранить состояние).
Отсюда вопрос, где хранить secret, чтобы не в postgres, не на api сервере, не на клиенте, не делать лишних запросов с api на authorization сервер за secret-ом.
Вообще считается ли хранение secret в redis на сервере api(именно на той же физической машине где и api сервер) хранением состояния? Или это не хранение состояния так как не связано с кодом?