Ретрансляция входящего токена в другие сервисы - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь на 100% понять, как работает сервер ресурсов, передавая входящий токен нисходящему потоку другим службам.

У меня есть микросервисная архитектура с пружинной загрузкой eureka, с аутентификацией Bearer по @EnableAuthorizationServer. Я использую пограничную службу в zuul с @EnableZuulProxy и @ EnableOAuth2Sso для ввода запроса, и я хотел, чтобы безопасность была централизована на этом этапе, но, конечно, я не могу оставить микросервисы без безопасности, и каждый из них является @EnableResourceServer.

Все работает нормально.

Вопрос в следующем: Либо с помощью security.oauth2.resource.user-info-uri, указывающего на oauth-сервер или на пограничный сервис, этот токен-носитель всегда проверяется на oauth-сервере, т. Е. Если он проходит через 10 микросервисов запрос, будет ли он проверять токен 10 раз против oauth-сервера? Нет ли способа, по которому мне не нужно 10 раз запрашивать сервер oauth, если токен действителен?

1 Ответ

1 голос
/ 29 марта 2019

Хорошо, похоже, что для типа Bearer необходимо всегда проходить аутентификацию на каждом сервере ресурсов на сервере аутентификации.

Решение состоит в том, чтобы использовать токены JWT.

Как объяснено в: https://developer.okta.com/blog/2018/04/02/client-creds-with-spring-boot#extra-credit-reduce-the-number-of-calls-to-the-authorization-server

Мы используем подписанные JWT, что означает, что вы можете проверять их локально, вместо того, чтобы делать дополнительный запрос от службы API к серверу авторизации при каждом запросе.

Diagram JWT

Вот и все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...