Авторизация пользователя с микросервисами

12

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

Для меня последнее имеет больше смысла, так как упрощает применение изменений, применение политик; это СУХОЙ и т. д. Однако он может легко выйти из-под контроля всевозможными службами, сбрасывающими свои правила в одно место, а также обеспокоенными сетевой нагрузкой.

есть идеи?

morcmarc
источник

Ответы:

7

Я бы использовал центральную унифицированную систему аутентификации и имел бы отдельные разрешения / статистику для каждого микросервиса (вроде того, как я пока не могу проголосовать на этом сайте обмена стека, но могу переполниться стеками при использовании системы аутентификации обмена центрального стека). Один из моих текущих проектов будет включать этот подход в ближайшем будущем, что будет приятно; предыдущая работа по разработке включала создание HIPPA-совместимой системы, что требовало второго уровня авторизации / аутентификации, и это отнимало много времени, раздражая последовательные авторизации от юридически отдельных, но функционально неразделимых компонентов системы. Процесс отладки включает в себя гораздо меньше радости, чем простой вход в систему oauth или API с заголовками appid и x-auth.

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

Джонатан Восс
источник
Мы используем OAuth2 для аутентификации, и я хотел бы следовать тому же принципу - то есть иметь центральную службу с единой, четко определенной ответственностью - для авторизации, а не дублировать функциональность и логику разброса по сервисам. Для меня это нарушение границы домена. Я согласен с тем, что это означает, что нам придется разобраться с изоляцией правил обслуживания (например, stackoverflow, программисты и т. Д.).
morcmarc
2
Возможно, у вас могут быть глобальные разрешения, которые отменяются разрешениями для конкретных служб, что полезно, если несколько основных микросервисов используют одинаковые разрешения. Определенные разрешения для микросервиса, вероятно, должны храниться в инфраструктуре приложения для этого микросервиса, чтобы избежать потенциальных проблем с производительностью для службы центральной аутентификации.
Джонатан Восс
4

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

Источник

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

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

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

Ашвани Агарвал
источник