如果我使用AWS Cognito用户池,则可以指定用户的角色,然后检查此用户是否具有特定角色,例如。管理员,在他/她能够访问资源之前,例如。 API网关
答案 0 :(得分:1)
您可以在Cognito用户池中使用组,并在自定义授权程序中验证用户是否在adminGroup中:
if (payload['cognito:groups'] &&
payload['cognito:groups'][0] === 'adminGroup') {
admin = true;
}
此处的有效负载是您从身份令牌获得的。如果没有cognito:groups,则该用户不在任何组中。
另一种选择是利用用户池中的自定义属性(授权器中的验证逻辑应该类似于上面的逻辑)。
其他解决方案也是可行的,但这些解决方案在用户池外部(例如,跟踪外部数据库中的用户角色)。
无论是组还是自定义属性(或其他解决方案),您都必须在自定义授权程序中验证用户角色。这样,请求将在API Gateway端点之前到达自定义Authorizer。如果用户应该是管理员,但他不是(不在adminGroup中或者没有自定义属性' admin'),则在授权人中发出拒绝策略。
希望这能回答你的问题。