AWS: Amazon Cognito против STS и SAML

В официальной документации AWS по Cognito , в схеме варианта использования указано, что:

1. На первом этапе пользователь вашего приложения входит в систему через пользовательский пул и получает токены пользовательского пула после успешной аутентификации.

2. Затем ваше приложение обменивает токены пула пользователей на учетные данные AWS через пул удостоверений.

3. Наконец, пользователь вашего приложения может использовать эти учетные данные AWS для доступа к другим сервисам AWS, таким как Amazon S3 или DynamoDB.

Разве цель назначения «учетных данных AWS» с помощью токенов не достигается с помощью STS?

Каковы именно различия в масштабах предоставления доступа пользователям, не являющимся пользователями AWS, к сервисам AWS (например, S3 или EC2) между Cognito и STS?

В том же источнике документации также указано, что Cognito также подходит для федерации удостоверений между AWS и сторонним поставщиком удостоверений (например, социальным, например Facebook, или корпоративным AD).

Разве это не достигается за счет федерации SAML (т.е. когда AWS и IdP сначала устанавливают доверительные отношения на основе SAML?)


person pkaramol    schedule 05.12.2018    source источник
comment
как лучше всего предоставить приложениям пользователям, не являющимся пользователями AWS, доступ к ресурсам AWS?   -  person Mon    schedule 23.07.2020


Ответы (1)


Пулы пользователей Cognito и пулы удостоверений - это абстракции более высокого уровня, чем SAML и STS. Начнем с определения того, что такое SAML и STS:

SAML делает возможной технологию единого входа (SSO) предоставление способа аутентифицировать пользователя один раз, а затем передать эту аутентификацию нескольким приложениям.

STS - это веб-служба, которая позволяет запрашивать временные, ограниченные -privilege учетные данные для пользователей AWS Identity and Access Management (IAM) или для пользователей, которых вы аутентифицируете.

По сути, SAML - это метод передачи токенов аутентификации, сгенерированных одним приложением, в другое, а STS - это метод получения токенов авторизации (т. Е. Учетных данных AWS) от AWS.

Теперь, с другой стороны, у нас есть пулы пользователей и идентификаторов Cognito:

Пулы пользователей обеспечивают аутентификацию, как и SAML, но они также предоставляют базу данных пользователей. SAML этого не делает, поэтому, если вы хотите хранить пользовательские данные, добавлять в них, изменять и т. Д., Вам нужно делать это самостоятельно. Все, что позволяет SAML, - это переложить аутентификацию этих пользователей на другую сторону. Однако вам нужно написать весь код, чтобы аутентификация произошла.

Пулы пользователей могут сами использовать поставщика аутентификации SAML или выполнять свою собственную встроенную аутентификацию. Но в любом случае вы по-прежнему получаете пользовательский объект, который живет в Cognito и имеет связанные с ним данные.

Пулы идентификации обеспечивают авторизацию, то есть решение о том, что разрешить (обычно аутентифицированному, но не всегда) пользователю. Они действительно используют службу STS в фоновом режиме, чтобы получить маркеры, позволяющие выполнять определенные действия, но пул идентификации выбирает в зависимости от характеристик пользователя, предоставлять ли и какие учетные данные. Пул удостоверений полагается на поставщика проверки подлинности, чтобы определить, кем является пользователь; этот поставщик может быть пулом пользователей или поставщиком SAML. Пул удостоверений автоматически проверяет предоставленные токены аутентификации, что они действительны в соответствии с провайдером, и что они позволяют пользователю получать определенные токены авторизации.

Подводя итог, пулы пользователей Cognito и пулы идентификаторов Cognito включают в себя функции, которые вам обычно нужно написать самостоятельно, чтобы перейти от поставщика SAML к базе данных пользователей, сопоставить пользователей с разрешениями для возможности извлечения Учетные данные AWS для этих разрешений. Вместо того, чтобы делать вызовы аутентификации провайдеру SAML (или реализовывать собственную аутентификацию), внедрять пользовательскую базу данных и затем создавать учетные данные AWS для привилегий пользователя, они позволяют вам настроить пул пользователей для использования данного провайдера (или собственной аутентификации Cognito. ), укажите пул удостоверений на пул пользователей и сообщите пулу удостоверений, какие разрешения должны иметь члены пула пользователей. Все остальное делается за вас в фоновом режиме.

person MyStackRunnethOver    schedule 06.10.2020