javascript - origin - aws call api gateway from lambda
AWS API Gateway UnrecognizedClientException con Javascript SDK generado (1)
He resuelto mi problema, así que aquí está la respuesta para cualquiera que se encuentre con un error lógico similar. NO use el token Id como su token de sesión, que es lo que estaba haciendo. El token de identificación se usa para generar el token de sesión, junto con la clave de acceso y la clave secreta. No confundas los dos.
Me encuentro con un código de estado 403 con una x-amzn-errortype
UnrecognizedClientException
en el encabezado x-amzn-errortype
de la respuesta a mi solicitud API GET Request usando el JavaScript SDK generado. El recurso al que se llama utiliza IAM Auth, que diferencia la función de los usuarios en función de su grupo de usuarios.
Aquí está mi función de inicialización del cliente API
function initializeAPIClient(accessKey, secretKey, sessionToken){
var config = {
region : region,
accessKey : accessKey,
secretKey : secretKey,
sessionToken : sessionToken
}
apigClient = apigClientFactory.newClient(config);
}
Aquí está mi función de solicitud GET
function testCall(){
var params = '''';
var body = '''';
var additionalParams = '''';
apigClient.testCallGet(params, body, additionalParams)
.then(function(result){
alert("Permissions are available to this user.");
})
.catch(function(result){
alert("Permissions are NOT available to this user.");
});
}
Aquí están mis encabezados de solicitud:
:authority:[API_ENDPOINT]
:method:GET
:path:/[STAGE]/[RESOURCE]
:scheme:https
accept:application/json
accept-encoding:gzip, deflate, sdch, br
accept-language:en-US,en;q=0.8
authorization:AWS4-HMAC-SHA256 Credential=[ACCESS_KEY_ID]/20170406/[REGION]/execute-api/aws4_request, SignedHeaders=accept;host;x-amz-date, Signature=[SIGNATURE]
origin:http://localhost:8000
referer:http://localhost:8000/php/[PAGE].php/?username=[USERNAME]&sessionToken=[SESSION_TOKEN]
user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
x-amz-date:20170406T180808Z
x-amz-security-token:[SESSION_TOKEN]
No estoy seguro de qué podría estar causando esto. Las soluciones recomendadas cuando busco UnRecognizedClientException parecen sugerir hacer lo que ya estoy haciendo.