Привет!
Поделитесь, пожалуйста, опытом в таком вопросе:
Ситуация: есть микросервис, к которому обращаются все другие микросервисы. Этот микросервис в свою очередь стучит в third party API (TPA). TPA использует OAuth2/OIDC, тоесть наш микросервис должен иметь access token, чтобы стучать в ТРА, и refresh token, чтобы получать новый access token.
Проблема: как правильно хранить и рефрешить access token в многопоточной среде с несколькими инстансами нашего микросервиса, когда TPA разрешает иметь только 1 валидный access token в единицу времени? Может есть какие-то best practices в этом плане.
Потенциальное решение: хранить в relational DB (к примеру, PostgreSQL) и реализовать locking на уровне кода через Pessimistic lock.
Проблема решения: мне кажется, что это немного overhead поднимать реляционную базу, чтобы хранить всего 2 объекта (access and refresh tokens), по-этому хотелось бы что-то проще и шустрее (Redis / Memcached), но там с локами не все так тривиально - не уверен, что создавать distributed lock в том же Redis-е - это хорошее решение.
Подскажите, пожалуйста, ваши best practices в этом плане. Спасибо!