我创建了一个包含Cognito和Cloud逻辑的AWS移动中心项目。在我的API网关中,我为授权者设置了Cognito用户池。我使用React native作为我的客户端应用程序。如何将Authorization标头添加到我的API请求中。
const request = {
body: {
attr: value
}
};
API.post(apiName, path, request)
.then(response => {
// Add your code here
console.log(response);
})
.catch(error => {
console.log(error);
});
};
答案 0 :(得分:8)
默认情况下,aws-amplify
的API模块会尝试签名请求。如果您的授权人类型为AWS_IAM
,这非常有用。
使用Cognito用户池授权程序时,这显然是不。在这种情况下,您需要传递Authorization
标头中的id_token,而不是sig4签名。
今天,您确实可以通过Authorization
标头进行放大,it will no longer overwrite it with the sig4 signature。
在您的情况下,您只需要将headers
对象添加到request
对象。例如:
async function callApi() {
// You may have saved off the JWT somewhere when the user logged in.
// If not, get the token from aws-amplify:
const user = await Auth.currentAuthenticatedUser();
const token = user.signInUserSession.idToken.jwtToken;
const request = {
body: {
attr: "value"
},
headers: {
Authorization: token
}
};
var response = await API.post(apiName, path, request)
.catch(error => {
console.log(error);
});
document.getElementById('output-container').innerHTML = JSON.stringify(response);
}
使用aws-amplify
0.4.1。