Вы можете написать библиотеку, которую вы импортируете в другие ваши микросервисы, для которой требуются все маршруты по умолчанию, требующие аутентификации. Эта библиотека может иметь механизм для проверки JWT на уровне микросервиса, поэтому вам никогда не нужно обращаться к своему auth api, чтобы узнать, является ли JWT действительным или нет. Смотрите описание и схему ниже:
Ваш сервер аутентификации должен быть единственным поставщиком JWT для ваших микросервисов. Поэтому, когда пользователь входит в систему и успешно проходит аутентификацию, ваш сервер аутентификации выдаст JWT, подписанный с помощью закрытого ключа (подпись ДОЛЖНА быть асимметричной - пример RS256), который вы держите только на сервере аутентификации; не передавайте этот закрытый ключ другим микросервисам, для которых вы хотите проверить JWT внутри. Что вы можете сделать, это получить открытый ключ на основе закрытого ключа, которым вы подписываете свои токены, и опубликовать его в конечной точке на вашем сервере аутентификации, которая не требует аутентификации - открытый ключ будет представлен в виде JWK (см. Ссылку на спецификацию). Google делает нечто подобное здесь . Затем в каждом из ваших микросервисов вашей библиотеке потребуется разработать способ отправки GET-запроса к конечной точке открытого ключа на вашем сервере аутентификации каждые X минут, чтобы посмотреть, есть ли какие-либо изменения, и кэшировать открытый ключ в каждом микросервисе. Имея открытый ключ в вашем микросервисе, вы сможете проверить запрашивающий JWT внутри запрашиваемой службы.
Затем, когда запрос поступает в одно из ваших микросервисов, импортируемая вами библиотека проверяет запрашивающий JWT, проверяет его действительность и предоставляет доступ / авторизацию, если токен действителен. Прелесть использования пары секретный / открытый ключ и асимметричной подписи ключей заключается в том, что вы можете проверять токен только на основе открытого ключа, но не подписывать его. Таким образом, до тех пор, пока у каждой службы есть открытый ключ от вашей конечной точки / сертификата, они могут проверять токен, не обращаясь к серверу авторизации и не зная секретного ключа.
Это потребует немного больше предварительной работы, но даст вам огромное количество легкости, гибкости и душевного спокойствия в будущем, зная, что только один источник знает ваш личный ключ.