我想:
目前,我在 API 网关上使用 IAM 授权方,并使用 AWS Signature 4 对传入请求进行签名。我还使用用户池组为不同的用户授予不同的权限。
不过,我不确定如何最好地识别发出请求的用户。是否可以访问这些详细信息?记录用户名(或某个用户 ID)并将用户 ID 传递给 Lambda 函数后端以进一步检查?
或者使用 JWT 访问令牌和 OAuth 范围或类似的东西会更好吗?
答案 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