【问题标题】:Use custom authorization logic with AWS Cognito authentication将自定义授权逻辑与 AWS Cognito 身份验证结合使用
【发布时间】:2018-05-19 01:59:52
【问题描述】:

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

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

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

我们如何实现将自定义逻辑与 Cognito 授权结合使用的目标?非常感谢这方面的任何帮助。

【问题讨论】:

  • 你的意思是“问题是,由于 Cognito 保护 API 端点而不是 lambda 函数本身,所以当 API 端点被命中并调用自定义授权方时,Cognito 授权根本不会运行。 "
  • lambda 授权者通过 API 网关受到 Cognito 授权的保护。 (HTTP 事件)。但是我们通过自定义授权设置(REQUEST 事件类型)来执行它。因此,在运行自定义授权器之前,根本不会调用 Cognito 授权。

标签: amazon-web-services lambda amazon-cognito aws-cognito


【解决方案1】:

如果您在 $context.authorizer.claims.property 下使用 cognito 授权者,则用户令牌中的所有声明都可以在上下文中使用,这些声明可以传递给您的 lambda 函数。 将该声明映射到您的 lambda 函数并检查角色是否存在在你的 lambda 开始为你工作?

【讨论】:

    猜你喜欢
    • 2017-03-12
    • 2015-05-14
    • 2017-11-23
    • 2021-06-05
    • 2019-08-07
    • 2020-04-10
    • 2019-12-08
    • 2020-04-12
    • 2021-03-23
    相关资源
    最近更新 更多