【发布时间】:2019-05-29 14:55:24
【问题描述】:
我正在为我的 aws 无服务器应用程序使用 custom authorizer。
我有一个认知用户池。我要完成的工作流程是
- 客户端登录到 cognito 用户池
- 客户端获取令牌
id_token以进行未来的 api 调用 - 用户在我的 getUserInfo api 端点上发出 GET 请求,并传递令牌
- lambda 函数使用令牌来验证 a) 用户是否已登录,以及 b) 用户的令牌是否与正在请求其信息的
user_name匹配
我的理解是#4可以通过基于this aws documentation.查询context对象的authorizer.principalId属性来完成
但是,当我测试端点时,我在 python lambda 中的上下文对象不包含此授权者属性。
来自 CloudWatch 的 context 对象的属性转储如下:
{'aws_request_id': 'a37a1735-0ef3-*****-7fb1226218fe', 'log_group_name': '/aws/lambda/****', 'log_stream_name': '2019/01/03/[$LATEST]cca175ae1ff64cb699******', 'function_name': '*****getUser', 'memory_limit_in_mb': '1024', 'function_version': '$LATEST', 'invoked_function_arn': 'arn:aws:lambda:us-east-1:*********getUser', 'client_context': None, 'identity': <__main__.CognitoIdentity object at 0x7f1caf1bbdd8>}
我的 python lambda 格式为:
def getUser(event, context):
print(context)
print(context.__dict__)
print(context.authorizer)
print(context.identity.__dict__)
print(event.__dict__)
...
如何让我的 lambda 检索所需的信息,以便我可以从传入的令牌验证用户名?
【问题讨论】:
-
您在使用 Lambda 代理集成吗?
-
@dashmug 是的。我刚刚发现有关 cognito 用户池的授权信息被嵌入为 event['requestContext']['authorizer']
-
是的。那应该回答你的问题。
标签: aws-lambda aws-api-gateway boto3 amazon-cognito