gpt4 book ai didi

amazon-web-services - AWS Cognito Groups 和 AWS Api Gateway

转载 作者:行者123 更新时间:2023-12-01 00:25:34 25 4
gpt4 key购买 nike

我从 AWS 上的无服务器开始,我使用 AWS Cognito 进行用户身份验证和授权。对于我在文档和示例中看到的内容,您可以创建组以允许某些用户能够使用 Api 网关端点,将角色和策略附加到该组。我尝试了这个,然后制作了一个简单的客户端并尝试使用两个不同的用户,并且两者都能够获得 200 状态代码,而不是其中一个获得它是未经授权的。为了创建角色,我转到 IAM,创建角色,身份提供商访问角色,授予对 Web 身份提供商的访问权限,然后我选择 Amazon Cognito 并选择我的 Cognito 用户池。
信任关系:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "cognito-identity.amazonaws.com"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"cognito-identity.amazonaws.com:aud": "us-east-1_8TAUVKbGP"
}
}
}
]
}

政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"execute-api:Invoke"
],
"Resource": [
"my-arn-resourse-from-api-gateway"
]
}
]
}

然后我将此角色分配给我的管理员组并将用户添加到该组,这应该允许通过在用户登录时将该策略附加到该用户来访问该 Api Gateway 资源。但是当我尝试使用不在该组中的用户时仍然有效。顺便说一下,在请求中的 Api Gateway 资源上,我对我的认知池进行了授权。

非常感谢!

最佳答案

好吧,我终于让它完美地工作了!问题出在我的 IAM 角色中,在信任关系文档中

"Condition": {
"StringEquals": {
"cognito-identity.amazonaws.com:aud": "identity_pool_id"
},


在该部分中,我没有使用我的身份池 ID,而是使用了我的用户池 ID。修复后,我取回了凭据,并使用这些凭据在 Postman 中进行了尝试,并且效果很好。然后我将同一用户更改为另一个角色,但访问被按计划拒绝!以简单的方式使用角色授权最重要的部分是因为agent420说使用AWS_IAM方法来保护api,然后剩下的由aws处理。

关于amazon-web-services - AWS Cognito Groups 和 AWS Api Gateway,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45284813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com