2017-02-19 13 views
3

Я в настоящее время создает новое приложение, основанное на архитектуре Microservices, с проверкой подлинности предоставленной идентификацией сервера 4.обмена для JWT - вниз по течению microservices авторизации

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

Первоначально клиенту был предоставлен токен доступа, который использовался для доступа к API, однако я теперь переключил его, чтобы использовать токены ссылок. Теперь, на вопрос!

Подход, который я хотел бы принять здесь, - это принять шлюз Microservices, который получает ссылочный токен, а затем превращает его в JWT для включения в любые запросы к нисходящим микросервисам. Внутри шлюза, как я могу «обменять» маркер входящей ссылки для JWT? Есть ли что-то в Identity Server, которое может помочь здесь? Или мне нужно использовать конечную точку интроспекции, отправить в токен ссылки и получить претензии для создания JWT в шлюзовой службе для передачи в заголовке авторизации всем нисходящим службам?

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

ответ

3

Это хороший прецедент для предоставления гранта. Смотрите документацию:

https://identityserver4.readthedocs.io/en/release/topics/extension_grants.html

+0

Спасибо, это похоже на то, что мне нужно. Я посмотрю на реализацию и последую за результатами. Я потратил немало тома, просматривая документы - не совсем уверен, как я пропустил эту часть! –

+0

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

2

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

Я реализовал промежуточное программное обеспечение ASP.Net Core, которое работает в шлюзе API. Средство промежуточного уровня работает в конвейере после промежуточного программного обеспечения аутентификации Identity Server и до промежуточного программного обеспечения MVC. Цель промежуточного программного обеспечения заключается в том, чтобы принять входной токен ссылки и обменять его с Identity Server (с использованием дополнительных расширений) для JWT, который может использоваться в заголовке авторизации при совершении вызовов в нижестоящих микросервисах.

Среднее программное обеспечение доступно на GitHub, а также как NuGet package. Более подробная информация о варианте использования промежуточного программного обеспечения можно увидеть в GitHub ReadMe, а также подробно описана установка и настройка промежуточного программного обеспечения, доступного в GitHub Wiki.

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

Если кто-то хочет использовать промежуточное программное обеспечение и имеет вопросы относительно установки и конфигурации, которые не охвачены документацией, добавьте проблему в репозиторий GitHub с тегом «Вопрос».