Как построить эффективную архитектуру микроуслуг, обращая внимание на единую ответственность при авторизации? - PullRequest
0 голосов
/ 20 марта 2020

Допустим, у меня есть Служба авторизации , и мне нужно поддерживать несколько пользовательских ролей.

И скажем, я хочу ограничить доступ к различным маршрутам из XY-Service в зависимости от ролей пользователя. Я могу думать только о двух вариантах:

1) Отправьте запрос в Authorization-Service , которая решит, авторизован я или нет. Это явно неэффективно, так как мне приходится взаимодействовать со службой авторизации несколько раз.

2) Использовать JWT , получить роль пользователя и принять решение в XY-Service если пользователь авторизован или не имеет доступа к этому ресурсу / маршруту. Это более эффективно, но вводит логи авторизации c в микросервисе, которые не должны иметь дело с такими логами c.

Ответы [ 2 ]

1 голос
/ 23 марта 2020

использование JWT является широко распространенной практикой и не нарушает принцип уникальной ответственности, поскольку принцип уникальной ответственности относится к нетехнической «функциональной» ответственности (бизнес логика c), ваш микросервис функционально делает одно и технически многие: ведение журнала, безопасность, отслеживание ... В настоящее время существует сильная тенденция вывести все эти технические функции из самого развития бизнеса с помощью envoy / istio

0 голосов
/ 23 марта 2020

Я думаю, вам нужно внедрить Netflix Zuul в качестве шлюза API. Это обеспечивает различные фильтры, которые можно использовать для ваших конкретных c целей, особенно для проверки и маршрутизации. Шлюз Zuul API легко реализовать с помощью пружинной загрузки.

...