【问题标题】:How to generate access token for an AWS Cognito user?如何为 AWS Cognito 用户生成访问令牌?
【发布时间】:2018-08-10 07:46:37
【问题描述】:

我使用 Cognito 用户池来保护我的 API 网关。现在我想使用邮递员向我的 API 发出请求,但我需要传入授权令牌,因为 API 是安全的。是否有任何 AWS CLI 命令或 REST API 来生成身份验证令牌(通过传递用户名/密码)?我搜索了文档,但找不到任何示例。感谢您的帮助。

【问题讨论】:

    标签: amazon-web-services aws-api-gateway amazon-cognito aws-cognito


    【解决方案1】:

    您可以使用以下 CLI 命令执行此操作:

    注册用户

    aws cognito-idp sign-up --region {your-aws-region} --client-id {your-client-id} --username admin@example.com --password password123

    确认用户注册

    aws cognito-idp admin-confirm-sign-up --region {your-aws-region} --user-pool-id {your-user-pool-id} --username admin@example.com

    验证(获取令牌)

    aws cognito-idp admin-initiate-auth --region {your-aws-region} --cli-input-json file://auth.json

    auth.json 在哪里:

    {
        "UserPoolId": "{your-user-pool-id}",
        "ClientId": "{your-client-id}",
        "AuthFlow": "ADMIN_NO_SRP_AUTH",
        "AuthParameters": {
            "USERNAME": "admin@example.com",
            "PASSWORD": "password123"
        }
    }
    

    如果一切设置正确,您应该会得到这样的响应:

    {
        "AuthenticationResult": {
            "ExpiresIn": 3600,
            "IdToken": "{your-idtoken}",
            "RefreshToken": "{your-refresh-token}",
            "TokenType": "Bearer",
            "AccessToken": "{your-access-token}"
        },
        "ChallengeParameters": {}
    }
    

    【讨论】:

    • 如果我们想通过REST API获取令牌,是否需要AccessKeyId和SecretAccessKey?
    • 确保在尝试进行身份验证之前勾选“启用登录 API 以进行基于服务器的身份验证 (ADMIN_NO_SRP_AUTH)”。如果你想测试你的 API 网关和 Cognito 授权,那么请求返回的“IdToken”属性就是“授权令牌”
    • 应用程序客户端必须在没有应用程序客户端密码的情况下创建(取消选中此项)否则在调用 ForgotPassword 操作时您将不断收到以下错误错误(NotAuthorizedException):无法验证客户端的密码哈希
    • @Bingo 如果设置了应用程序客户端密码,则可以使用附加的--secret-hash 选项运行上述 CLI 命令。提供了如何将 ID + 秘密 + 选项消化成哈希值的说明here
    【解决方案2】:

    使用以下命令生成授权令牌,根据你的认知配置适当填写xxxx,

    aws cognito-idp initial-auth --auth-flow USER_PASSWORD_AUTH --client-id xxxx --auth-parameters USERNAME=xx@xx.com,PASSWORD=xxxx

    注意:您可以在适用的 cognito 用户池下使用任何一个用户名或密码。 客户端可以在通用设置下找到-->应用客户端

    AccessKeyId 和 SecretAccessKey 不是必需的,因为它在设置 aws cli 时已定义。如果未完成,请先使用以下链接进行设置 https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html

    【讨论】:

      【解决方案3】:

      有一个 AWS CLI 命令可以生成身份验证令牌。您可以为此使用InitiateAuth CLI Command

      注意:确保您已完成与预期令牌匹配的 UserPool 配置。

      【讨论】:

      • 如果我们想通过REST API获取令牌,是否需要AccessKeyId和SecretAccessKey?
      猜你喜欢
      • 1970-01-01
      • 2019-12-01
      • 2020-10-27
      • 1970-01-01
      • 2021-04-10
      • 2021-06-19
      • 2021-12-21
      • 2020-09-28
      • 2021-01-03
      相关资源
      最近更新 更多