代码之家  ›  专栏  ›  技术社区  ›  Edwin Evans

用Chalice和Cognito授权人创建的API返回__unauthorized__

  •  -1
  • Edwin Evans  · 技术社区  · 7 年前

    我正在尝试使用内置的登录对话框与AWS Chalice集成Cognito。这就是我所尝试的:

    # This passes in correct arn for my pool, not xxxx
    authorizer = CognitoUserPoolAuthorizer(
        'end_users_dev', provider_arns=['arn:aws:cognito-idp:us-west-2:xxxx])
    
    @app.route('/test', cors=True, authorizer=authorizer)
    def test():
        return {"result": "Success with authorizer"}
    
    @app.route('/test2', cors=True)
    def test2():
        return {"result": "Success without authorizer"}
    

    第二个方法(test2)有效,但第一个方法(test)返回(如预期的那样):

    {
        "message": "Unauthorized"
    }
    

    现在,我尝试通过传入一个头来使具有授权的测试工作:

    Authorization: <the token I get passed in from the 
    built in login page callback as "id_token">
    

    我可以手动验证JWT令牌内容和签名,并且用户池在API网关中显示为测试资源的“授权”,但我仍然收到相同的“未授权”消息。我错过了什么?

    (注:我也在 https://forums.aws.amazon.com/message.jspa?messageID=871715#871715 但2天内没有收到任何回复)

    1 回复  |  直到 6 年前
        1
  •  3
  •   Ryan Breece    6 年前

    我会检查以确保您的IAM政策圣杯正在运行,允许访问认知。

    您可以根据需要将这些从AmazonCognitoPowerUser策略添加到您的策略中。

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "cognito-identity:*",
                    "cognito-idp:*",
                    "cognito-sync:*",
                    "iam:ListRoles",
                    "iam:ListOpenIdConnectProviders",
                    "sns:ListPlatformApplications"
                ],
                "Resource": "*"
            }
        ]
    }
    

    见以下链接“

    无论何时使用chalice部署应用程序,自动生成的策略都会写入磁盘,地址为/.chalice/policy.json。运行chalice deploy命令时,还可以指定--no autogen策略选项。这样做将导致chalice cli加载/.chalice/policy.json文件,并将该文件用作IAM角色的策略。如果您想完全控制与IAM角色关联的IAM策略,可以手动编辑此文件并指定--no autogen策略。

    如政策部分所示: https://github.com/aws/chalice

    $ chalice gen-policy
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Action": [
            "s3:ListAllMyBuckets"
          ],
          "Resource": [
            "*"
          ],
          "Effect": "Allow",
          "Sid": "9155de6ad1d74e4c8b1448255770e60c"
        }
      ]
    }
    
    推荐文章