AWS cognitos - пулы пользователей с поставщиками федеративных удостоверений - PullRequest
0 голосов
/ 27 апреля 2018

Я новичок в AWS и узнаю о пулах Cognito.

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

Является ли следующее истинным / возможным: -

  • С внутреннего интерфейса при вызове некоторого API Cognito с именем пользователя и паролем он может автоматически вызывать настроенный поставщик федеративных удостоверений пула пользователей, чтобы аутентифицировать пользователя и затем генерировать токен JWT. Если да, можете ли вы отослать / направить меня?
  • Пользователь, присутствующий в поставщике удостоверений, не существует в пуле пользователей AWS. Можно ли аутентифицировать пользователя с настроенным провайдером идентификации без присутствия пользователя в пуле пользователей AWS? Если да, то будет ли пользователь создан в пуле пользователей AWS после аутентификации?

Я буду очень признателен за любую помощь. Заранее спасибо.

1 Ответ

0 голосов
/ 27 апреля 2018

С внутреннего интерфейса при вызове некоторого Cognito API с именем пользователя и паролем он может автоматически вызывать настроенный пользовательский пул федеративной идентификации провайдер для аутентификации пользователя, а затем сгенерировать токен JWT. Если да, пожалуйста, вы можете обратиться / направить меня, пожалуйста.

Это возможно. Вы можете использовать комбинацию из следующих двух ссылок.

Получение токена JWT из Cognito UserPools

var authenticationData = {
        Username : 'username',
        Password : 'password',
    };
    var authenticationDetails = new AmazonCognitoIdentity.AuthenticationDetails(authenticationData);
    var poolData = { UserPoolId : 'us-east-1_xxxxx',
        ClientId : 'xxxxxxxxxxxxxxxx'
    };
    var userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);
    var userData = {
        Username : 'username',
        Pool : userPool
    };
    var cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);
    cognitoUser.authenticateUser(authenticationDetails, {
        onSuccess: function (result) {
            console.log('access token + ' + result.getAccessToken().getJwtToken());
            /*Use the idToken for Logins Map when Federating User Pools with identity pools or when passing through an Authorization Header to an API Gateway Authorizer*/
            console.log('idToken + ' + result.idToken.jwtToken);
        },

        onFailure: function(err) {
            alert(err);
        },

    });

Передайте токен JWT в Федеративный пул идентификации Cognito через SDK и обменяйте его на учетные данные для временного доступа AWS, чтобы выполнить любое действие против инициализации AWS.

AWS.config.credentials = new AWS.CognitoIdentityCredentials({
   IdentityPoolId: 'us-east-1:xxxxxxx-xxxx-xxxx-xxxx-xxxxxx',
   Logins: {
      'cognito-idp.us-east-1.amazonaws.com/us-east-1_xxxxxx': result.idToken.jwtToken
   }
});

Пользователь, присутствующий в поставщике удостоверений, не существует в пуле пользователей AWS. Является возможно аутентифицировать пользователя с настроенным провайдером идентификации без присутствия пользователя в пуле пользователей AWS? Если да, то будет пользователь будет создан в пуле пользователей AWS после аутентификации?

Это возможно только в том случае, если ваш внешний провайдер идентификации поддерживает федерацию SAML.

...