¿Por qué veo el mensaje de error "Incorrect IAM authentication information" Cuando invoco a una API?
Puede encontrar los siguientes errores relacionados con la información de autenticación de IAM:
- Incorrect IAM authentication information: verify aksk signature fail
- Incorrect IAM authentication information: AK access failed to reach the limit,forbidden
- Incorrect IAM authentication information: decrypt token fail
- Incorrect IAM authentication information: Get secretKey failed
Incorrect IAM authentication information: verify aksk signature fail
{ "error_msg": "Incorrect IAM authentication information: verify aksk signature fail, ...... "error_code": "APIG.0301", "request_id": "******" }
Causa posible
El algoritmo de firma es incorrecto, y la firma calculada por el cliente es diferente de la calculada por APIG.
Solución
- Descargue el SDK de JavaScript, vea el SDK de firma visualizado y obtenga la firma.
- Descomprima el paquete y abra el archivo demo.html usando un navegador.
- Obtenga el valor de x-sdk-date y compruebe si la diferencia entre este valor y la hora actual es de 15 minutos.
- Presione F12 en el teclado y elija Sources > Snippets > New snippet.
- Copie el siguiente código en el fragmento de script de la derecha, haga clic con el botón derecho en el nombre del fragmento de la izquierda y seleccione Run en el menú contextual. El valor que se muestra en la ficha Console es el valor de x-sdk-date.
function twoChar(s) { if (s >= 10) { return "" + s } else { return "0" + s } } function getTime() { var date = new Date(); return "" + date.getUTCFullYear() + twoChar(date.getUTCMonth() + 1) + twoChar(date.getUTCDate()) + "T" + twoChar(date.getUTCHours()) + twoChar(date.getUTCMinutes()) + twoChar(date.getUTCSeconds()) + "Z" } getTime()
- Agregue x-sdk-date a Headers y establezca otros parámetros y haga clic en Debug para obtener la firma.
Para todas las solicitudes excepto get, delete y head, agregue un cuerpo en el área Body utilizando el mismo formato que un cuerpo de solicitud real.
- Copie el comando curl en la figura de 4, ejecútelo en una interfaz de línea de comandos y, a continuación, vaya al siguiente paso.
curl -X GET "http://192.168.0.1:10000/get" -H "X-Sdk-Date: 20221208T015751Z" -H "host: 192.168.0.1:10000" -H "Authorization: SDK-HMAC-SHA256 Access=6cc7***95a8, SignedHeaders=host;x-sdk-date, Signature=4884***108a" -d $''
Si se utiliza un autorizador personalizado, reemplace Authorization en el comando curl por el nombre del autorizador.
- Compare la firma en el código local con la firma visualizada de JavaScript.
Por ejemplo, compruebe si los valores de canonicalRequest, stringToSign y authorizationHeader en el código de firma Java son los mismos que en la firma visualizada de JavaScript.
Incorrect IAM authentication information: AK access failed to reach the limit,forbidden
{ "error_msg": "Incorrect IAM authentication information: AK access failed to reach the limit,forbidden." ...... "error_code": "APIG.0301", "request_id": "******" }
Causas posibles
- El cálculo de la firma AK/SK es incorrecto.
- Las AK y SK no coinciden. Verifique si el SK es correcto.
- La autenticación de AK/SK falla durante más de cinco veces consecutivas, y el par AK/SK se bloquea durante cinco minutos. (Las solicitudes de autenticación se rechazan dentro de este período). Espere 5 minutos y reintente.
- Se utiliza un token caducado para la autenticación de token. Obtenga un nuevo token.
Solución
- Consulte Incorrect IAM authentication information: verify aksk signature fail para resolver el problema.
- Verifique si el SK es correcto.
- Espere 5 minutos y reintente.
- Obtenga un nuevo token.
Incorrect IAM authentication information: decrypt token fail
{ "error_msg": "Incorrect IAM authentication information: decrypt token fail", "error_code": "APIG.0301", "request_id": "******" }
Causa posible
El token no se puede analizar para la autenticación de IAM de la API.
Solución
- Compruebe si el token obtenido es el token de la cuenta de IAM correspondiente.
- Compruebe si el token es correcto.
- Compruebe si el token se ha obtenido en el entorno donde se invoca a la API.
Incorrect IAM authentication information: Get secretKey failed
{ "error_msg": "Incorrect IAM authentication information: Get secretKey failed,ak:******,err:ak not exist", "error_code": "APIG.0301", "request_id": "******" }
Causa posible
La AK utilizada para la autenticación de IAM de la API no existe.
Solución
Compruebe si la AK es correcta.