我在 AWS 上创建了一个 RESTful API,我正在尝试测试 POST 方法。我在 api gatemway 控制台的测试界面中向请求主体提供了一个示例请求,它得到了这个响应:
{
"Error": "Authorization not configured",
"Reference": "e6b7ec86-97fe-11e7-b480-ebefe7f11420"
}
我最初将此设置为具有对相应表的读/写访问权限的 Cognito 用户池,但我收到了此错误消息。我尝试在方法中删除授权只是为了测试这个,但我又收到了这个错误。
据我所知,我已经全面设置了授权。
trusted entities: AWS service: lambda
) 和 AWSLambdaBasicExecutionRole
我觉得我一定遗漏了一些明显的东西,但是当我在这里逐步进行时,一切似乎都井井有条。非常感谢任何帮助,如果我可以提供任何其他信息,请告诉我。
我发现这个问题链接自 AWS 论坛 那里的 OP 和我在阅读 Wild Rydes 教程时都遇到了同样的问题。
我能够通过以下方式解决这个问题:
更改完成后,方法请求不应再为 auth 说 None
如果其他人遇到此问题,我只需清除浏览器上的缓存数据即可使其正常工作。
好吧,我在看完 WildRydes 教程和 Lambda 测试后就明白了。我需要将
Authorization
标头设置为当前用户的 JWT 令牌。我用以下功能做到了这一点:
getCurrentAuthToken: function (userPool) {
return new Promise(function fetchCurrentAuthToken (resolve, reject)
let cognitoUser = userPool.getCurrentUser()
if (cognitoUser) {
cognitoUser
.getSession(function sessionCallback (err, session) {
if (err) {
reject(err)
} else if (!session.isValid()) {
resolve(null)
} else {
resolve(session.getIdToken().getJwtToken())
}
})
} else {
resolve(null)
}
})
}
并使用承诺的返回值在我的请求中设置
Authorization
标头。
我已经阅读了本教程的德语版本,他们也翻译了令牌源的值,此时这是错误的。
我只需要将 API 网关中的令牌源更改为英文短语
Authorization
并再次部署 API 即可。
请确认我们需要放置以下代码的位置。
getCurrentAuthToken:函数(用户池){ 返回新的承诺(函数 fetchCurrentAuthToken(解决,拒绝) 让 cognitoUser = userPool.getCurrentUser()
if (cognitoUser) {
cognitoUser
.getSession(function sessionCallback (err, session) {
if (err) {
reject(err)
} else if (!session.isValid()) {
resolve(null)
} else {
resolve(session.getIdToken().getJwtToken())
}
})
} else {
resolve(null)
}
}) }