Как проходить аутентификацию и авторизацию в микросервисной архитектуре - PullRequest
0 голосов
/ 16 сентября 2018

Short: Как аутентифицировать и авторизовать пользователей на основе ролей в микросервисной архитектуре?

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

«Оставьте аутентификацию стороннему поставщику OAuth» .Это выглядит как добавление большого количества накладных расходов и сложности для довольно простого приложения, и может быть нежелательно делегировать аутентификацию и авторизацию третьей стороне.

"Use JWT" .Если я прав, то использование токена JWT не подходит для внешнего использования (как в SPA).

"Использовать комбинацию внешних непрозрачных токенов и внутренне связанных JWT в redis / memchache«.Кажется, это лучшее решение для моей конкретной ситуации, но моя проблема здесь заключается в отсутствии реальных ссылок на библиотеки / примеры кода.

Я был бы очень признателен, если бы кто-то имел ссылки на реальные реализации того, что я пытаюсьчтобы выполнить следующее: Аутентификация, авторизация на основе ролей в микросервисной архитектуре.

enter image description here

1 Ответ

0 голосов
/ 16 сентября 2018

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

Следуйте OAuth, поскольку он даету вас есть несколько вариантов, вы можете начать с собственной IDM / IAM и позже подключиться через социальные платформы.

Мы начали с JWT, и по большей части это был просто подписанный токен (некоторое время спустя мы переехалина подписанные и зашифрованные токены).Мы создали один сервис, отвечающий за обработку аутентификации и создание токена JWT.(Мы начали с Keycloak , но позже перешли к собственному сервису, поскольку keycloak для нашего случая использования был громоздким)

Когда вы говорите «внешний», я не уверен, что вы подразумеваете под этим, еслипросто доступны для конечного пользователя IMO, мы можем жить только с подписанным токеном.Да, вся информация видна пользователю, но это все его информация и некоторая информация, связанная с авторизацией.

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

Использование комбинации непрозрачного токена и JWT может быть излишним, если только у вас нет веских причин против этого.IMO, с которым вам легко начать, используйте JWT, если требуется, зашифруйте его.Все, что вам нужно, это еще один сервис для управления аутентификацией, создания и подписания токена, и вы должны быть хорошими.

...