AWS cognitos - 具有联合身份提供者的用户池

时间:2018-04-27 17:26:08

标签: amazon-web-services aws-sdk

我是AWS新手并了解Cognito Pools。

我打算使用与Cognito Federated Identity池连接的Cognito用户池。我不想使用具有托管UI功能的登录或任何其他登录UI来登录。

以下是真/可能: -

  • 从后端调用一些带有用户名和密码的Cognito API,它可以自动调用配置的用户池联合身份提供程序来对用户进行身份验证,然后生成JWT令牌。如果是的话,请您参考/指导我。
  • AWS用户池中不存在身份提供者中的用户。是否可以使用已配置的Identity提供程序对用户进行身份验证,而AWS用户池中不存在用户?如果是,那么将在身份验证后在AWS用户池中创建用户吗?

我真的很感激任何帮助。提前谢谢。

1 个答案:

答案 0 :(得分:0)

  

从后端使用用户名和密码调用一些Cognito API   它可以自动调用已配置的用户池联合身份   提供程序以对用户进行身份验证,然后生成JWT令牌。如果   是的,请你转介/指导我。

这是可能的。您可以使用以下两个参考文献的组合。

Receiving the JWT token from 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 Federated Identity Pool via 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联盟时才可以这样做。