Инициатор запроса аутентификации и авторизации от сервиса к сервису в микросервисной архитектуре - PullRequest
0 голосов
/ 18 июня 2020

Проблема, которую я пытаюсь «решить» (или найти дополнительную информацию о том, как решить, но я не совсем уверен, где искать дополнительную информацию) заключается в том, что в приложении с микросервисной архитектурой сегодня у нас есть несколько сервисов, и у нас есть один » внешний интерфейс". Наш пользователь входит во внешний интерфейс, но тогда мы хотели бы иметь возможность аутентифицировать этого пользователя в нашей serviceA, и тогда serviceA имеет зависимость от serviceB, где мы также хотели бы аутентифицироваться от имени нашего пользователя ... а затем мы может даже иметь службу C, от которой зависит службаB, от которой мы также хотели бы "от имени" нашего пользователя пройти аутентификацию и авторизоваться ... Однако ... Я не совсем уверен, как это сделать ... Например, давайте возьмем более реальный сценарий из жизни ..

У нас есть приложение, которое позволяет пользователю загружать файлы. Как только пользователь пытается связаться с этим приложением, он / она перенаправляется на наш шлюз федерации (например, ADFS) .. пользователи входят в систему и перенаправляются обратно в наше приложение, и теперь им разрешено просматривать веб-приложение. Следующее, что делает пользователь, - он пытается загрузить файл, затем этот файл сначала загружается в наше приложение, а затем само приложение отправляет файл службе, которая заботится о хранении файла в подходящем месте (позволяет вызвать it ServiceA), однако ... не всем пользователям разрешено хранить файлы в любом месте, поэтому ServiceA необходимо хранить файл "от имени" нашего зарегистрированного пользователя ... (в этом случае это можно было бы получить, используя double -hop и, например, kerberos-ticket) .. просто ради моего вопроса, скажем, что serviceA нигде не хранит файл, serviceA затем вызывает ServiceB, где ServiceB фактически хранит файл и должен делать это "от имени" пользователь .. как / что позволит нам создать такую ​​цепочку? Было бы «нормально» просто использовать OpenID и 0Auth2 и сначала войти в систему пользователя на нашем шлюзе федерации, а затем, когда пользователь вернется в наше приложение, мы можем выдать новый «токен api», а затем просто передать его между всеми нашими службами ? .. или нам нужно будет заново создавать новый токен между каждой службой? Это проблема, которую "решает" OpenID Connect и / или 0Auth2? .. Я не могу найти какую-либо хорошую документацию или видео о том, как выполнить аутентификацию и авторизацию запрашивающего-> сервис-> сервис-> сервис ... любые ссылки или мысли о том, как решить такую ​​проблему, приветствуются

...