Подтвердить что ты не робот

Spring Cloud + Zuul + JWT для токенов ценности/ссылки

После прочтения статьи " Как управлять идентификацией пользователя в микросервисах" я пытался реализовать такую схему управления доступом (токены и ссылочные токены), но после изучения множества других тем и примеров в GitHub, относящихся к Spring Security + OAuth + Zuul, я не смог найти конкретных примеров того, как этого можно достичь. Все примеры, включающие JWT, возвращают данные пользователя при возврате токена, и это то, чего я хотел бы избежать. Данные пользователя никогда не должны напрямую доходить до Клиента, а должны передаваться бэкэнд-сервисам. Учебное пособие Spring Security + AngularJs содержит много информации о том, как превратить приложение в безопасное, но использует токен доступа или упоминает о возможности получения данных пользователя напрямую через JWT.

Этот вопрос SO, " Использование Zuul в качестве шлюза аутентификации от @phoenix7360", является именно тем подходом, который я пытался реализовать, но он лишь дает краткий обзор конфигурации, необходимой для реализации такого подхода к безопасности для микросервисов. Пожалуйста, обратитесь к изображению в этом вопросе, чтобы получить четкое представление о том, как это будет происходить.

Я не могу полностью понять, как должен быть сконфигурирован предварительный фильтр Zuul и как должна выглядеть конфигурация сервера авторизации. Как указано в статье и в вопросе SO, поток будет выглядеть примерно так:

Внешний (HTTPS)

  1. Клиент аутентифицируется на сервере OAuth2
  2. OAuth-сервер возвращает непрозрачный токен доступа (UUID без другой информации)
  3. Клиент отправляет запрос на API-шлюз с токеном доступа в заголовке авторизации
  4. API-шлюз запрашивает данные пользователя на сервере OAuth с токеном доступа в заголовке авторизации
  5. OAuth-сервер проверяет допустимость токена доступа и возвращает информацию о пользователе в формате JSON

Внутренний (HTTP/S)

  1. API Gateway создает JWT с пользовательскими данными и подписывает его закрытым ключом
  2. API Gateway добавляет JWT для запроса и перенаправляет его на Resource Server
  3. Resource Server проверяет JWT, используя открытый ключ API Gateway

Примечание. Шлюз API должен возвращать ошибку, если сервер OAuth указывает, что токен доступа больше не действителен.

Как будет работать ZuulFilter? Нужно ли выдавать новый запрос к OAuth-серверу (например, через RestTemplate), или эта схема поддерживается текущей реализацией. Есть ли какая-то особая конфигурация, необходимая для предложений JavaConfig для OAuth и Zuul? Если кто-то знает о рабочем примере, это было бы очень полезно и было бы полезно для дальнейшего использования по этой теме.

Я использую Spring Boot (1.4.0-M3) + Spring OAuth + Spring Cloud (Eureka, Ribbon, Zuul)

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

Заранее спасибо!

4b9b3361

Ответ 1

JHipster отлично справляется с этой проблемой. Если я хочу кратко рассказать о процессе входа в систему, сначала вы входите в систему, вовремя выбираете всю информацию, которую необходимо передать нижеуказанным службам (например, имя пользователя, электронная почта и т.д.), А затем передаете их своим микросервисам. Вы можете увидеть ссылку ниже от Okta для получения дополнительной информации https://developer.okta.com/blog/2018/03/01/develop-microservices-jhipster-oauth