Подключите AWS CloudFront к системе единого входа (SSO)

Я работаю над веб-сайтом, развернутым в AWS с использованием S3 в качестве хранилища и CloudFront CDN. Это статический веб-сайт с одним файлом HTML, использующим JS для отображения содержимого на основе строки запроса. Владелец - это предприятие, которое уже установило систему единого входа в своей организации, они используют IBM Tivoli в качестве IdP. Часть, которую мне не хватает, - это как генерируется запрос на авторизацию?

Я прочитал это:

http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml. / а> <а href = "http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml_relying-party.html" rel = "nofollow noreferrer"> http://docs.aws.amazon.com/IAM/latest/ UserGuide / id_roles_providers_create_saml_relying-party.html

Многие из них близки, но не соответствуют действительности. Это не экземпляр EC2, это не Elastic Beanstalk, я не пытаюсь получить доступ к консоли AWS, и они не используют AD для SSO. Это просто сайт.

Пока у меня есть:

  • создал поставщика SAML в AWS и импортировал метаданные из своего IdP.
  • создал роль IAM
  • установили доверительные отношения между ролью и поставщиком
  • установил разрешение s3: getObject для роли
  • предоставил им метаданные из AWS со спецификой утверждений SAML, которые необходимо предоставить.

Мой вопрос в том, как связаны две стороны. Выполняется ли это автоматически AWS, когда кто-либо пытается получить доступ к сайту? Создает ли предприятие на своем портале специальную ссылку для запуска сайта с SAML? Что произойдет, если пользователь просто наберет доменное имя в браузере? Нужно ли добавлять код на сайт?

TIA, Майк


person Mike    schedule 11.04.2017    source источник
comment
Вы цитируете документацию IAM, которая, как я думаю, вы обнаружите, на самом деле не будет делать то, что вы хотите, особенно в SPA. Прочтите о поддержке AWS Cognito для поставщиков удостоверений SAML и о Cognito в целом, и посмотрите, не кажется ли вам, что он лучше подходит для того, что вам нужно.   -  person Michael - sqlbot    schedule 12.04.2017
comment
@sqlbot. Спасибо, с когнито знаком. У меня есть еще один клиент с приложением для iOS, которое получает файлы из CloudFront, и для этого мы использовали когнито. Однако для SSO на основе SAML кажется, что IAM необходим. Из документа ... Чтобы подготовиться к созданию роли для федерации SAML 2.0: Перед созданием роли для федерации на основе SAML необходимо создать поставщика SAML в IAM. Дополнительные сведения см. В разделе «Создание поставщиков удостоверений SAML».   -  person Mike    schedule 12.04.2017
comment
Может быть. С IAM и SAML вам почти наверняка понадобится сервер, и я подозреваю, что база данных тоже, хотя, если я прав, они могут быть удовлетворены с помощью Lambda и DynamoDB. С другой стороны, вы можете использовать поставщика удостоверений, который поддерживает SAML с Amazon Cognito, чтобы обеспечить простой процесс адаптации для ваших пользователей. Но, конечно, я не собираюсь спорить по этому поводу, а просто объясняю, что это похоже на меня. Возможно, вы правы.   -  person Michael - sqlbot    schedule 12.04.2017
comment
@sqlbot, еще раз спасибо. Я закончил читать документ по вашей ссылке, и есть определенное совпадение. В документации Cognito есть инструкции, в которых говорится, что мне все еще нужно создать роль IAM и так далее. Я пошел дальше и создал пул идентификаторов Cognito на тот случай, если он откроет какие-то новые возможности. Однако в самом конце есть раздел об аутентификации пользователя с помощью IdP ... это та часть, которая мне нужна. Он предоставляет информацию для iOS и Android, но не для JavaScript. Все еще смотрящий...   -  person Mike    schedule 12.04.2017


Ответы (1)


Возвращаемся назад, чтобы закрыть этот вопрос. Я обнаружил, что у AWS нет способа добавить уровень единого входа на ваш веб-сайт, размещенный в CloudFront. Это необходимо реализовать в коде веб-сайта.

Я закончил использовать модуль npm 'express-saml' для обработки обмена saml и действительно простую таблицу DynamoDB для хранения логина на стороне SP. Aws-sdk используется для DynamoDB.

Майк

person Mike    schedule 04.06.2017
comment
Кажется, что рекомендуемые подходы сейчас (2019) включают либо Cognito (для аутентификации на основе AWS), либо использование Lambda @ edge для реализации настраиваемого поставщика аутентификации (прямо сейчас я борюсь с безопасностью / ролями в этой настройке). docs.aws.amazon.com/lambda/latest/dg/ lambda-edge.html github .com / nzoschke / gofaas / blob / master / docs / - person Squiggle; 18.10.2019