【发布时间】:2023-03-08 16:08:02
【问题描述】:
如何在 AWS Lambda 中维护会话状态?例如,如果我需要查询 DynamoDb 以获取登录用户的订阅信息,如果用户使用的是 AngularJS 网络,我该如何从 Lambda 函数中执行此操作应用?
我让用户使用 Auth0 和一个在 AWS 上验证用户的自定义授权方登录。但后来我想使用登录用户的CognitoID 来查询DynamoDB。
根据 Lambda (node.js) (https://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-context.html) 的 AWS 文档,当通过 AWS 移动开发工具包调用时,您只有有关 Amazon Cognito 身份提供商的信息。
identity.cognitoIdentityId
identity.cognitoIdentityPoolId
但是如果我使用一个使用 AngularJS 和 Auth0 的网络应用程序呢?
好的,也许最简单的在 DynamoDB 中存储用户信息的解决方案就是在客户端,在 AngularJS 中提取 JWT,然后发送提取的 Auth0 user_id — 例如 @987654325 @— 在对 Lambda 的 API 请求中,它会查询用户是否存在于 DynamoDB 中,如果不存在则创建新记录。
然后,在对必须查询用户信息的 API 的每个请求中,我发送 user_id 并在 Lambda 中使用该 ID 查询数据库。它应该是安全的,因为我在 Custom Authorizer 中验证用户令牌并在请求到达 Lambda 之前拒绝或允许请求。
【问题讨论】:
标签: amazon-web-services lambda aws-lambda auth0