Простой способ использовать приложение AWS Lambda для аутентификации SAML

У меня есть простое приложение AWS Lambda. Мне нужно использовать SSO, наш поставщик IdP — Okta. Приложением редко пользуется большое количество сотрудников. Какой самый простой способ сделать это без дополнительных затрат и сложностей с информационной безопасностью (Amazon Cognito,...)?

Доступ AWS Java Lambda к экземпляру AWS RDS MySQL с помощью CDK
Доступ AWS Java Lambda к экземпляру AWS RDS MySQL с помощью CDK
В этой статье мы рассмотрим, как включить доступ Java Lambda к экземпляру AWS RDS MySQL.
2
0
85
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Примечание. В скобках указано (Amazon Cog[n]ito, ...). Я предполагаю, что вы предоставляете Amazon Cognito как нечто, что вы обдумываете, а не как нечто, чего вы хотите избежать.

Я думаю, что относительно простым и экономически эффективным способом было бы:

  1. Поместите свое приложение AWS Lambda за REST API AWS API Gateway . Используйте интеграцию прокси-сервера Lambda, если вы хотите, чтобы приложение Lambda обрабатывало все пути.
  2. Настройте пул пользователей Cognito, используя Okta в качестве поставщика удостоверений SAML (https://repost.aws/knowledge-center/cognito-okta-saml-identity-provider).
  3. Настройте авторизатор Cognito для API вашего API-шлюза.

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

Спасибо, Дуг! Я сделал то, что вы сказали, теперь у меня проблема. Я использую REST API API Gateway, но обслуживаю браузерное приложение, а не API. Когда я интегрировал Cognito, авторизатор Cognito перенаправляет приложение с ?code= в URL-адресе, однако это не удается, приложение выдает ошибку 401. Кажется, приложение ожидает заголовок авторизации, а не аргумент кода?

NetworkMeister 01.07.2024 17:41

Я не сразу понимаю, как это исправить. Я заметил, что в этих документах (docs.aws.amazon.com/apigateway/latest/developerguide/…) говорится: «Для источника токена введите Authorization в качестве имени заголовка, чтобы передать токен идентификации или доступа, который возвращается Amazon Cognito, когда пользователь успешно входит в систему». Установлен ли для вашего источника токена значение «Авторизация»? Кроме того, когда он перенаправляется на ?code=..., какой путь? Это тот же путь, что и у вашего приложения? Когда я использовал Cognito в прошлом, мне приходилось выполнять некоторые другие действия по пути, на который меня перенаправляли, но это может быть неприменимо здесь.

Doug Naphas 01.07.2024 21:42

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

NetworkMeister 02.07.2024 13:13

Другие вопросы по теме

Azure b2c все еще проходит проверку подлинности после выхода из системы
Какова связь между временем простоя сеанса единого входа Keycloak и временем ожидания сеанса Spring?
Java 17 Разрешить RC4 HMAC, сохраняя при этом значениеallow_weak_crypto как false в krb5.conf
Могу ли я иметь секреты, срок действия которых не истекает в системе единого входа Microsoft через Azure Microsoft Entra ID?
Конфигурация Zabbix SAML с использованием ActiveDirectory WIN 2016-ADFS
Интеграция Moodle с ADFS — подключаемый модуль SAML2 Единый вход
Как включить Token_ID в новом интерфейсе Azure/Microsoft Entra
Okta SSO (разрешение другим пользователям из другой организации использовать единый вход с приложением OpenID, которое я создал на своей панели разработчика Okta)
Почему секрет клиента требуется при настройке единого входа Azure AD/Identity в Asp.net (устаревшая версия .Net Framework), но не требуется в ядре asp.net?
Получение отказа в доступе для всех маршрутов (с помощью PermitAll() ) в Vaadin 24 и Azure SSO

Похожие вопросы