Aws api gateway 拒绝策略未应用于具有特定角色的cognito用户
为了在我的AWS API网关中添加安全检查,我执行了以下操作:Aws api gateway 拒绝策略未应用于具有特定角色的cognito用户,aws-api-gateway,amazon-cognito,amazon-iam,Aws Api Gateway,Amazon Cognito,Amazon Iam,为了在我的AWS API网关中添加安全检查,我执行了以下操作: 我在Amazon Cognito用户池中创建了两个组: 经理 基本用户 我并行创建了两个角色(经理和基本用户)。经理组映射到经理角色,基本用户组映射到基本用户角色 我已为特定端点GET crew manager创建了一个IAM策略,以拒绝对基本_用户的访问,并将此策略附加到基本_用户角色: { “版本”:“2012-10-17”, “声明”:[ { “效果”:“拒绝”, “行动”:[ “执行api:调用” ], “资源”:[
- 经理
- 基本用户
{
“版本”:“2012-10-17”,
“声明”:[
{
“效果”:“拒绝”,
“行动”:[
“执行api:调用”
],
“资源”:[
“arn:aws:execute api:us-east-2::/*/GET/crew manager”
]
}
]
}
我做错什么了吗?角色映射只能与API网关上的AWS IAM授权人一起工作。如果您使用的是cognito授权人,您必须在处理程序中执行授权检查,或者实现您自己的自定义授权人以返回相应的策略。当您说将角色映射到每个组时,您指的是通过标识池?从用户和组/I可以将角色添加到cognito中的组。您的意思是授权必须是在我的后端服务中处理?但是,假设我在API gateway下有10个不同的后端,使用自定义授权程序或使用AWS IAM授权程序以及标识池听起来有些过分。cognito中的组不会转换为IAM组。但是,使用cognito标识池,您可以从用户池令牌授予IAM凭据。自定义授权者听起来是最好的选择。因此,从这个客户授权人,我需要:1。从标头2中检索令牌。通过向cognito服务3发出请求,检查令牌是否已被cognito批准。进行我的个人检查(例如:组)这听起来是一个好方法吗?是的,你应该先验证令牌。选择一个支持良好的库来执行此操作。查看一个好的列表。然后根据令牌声明执行您想要的任何逻辑。是的,您传递颁发者,它将获取公钥以验证它。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"execute-api:Invoke"
],
"Resource": [
"arn:aws:execute-api:us-east-2:<my_account_id>:<API_ID>/*/GET/crew-manager"
]
}
]
}