使用Cognito用户池成功进行身份验证后,我获得了访问aws资源的临时凭据
var akey='';
var skey='';
var st='';
AWS.config.credentials.get(function (err) {
akey = AWS.config.credentials.accessKeyId;
skey = AWS.config.credentials.secretAccessKey;
st = AWS.config.credentials.sessionToken;
var identityId = AWS.config.credentials.identityId;
});
使用这些凭据我称之为使用IAM授权的API
function ViewMyBookings_With_Credentials() {
debugger;
var apigClient = apigClientFactory.newClient({
accessKey: akey,
secretKey: skey,
sessionToken: st,
region: 'ap-south-1'
});
var params = { };
var body = ''; // Get Request
var additionalParams = { };
apigClient.mybookingsGet(params, body, additionalParams)
.then(function (result) {
//This is where you would put a success callback
alert(result.data);
}).catch(function (result) {
debugger;
alert(result.data);
//This is where you would put an error callback
});
}
选项请求成功,我得到200 Ok 但是对于实际请求显示CORS错误,我确信CORS没有问题。 响应标题显示
的x AMZN-错误类型:UnrecognizedClientException X-Cache:来自cloudfront的错误
我在AWS文档中搜索了这个,但未收到任何积极响应。
One Question addressing similar issue
但答案不正确/完整,请让我知道我错过了什么。
答案 0 :(得分:1)
转到API网关>选项(适用于您的GET方法的资源)>标题映射>
答案 1 :(得分:0)
这个问题与javascript代码有关。就我而言,我正在使用python并调用安全的API。成功获得凭证。但是得到确切的指定错误。因此,回答我的问题,如果有人因同样的错误而落在这里,将非常有用。
在通话中,我必须使用auth = authenticaion()这样操作
authenticaion()
函数返回以下内容
return AWS4Auth(temp_credentials['AccessKeyId'],
temp_credentials['SecretAccessKey'],
'us-west-2',
'call-api',
temp_credentials['SessionToken'])
但是对于AWS4Auth
,会话令牌是必需的。我们必须指定它。所以下面的代码解决了我的问题
return AWS4Auth(temp_credentials['AccessKeyId'],
temp_credentials['SecretAccessKey'],
'us-west-2',
'call-api',
session_token=temp_credentials['SessionToken'])