AWS API-шлюз с oauth2 и пружинной безопасностью - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть шлюз aws api впереди.с шлюзом API для прямой конечной точки http прохода ALB (Application Load Balancer). И ECS fargate как целевая группа ALB.У меня 3 микросервиса, разработанные в весенней загрузке.

Теперь я хочу интегрировать безопасность oauth2 и Spring для моих остальных API.Как интегрировать его с шлюзом AWS API?Я не использую лямбду и не хочу использовать aws cognito.

Что такое архитектура и как я могу интегрировать aouth2 с несколькими микросервисами?

1 Ответ

0 голосов
/ 06 мая 2019

не уверен, что если вы спрашиваете, как использовать Spring Security для защиты ваших микросервисов или (если вы уже настроили Spring Security), то как настроить AWS API Gateway для аутентификации запросов с использованием Spring Security перед вызовом ваших микросервисов.Но я постараюсь охватить оба этих вопроса в своем коротком ответе ниже.

Чтобы защитить конечные точки шлюза API AWS, вам потребуется использовать AWS Lambda Authorizer для достижения того, чего вы хотите.Вот необходимая документация (https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html). Вам не нужно использовать AWS Cognito для реализации безопасности API Gateway. Создаваемый Lambda Authorizer может аутентифицировать запросы на основе любой библиотеки, инфраструктуры или модели, которые вы уже внедрили в своемmicroservices.

В своем ответе я делаю следующие предположения:

  1. Я предполагаю, что у вас уже настроена Spring Security для защиты ваших микросервисов (если нет, эта ссылка дает хорошийучебное пособие о том, как это сделать https://dzone.com/articles/spring-security-with-oauth2).
  2. Здесь я также предполагаю, что вы успешно сгенерировали токен OAuth из Spring Security, и ваши клиенты API отправляют его в заголовок авторизации в качестве маркера канала-носителя.

В двух словах: создайте Lambda Authorizer с помощью Java (следуйте учебному пособию в первой ссылке). Идея состоит в том, чтобы указать заголовок HTTP, который включает в себя токен-носитель OAuth (обычно это «Авторизация»).заголовок). Затем вы настраиваете конечную точку своего шлюза API to передать этот заголовок вашему Lambda Authorizer.Как только функция Lambda Authorizer получает заголовок, она может использовать библиотеку Spring Security для проверки токена-носителя (см. Вторую ссылку выше, как это достигается).Если токен-носитель был успешно проверен, то выводом Lambda Authorizer должен быть документ политики (см. Эту ссылку https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-lambda-authorizer-output.html), которая указывает шлюзу API, разрешать ли запрос или отклонять его.

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

Я надеюсь, что это даст вам некоторые рекомендации о том, какидти вперед.

...