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