amazon-web-services - services - cognito token
¿Falta el token de autenticación al acceder a la puerta de enlace API? (6)
Acabo de tener el mismo problema y parece que también muestra este mensaje si no se puede encontrar el recurso.
En mi caso, había actualizado la API, pero se me olvidó volver a implementar. El problema se resolvió después de implementar la API actualizada en mi etapa.
Estoy tratando de llamar a una función Lambda a través de AWS API Gateway. Cuando menciono el tipo de autenticación NINGUNO, funciona bien pero la API se vuelve pública y cualquier persona con url puede acceder a mi API. Para que la llamada a la API sea segura, estoy usando el tipo de autenticación AWS_IAM y también adjunto la política AmazonAPIGatewayInvokeFullAccess a mi usuario, pero aparece este error:
{mensaje: "Falta el token de autenticación"}
No sé lo que me estoy perdiendo aquí.
Creo que está intentando acceder directamente al enlace de la API, esto no funcionará porque la API está protegida mediante el rol de IAM y debe proporcionar la autenticación AWS, es decir, la clave de acceso y la clave secreta.
Utilice la extensión Postman Chrome para probar su API: http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-use-postman-to-call-api.html
En primer lugar, verifique si la API que creó en la función lamda está registrada con su proyecto de AWS o no. Para eso, vaya a la puerta de enlace API en su consola de AWS. Si no está registrado, regístrelo. Esta es la causa principal de este problema.
Incluso puede ver en su archivo aws.export.js , que hay rutas correspondientes a su API [''/items'']
.
Su API debe estar presente allí, de lo contrario no agregará el token de seguridad a las solicitudes. Simplemente regístrelo en su proyecto cloud-logic en su consola para esto.
Si está ahí, entonces usa la solución mencionada
http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-use-postman-to-call-api.html
Encontré esto en los documentos:
Si se usara la autorización AWS_IAM, usted firmaría la solicitud utilizando los protocolos de la versión 4 de Signature.
Solicitud de firma con Firma Versión 4
También puede generar un SDK para su API.
Cómo generar un SDK para una API en la puerta de enlace API
Una vez que haya generado el SDK para la plataforma de su elección, el paso 6 menciona que si está utilizando las credenciales de AWS, se firmará la solicitud a la API:
Para inicializar el SDK generado por Gateway Gateway con las credenciales de AWS, use un código similar al siguiente. Si utiliza las credenciales de AWS, todas las solicitudes a la API se firmarán. Esto significa que debe establecer los encabezados de aceptación de CORS apropiados para cada solicitud:
var apigClient = apigClientFactory.newClient({ accessKey: ''ACCESS_KEY'', secretKey: ''SECRET_KEY'', });
He perdido algo de tiempo por una razón tonta:
Cuando creas una etapa, el enlace que se muestra no contiene la parte del recurso de la URL:
URL de la API: https://1111.execute-api.us-east-1.amazonaws.com/dev
API + URL DE RECURSOS https://1111.execute-api.us-east-1.amazonaws.com/dev/get-list
Faltaba el / get-list
Y, por supuesto, debe comprobar que la configuración del método tenga este aspecto:
Si habilita la autenticación AWS_IAM, debe firmar su solicitud con las credenciales de AWS utilizando la versión 4 de AWS Signature .
Nota : iniciar sesión en la consola de AWS no firma automáticamente las solicitudes de su navegador a su API.