【问题标题】:Getting Cognito ID from API Gateway, and Lambda从 API Gateway 和 Lambda 获取 Cognito ID
【发布时间】:2019-05-11 13:05:00
【问题描述】:

我正在使用 AWS Cognito、API Gateway、Lambdas 和 react.js(这是我第一次使用它们)。目前我正在实施注册/登录页面。我设法使用 Cognito 对用户进行身份验证,将带有 URL 作为标头的访问代码发送到安全的 API 网关以授予访问权限。这一切对我来说都很好。我的问题是,如何通过API网关从前端(使用React.js)发送的访问令牌中获取Cognito ID并在我的Lambda中接收它,以了解刚刚登录的用户的ID??

我发现有人在 API Gateway Integration Request 中谈论 Mapping 模板,但我不知道如何使用它??我应该在我的 lambda 中写什么来查看代码! AWS Docs 没有给出明确的例子!!

请对代码有任何帮助!!

【问题讨论】:

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


    【解决方案1】:

    如果您使用 Lambda 代理集成,您可以通过 requestContext 路径访问用户信息。

    event.requestContext.authorizer.claims
    

    在这里,您将拥有与此类似的声明正文

    {
        "sub": "gae4t3qha-ha4g-j4as-12fa-gag42aerh34",
        "cognito:groups": "group1,group2",
        "email_verified": "true",
        "cognito:preferred_role": "arn:aws:iam::12345677890:role/role1",
        "iss": "https://cognito-idp.ap-southeast-2.amazonaws.com/us-west-userpoolId2gw3e4",
        "cognito:username": "example@email.com",
        "cognito:roles": "arn:aws:iam::1234567890:role/role1,arn:aws:iam::1234567890:role/service-role/role2",
        "aud": "ga32qah34wjk4trujnsa4hy",
        "event_id": "0491fe1c-6eff-4220-ae93-582588e2af0e",
        "token_use": "id",
        "auth_time": "1564962329",
        "exp": "Mon Aug 05 00:45:29 UTC 2019",
        "iat": "Sun Aug 04 23:45:29 UTC 2019",
        "email": "example@email.com" 
      }
    

    claims.sub 充当 Cognito 的每个用户的 UUID

    【讨论】:

      猜你喜欢
      • 2017-02-04
      • 2018-08-13
      • 2016-08-11
      • 2018-02-16
      • 2018-12-16
      • 2021-05-07
      • 1970-01-01
      • 2017-12-30
      • 2020-04-21
      相关资源
      最近更新 更多