Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda/ API Gateway/ Preguntas frecuentes/ Invocación a las API/ ¿Por qué veo el mensaje de error "Incorrect IAM authentication information" Cuando invoco a una API?
Actualización más reciente 2025-03-05 GMT+08:00

¿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

{    
  "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

  1. Descargue el SDK de JavaScript, vea el SDK de firma visualizado y obtenga la firma.
  2. Descomprima el paquete y abra el archivo demo.html usando un navegador.
  3. Obtenga el valor de x-sdk-date y compruebe si la diferencia entre este valor y la hora actual es de 15 minutos.

    1. Presione F12 en el teclado y elija Sources > Snippets > New snippet.
    2. 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()

  4. 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.

  5. 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.

  6. 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

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.