AWS 身份验证和日志记录

时间:2021-05-09 19:45:25

标签: api aws-lambda oauth jwt amazon-iam

我想:

  1. 使用 AWS Cognito 用户池对用户进行身份验证并向 API 网关发出请求。
  2. 有一些方法可以为不同的用户组授予不同的权限级别。
  3. 记录发出请求的用户并将用户详细信息传递给后端。

目前,我在 API 网关上使用 IAM 授权方,并使用 AWS Signature 4 对传入请求进行签名。我还使用用户池组为不同的用户授予不同的权限。

不过,我不确定如何最好地识别发出请求的用户。是否可以访问这些详细信息?记录用户名(或某个用户​​ ID)并将用户 ID 传递给 Lambda 函数后端以进一步检查?

或者使用 JWT 访问令牌和 OAuth 范围或类似的东西会更好吗?

1 个答案:

答案 0 :(得分:0)

如果你使用 api 网关和 lambda 作为代理,那么你可以访问 lambda 中的事件对象来获取相关信息。尝试获取包含

的 event.requestContext.identity
        {
            "cognitoIdentityPoolId": null,
            "accountId": null,
            "cognitoIdentityId": null,
            "caller": null,
            "sourceIp": "52.255.255.12",
            "principalOrgId": null,
            "accessKey": null,
            "cognitoAuthenticationType": null,
            "cognitoAuthenticationProvider": null,
            "userArn": null,
            "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36",
            "user": null
        },

在您的 lambda 函数中。

参考:https://github.com/awsdocs/aws-lambda-developer-guide/blob/main/sample-apps/nodejs-apig/event.json