2017-01-04 8 views
1

Вот пример архитектуры.Авторизация Microservice с использованием Spring

  • Пользователи получают доступ к microservices "A" и "B" с помощью API шлюза
  • API-интерфейс Шлюз проверяет подлинность всех запросов
  • весна-сессия тиражирует HTTP сеанс microservices "A" и "B".
  • Microservice «C» получает доступ к микросервису «A» без каких-либо проверок безопасности.

Example architecture

Каковы наилучшие способы обеспечить проверку авторизации между браузером и microservices? Решение должно решить, что микросервис «C» не имеет связанной «сессии»/роли.

В частности:

  • Как может работать авторизацию уровня метода [т.е.. @PreAuthorize], когда у микросервиса «С» нет пользователя?
  • Имеет ли смысл проверять все проверки авторизации в шлюзе API, а вся межмикросервисная связь не защищена?

ответ

0

Как использовать OAuth или JWT для запросов от «C»? Сервис Просто нужен другой провайдер auth (я предполагаю, что у вас есть один уже для запросов, поступающих из шлюза API) для проверки токена. Затем он может содержать полномочия или предоставлять информацию для поиска авторитетов на основе другой информации в токене. Это позволит вам сохранить аннотации параметров уровня метода.

+0

Как перевести токен на роль/полномочия, которые могут быть подтверждены @PreAuthorize? –

0

API шлюз может установить х-AUTH-маркер в заголовках с httpsessionheaderStrategy. , и каждый сервис может иметь GenericFilter для установки контекста проверки подлинности в зависимости от сценария.

1

Требуется только проверка авторизации, а не аутентификация, потому что нет конечного пользователя, и это дело B2B. В этом случае вам необходимо использовать Client Credentials OAuth2. Более подробную информацию об этом можно найти на странице http://proficientblog.com/microservices-security/

 Смежные вопросы

  • Нет связанных вопросов^_^