Авторизация через JWT для микросервисов
Правильно ли я понимаю, что правильно будет сделать Authentication Server, как отдельный микросервис, у которого будет два контроллера, один генерирует JWT-токен, а второй проверять валиден ли он, и все другие сервисы стучатся в этот сервис? И будет ли очень плохо, если Resource Server (Получение юзера, создание юзера, удаление юзера) будет находиться в том же сервисе, что и Authentication Server?
Ответы (1 шт):
Сервис аутентификации должен генерировать токен, но проверять токен на валидность может уже каждый сервис сам.
Есть сервер аутентификации, у него есть 2 ключа - один публичный, для кодировки, второй приватный - для декодинга (в случае хеширования приватного не будет). Есть ресурс сервер, он получает запрос с токеном, в токене есть данные и подпись (подпись это по сути закодированные данные или хеш).
Ресурс сервер качает публиный ключ с сервера аутентификации (один раз, или там раз в день\час) и после для каждого токена - пробует его данные закодировать открытым ключем, если полученное значение совпадает со второй частью токена, то токен считается валидным.
Это конечно упрощенное представление. Более детально, из чего состоит токен, можно почитать тут.