gpt4 book ai didi

node.js - AWS - 如何从 NodeJs Lamda 中的 token 获取用户名?

转载 作者:太空宇宙 更新时间:2023-11-03 23:57:53 26 4
gpt4 key购买 nike

我在 API 网关之后使用 NodeJs Lambda。

var AWS = require('aws-sdk');
const cognito = new AWS.CognitoIdentityServiceProvider({apiVersion: '2016-04-18'})
exports.handler = async (event) => {
const token = ...;
const username = ...;
const response = {
"username": "...",
firstname: "...",
name: "...",
email: "...",
groups: []
};
return response;
};

我添加了一个认知授权者。有token的结果是OK,没有的话结果是403。对我来说可以吗?

示例:

https://123456789.execute-api.eu-west-1.amazonaws.com/v1/user/me

返回:

{
"username": "foobar",
"firstname": "foo",
"name": "bar",
"email": "foobar@gmail.com",
"roles": [
"Admin"
]
}

* 如果 foobar 在 JWT 中,则返回 foobar;如果 toto 在 JWT 中,则返回 toto

现在,我想返回用户的用户名(来自 JWT)。我的事件是空的:

"event": {},

最佳答案

 const claims = event.requestContext.authorizer.claims;
const username = claims['cognito:username'];

在使用这个之前,我需要使用 proxyLambda

enter image description here

并为 CORS (CORB) 添加以下内容:

   const response = {
statusCode: 200,
headers: {
"Access-Control-Allow-Origin": "*"
},
body: JSON.stringify(r)
};
return response;

或其他解决方案:我不使用 proxyLamba 但您配置此: enter image description here

之后,您需要在 Lambda 中解码 JWT。

const jwtToken = event.params.header.Authorization;

关于node.js - AWS - 如何从 NodeJs Lamda 中的 token 获取用户名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56241180/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com