Amazon web services 将自定义授权逻辑与AWS Cognito身份验证一起使用

Amazon web services 将自定义授权逻辑与AWS Cognito身份验证一起使用,amazon-web-services,lambda,amazon-cognito,aws-cognito,Amazon Web Services,Lambda,Amazon Cognito,Aws Cognito,我们有一个Cognito用户池,其中包含我们希望允许访问API的用户。我们的API使用Lambda函数为端点提供服务。Cognito池配置了一个自定义字段roles,它本质上是用户拥有的一个逗号分隔的角色列表 现在,首先,我们希望进行Cognito身份验证(以确定用户是否属于我们的池以及凭据是否有效)。然后,我们以某种方式希望运行自定义逻辑,该逻辑将查看通过声明接收的角色字段,然后根据内部业务逻辑允许或拒绝请求 我们尝试使用自定义授权器来实现此逻辑,并将其设置为端点的授权器。然后,我们为这个au

我们有一个Cognito用户池,其中包含我们希望允许访问API的用户。我们的API使用Lambda函数为端点提供服务。Cognito池配置了一个自定义字段
roles
,它本质上是用户拥有的一个逗号分隔的角色列表

现在,首先,我们希望进行Cognito身份验证(以确定用户是否属于我们的池以及凭据是否有效)。然后,我们以某种方式希望运行自定义逻辑,该逻辑将查看通过声明接收的
角色
字段,然后根据内部业务逻辑允许或拒绝请求

我们尝试使用自定义授权器来实现此逻辑,并将其设置为端点的授权器。然后,我们为这个authorizer函数启用了Cognito授权。问题在于,由于Cognito保护API端点,而不是lambda函数本身,因此当命中API端点并调用自定义授权器时,Cognito授权根本不会运行


我们如何实现通过Cognito授权使用定制逻辑的目标?如果您在
$context.authorizer.claims.property
下使用cognito authorizers,则用户令牌中的所有声明都可以在上下文中获得,如果您在
$context.authorizer.claims.property下使用cognito authorizers,则可以将该声明映射到您的lambda函数中并检查角色是否正确在lambda工作开始时为您演示?

您所说的“问题在于,由于Cognito保护API端点,而不是lambda函数本身,因此当命中API端点并调用自定义授权器时,Cognito授权根本不会运行。”lambda授权者通过API网关受到Cognito授权的保护。(HTTP事件)。但是我们通过自定义授权器设置(请求事件类型)执行它。因此,在运行自定义授权程序之前,根本不会调用Cognito授权。