AWS 身份验证和日志记录

Posted

技术标签:

【中文标题】AWS 身份验证和日志记录【英文标题】:AWS Authentication and Logging 【发布时间】:2021-07-31 08:16:09 【问题描述】:

我想:

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

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

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

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

【问题讨论】:

【参考方案1】:

如果您使用 api gateway 和 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

【讨论】:

以上是关于AWS 身份验证和日志记录的主要内容,如果未能解决你的问题,请参考以下文章

使用 AWS cognito 进行匿名身份验证

如何使用 AWS 身份验证保护我的 wcf 服务

具有 Cognito 身份验证的 AWS API Gateway Lambda 函数返回 415 Unsupported Media Type

Firebase 身份验证与 AWS Cognito [关闭]

AppSync 与 AWS4 和混合身份验证类型(UserPools 和 IAM)

AWS Cognito 用户身份验证