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?)

0 ответов

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

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

STS - это веб-сервис, который позволяет запрашивать временные учетные данные с ограниченными правами для пользователей 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.), укажите пул удостоверений на пул пользователей и сообщите пулу удостоверений, какие разрешения должны иметь члены пула пользователей. Все остальное делается за вас в фоновом режиме.

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