【发布时间】:2021-02-21 06:37:39
【问题描述】:
我是 AWS 新手。我正在使用 Spring Boot 开发应用程序。我使用AWS cognito 进行登录和注册。我在 cognito 中创建了一个名为 ROLE_ADMIN 的组,并与我创建的 IAM 角色 连接为 ROLE_ADMIN_IAM。
我正在使用AWS Api gateway(HTTP API,但类似的 REST API)与 API 进行通信。 然后将 Cognito jwt 授权器集成到 Api 网关中。
一切正常。我现在面临的问题是,当用户登录时,我需要根据他在认知组中的角色来阻止少数 API。所以我尝试将策略附加到 IAM 角色(ROLE_ADMIN_IAM 已创建),但它不起作用。
这是我附加到ROLE_ADMIN_IAM
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"apigateway:GET"
],
"Resource": [
"arn:aws:apigateway:ap-south-1::/apis/09bccr0"
]
}
]
}
我也尝试限制所有资源。但是不行
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "*",
"Resource": "*"
}
]
}
我担心我尝试的方式是错误的还是正确的?我已经工作了好几天了。但找不到任何解决方案。请任何人给我一个解决方案。提前致谢。
更新 1。
由于这不起作用,我创建了一个身份池并使用它附加了用户池 ID 和客户端 ID。它自动为认证用户和未认证用户创建两个角色。然后我去Api网关,把授权人改成IAM。文档本身说,当我们使用 IAM 作为授权人时,我们需要使用 Signature 4 版本。 (我从 cognito jwt 切换到 IAM,因为我没有找到任何文档或文章说我可以使用 cognito jwt用于定义角色的身份池)。
在反应应用程序中,我使用放大。当我配置身份池时,它会在成功登录后提供临时的 Accesskey 和 SecretKey。我尝试将它与邮递员 -> 授权 -> AWS 签名一起使用,它总是给出{"message":"Forbidden"}
【问题讨论】:
-
尝试创建另一个角色并授予该用户所需的特定权限。您不能在同一组中混合使用多个策略。为具有不同权限的用户使用不同的组和角色
-
我没有混合任何策略。我在删除一个后都尝试了。
-
您的身份池是否配置为使用令牌中的角色?如果不是,它将始终从池中发挥作用。
-
@AleksanderWons 我没有,在您发表评论后,我创建了。但它失败了。 Oncw 我创建了身份池,它创建了两个角色。一个用于 Auth,另一个用于 Unauth。然后我将该角色附加到用户池组中。但似乎不起作用。我需要任何特定的配置吗?
-
您需要缩小范围。很难说你做了什么,怎么错了,哪里错了。
标签: amazon-web-services aws-api-gateway amazon-cognito amazon-iam