我正在创建一个api,我只希望它可以访问我的身份池中经过身份验证的用户.api调用lambda函数返回"hello world".当我在我的api中没有设置身份验证时,它工作正常,但是当我创建自定义授权程序并将其设置为我的api的身份验证方法时,它返回null.
这是我做的事情清单:
我使用的是Federate标识,并确保我在authorizer.js中正确复制了标识池ID和区域.
我在创建自定义授权程序时添加了Authenticated角色,在我的联邦身份中设置,ARN成为执行角色(不确定我是否假设这样做).
在我的身份访问管理中,我将AmazonAPIGatewayInvokeFullAccess策略附加到Cognito授权角色.
当我没有传递任何标题并进行api调用时,我收到了未经授权的消息.
当我在标题中传递假令牌并进行api调用时,我收到一条空消息.
当我在标头中传递AWS提供的令牌并进行api调用时,我收到一条空消息.
当我尝试在AWS中测试api调用时,返回状态为200,并显示"Hello World"消息
任何人都知道问题是什么以及如何解决它?
-Update-
这是我从链接中的authorizer.js文件修改的区域.
console.log('Loading function');
var jwt = require('jsonwebtoken');
var request = require('request');
var jwkToPem = require('jwk-to-pem');
var userPoolId = '{REPLACE_WITH_YOUR_POOL_ID}';
var region = '{REPLACE_WITH_YOUR_REGION}'; //e.g. us-east-1
var iss = 'https://cognito-idp.' + region + '.amazonaws.com/' + userPoolId;
var pems;
Run Code Online (Sandbox Code Playgroud)
我唯一做的就是添加了我的同源userPoolId和region.
integration amazon-web-services node.js amazon-cognito aws-api-gateway