2016-12-15 12 views
2

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

Для защиты конечных точек мы планируем внедрить аутентификацию на основе JWT между такими безопасными обменами.

Есть 2 подхода мы видим, помогая нам достичь этого:

  1. Вставить двигатель JWT в каждом приложении, чтобы генерировать маркер (@consumer сторона) и оценки (@provider стороны). При первоначальном обмене ключами обмен токена должен работать гладко для любых будущих комм.
  2. Имейте внешний (для приложения) JWT-движок, который находится между всеми коммуникациями с использованием микросервиса для распределенного приложения и обеспечивает весь жизненный цикл токена, включая его шифрование и дешифрование.

Есть много вариантов, чтобы сделать это в соответствии с опцией # 1, перечисленных на https://jwt.io но учитывая по голове маркера поколения и управления добавляет к микро-службе, мы предпочитаем идти с 2-й вариант, имея де - централизованный шлюз.

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

Кто-нибудь знает об одном таком инструменте/решении?

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

ответ

1

Я предпочитаю также вариант 2, но почему вы ищете рамки?

Центральное приложение должно отвечать только за управление закрытым ключом и выдачу токенов. Включение рамки для решения одной службы может быть чрезмерным

Вы также можете подумать о внедрении службы проверки достоверности, но, поскольку приложения являются вашими, я предлагаю использовать асимметричный ключ и локально проверять токен вместо выполнения запросов на удаленную проверку заявление. Вы можете предоставить простую библиотеку своим микросервисам, чтобы загрузить ключ и выполнить проверку. Вставьте любую из библиотек JWT.io или создайте ее с нуля. Проверка JWT действительно проста

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

+0

Понравилось ваше предложение @pedrofb. –

0

Оба сценария могут быть реализованы в Spring Cloud Zuul.

Для получения дополнительной информации: http://cloud.spring.io/spring-cloud-static/Brixton.SR7/#_router_and_filter_zuul http://cloud.spring.io/spring-cloud-static/Brixton.SR7/#_configuring_authentication_downstream_of_a_zuul_proxy

+0

Я изучил Zuul как часть этого поиска и не уверен, что Zuul действительно способен генерировать/управлять и проверять токены JWT для приложений, подключающихся через него. В документации Zuul также нет доказательств, что упоминание о предоставлении поддержки JWT. Однако у него есть релейная система, но это не токен JWT. –

+0

Действительно, каждая микросервис, проходящий через Zuul, используется для использования того же clientId (как указано в настройке ZuulProxy).В то время как мы хотим «обменивать» уникальные токены для каждого соединения для вызовов внутри микросервисов. Также я бы не хотел, чтобы моя конечная точка расшифровывала и проверяла токен. Он должен скорее отключить эту деталь обратно к двигателю JWT после получения токена. Если у вас есть образец/пример, чтобы удовлетворить эту потребность с помощью Zuul, не могли бы вы поделиться им? –