【问题标题】:Ceate custom fields for app client in AWS Cognito user pool and use it in Lambda function在 AWS Cognito 用户池中为应用程序客户端创建自定义字段并在 Lambda 函数中使用它
【发布时间】:2021-10-25 07:36:06
【问题描述】:

我们正在将我们的基础设施迁移到 AWS。我们正在开发一个后端层作为 Lambda 函数,并将其托管在 API Gateway 后面。我们正在使用客户端凭据流并使用客户端 ID - 机密对客户端进行身份验证。在我们向 Cognito 中的 Oauth 发送令牌请求后,它会返回一个访问令牌,我们正在使用此令牌访问 API Gateway 托管的 REST 服务。

因此,我们需要区分请求的所有者有两个目的; -首先,我们要审核输入和输出以及组织的名称(一个组织可能有不同的应用程序客户端) -其次,我们可能需要根据组织的名称在 lambda 函数中具有不同的行为。 我们希望使用客户端凭据流来更轻松地访问 API。

我认为我可以添加自定义字段并使用 JWT 访问令牌中的字段,但是,这个答案说这是不可能的。 -> https://stackoverflow.com/a/62382001

有什么建议可以根据我们可以在 cognito 端添加的信息来区分 Lambda 函数中的用户。 (我计划这个字段将属于 app-client) 或者有什么方法可以区分 API Gateway 中的用户并将信息发送到 Lambda 函数?

如果我的问题有任何不明确的部分,请写信给我,我可以澄清。 提前致谢。

一山

【问题讨论】:

  • 您是否尝试过使用身份令牌?它们具有您为用户定义的自定义属性(并配置为包含在内)。
  • 当我使用 ID 令牌时,我无法使用客户端凭据流。在使用 ID Token 的情况下;在访问 Rest API 之前应该有多个请求。首先获取 Id 令牌 -> 发送第二个请求以获取访问令牌。在客户端凭据流程中,我们只需发送客户端 ID 和密钥并获取访问令牌。
  • 这是因为客户端凭据流是为机器对机器身份验证创建的。因此,该流程中根本没有用户身份。

标签: aws-lambda aws-api-gateway amazon-cognito


【解决方案1】:

我们使用用户池作为 api 网关授权方。 当我想在 lambda 函数中查看向 Api 网关(rest-api)发出请求的用户时,我会使用这个:

event.requestContext.authorizer.claims

event.requestContext.authorizer 是这样的:

"authorizer": {
            "claims": {
                "sub": "xxx",
                "email_verified": "false",
                "iss": "https://cognito-idp.eu-central-1.amazonaws.com/xxxx",
                "cognito:username": "my_username",
                "given_name": "my_given_name_property",
                "aud": "xxx",
                "event_id": "xxx",
                "token_use": "id",
                "auth_time": "xxx",
                "custom:orgId": "my_custom_field",
                "exp": "Thu Aug 05 19:35:48 UTC 2021",
                "iat": "Thu Aug 05 07:35:48 UTC 2021",
                "email": "xxx@gmail.com"
            }
        },

【讨论】:

  • 您使用的是哪种身份验证流程?在这种情况下,您没有使用客户端 ID 和密钥吗?为了访问此信息,用户首先通过一个登录页面,然后您可以访问您在 cognito 管理控制台中定义的其他自定义字段的电子邮件。
猜你喜欢
  • 2021-04-04
  • 1970-01-01
  • 2021-08-13
  • 2019-10-07
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 2018-05-20
  • 2018-05-11
相关资源
最近更新 更多