【问题标题】:AWS Cognito - User Pools with Federated Identity providersAWS Cognito - 具有联合身份提供商的用户池
【发布时间】:2018-10-08 14:19:02
【问题描述】:

我是 AWS 新手,正在学习 Cognito 池。

我计划使用与 Cognito 联合身份池连接的 Cognito 用户池。我不想使用带有托管 UI 功能的登录或任何其他登录 UI 来登录。

以下是否正确/可能:-

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

我将非常感谢任何帮助。提前致谢。

【问题讨论】:

    标签: amazon-web-services aws-sdk amazon-cognito


    【解决方案1】:

    使用用户名和密码从后端调用一些 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 联合时才有可能。

    【讨论】:

    • 阿山感谢您的快速回复。从 Cognito UserPools 接收 JWT 令牌的实现是在 javascript 中。我的要求是使用 GOlang 在后端实现这一点,并通过 web 服务公开它。我查看了github.com/aws/aws-sdk-go 并没有看到相应的类。你能帮忙/指导吗?
    猜你喜欢
    • 2020-08-14
    • 2018-11-07
    • 2018-02-11
    • 2020-06-21
    • 1970-01-01
    • 2018-08-20
    • 2021-11-24
    • 2020-04-25
    • 2016-10-07
    相关资源
    最近更新 更多