Cognito用户池用户的其他授权逻辑

时间:2017-08-13 02:58:45

标签: amazon-web-services aws-api-gateway amazon-cognito

如果我使用AWS Cognito用户池,则可以指定用户的角色,然后检查此用户是否具有特定角色,例如。管理员,在他/她能够访问资源之前,例如。 API网关

1 个答案:

答案 0 :(得分:1)

您可以在Cognito用户池中使用组,并在自定义授权程序中验证用户是否在adminGroup中:

  if (payload['cognito:groups'] &&
    payload['cognito:groups'][0] === 'adminGroup') {
    admin = true;
  }

此处的有效负载是您从身份令牌获得的。如果没有cognito:groups,则该用户不在任何组中。

另一种选择是利用用户池中的自定义属性(授权器中的验证逻辑应该类似于上面的逻辑)。

其他解决方案也是可行的,但这些解决方案在用户池外部(例如,跟踪外部数据库中的用户角色)。

无论是组还是自定义属性(或其他解决方案),您都必须在自定义授权程序中验证用户角色。这样,请求将在API Gateway端点之前到达自定义Authorizer。如果用户应该是管理员,但他不是(不在adminGroup中或者没有自定义属性' admin'),则在授权人中发出拒绝策略。

希望这能回答你的问题。