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.
Cómputo
Elastic Cloud Server
Bare Metal Server
Auto Scaling
Image Management Service
Dedicated Host
FunctionGraph
Cloud Phone Host
Huawei Cloud EulerOS
Redes
Virtual Private Cloud
Elastic IP
Elastic Load Balance
NAT Gateway
Direct Connect
Virtual Private Network
VPC Endpoint
Cloud Connect
Enterprise Router
Enterprise Switch
Global Accelerator
Gestión y gobernanza
Cloud Eye
Identity and Access Management
Cloud Trace Service
Resource Formation Service
Tag Management Service
Log Tank Service
Config
Resource Access Manager
Simple Message Notification
Application Performance Management
Application Operations Management
Organizations
Optimization Advisor
Cloud Operations Center
Resource Governance Center
Migración
Server Migration Service
Object Storage Migration Service
Cloud Data Migration
Migration Center
Cloud Ecosystem
KooGallery
Partner Center
User Support
My Account
Billing Center
Cost Center
Resource Center
Enterprise Management
Service Tickets
HUAWEI CLOUD (International) FAQs
ICP Filing
Support Plans
My Credentials
Customer Operation Capabilities
Partner Support Plans
Professional Services
Análisis
MapReduce Service
Data Lake Insight
CloudTable Service
Cloud Search Service
Data Lake Visualization
Data Ingestion Service
GaussDB(DWS)
DataArts Studio
IoT
IoT Device Access
Otros
Product Pricing Details
System Permissions
Console Quick Start
Common FAQs
Instructions for Associating with a HUAWEI CLOUD Partner
Message Center
Seguridad y cumplimiento
Security Technologies and Applications
Web Application Firewall
Host Security Service
Cloud Firewall
SecMaster
Data Encryption Workshop
Database Security Service
Cloud Bastion Host
Data Security Center
Cloud Certificate Manager
Situation Awareness
Managed Threat Detection
Blockchain
Blockchain Service
Servicios multimedia
Media Processing Center
Video On Demand
Live
SparkRTC
Almacenamiento
Object Storage Service
Elastic Volume Service
Cloud Backup and Recovery
Storage Disaster Recovery Service
Scalable File Service
Volume Backup Service
Cloud Server Backup Service
Data Express Service
Dedicated Distributed Storage Service
Contenedores
Cloud Container Engine
SoftWare Repository for Container
Application Service Mesh
Ubiquitous Cloud Native Service
Cloud Container Instance
Bases de datos
Relational Database Service
Document Database Service
Data Admin Service
Data Replication Service
GeminiDB
GaussDB
Distributed Database Middleware
Database and Application Migration UGO
TaurusDB
Middleware
Distributed Cache Service
API Gateway
Distributed Message Service for Kafka
Distributed Message Service for RabbitMQ
Distributed Message Service for RocketMQ
Cloud Service Engine
EventGrid
Dedicated Cloud
Dedicated Computing Cluster
Aplicaciones empresariales
ROMA Connect
Message & SMS
Domain Name Service
Edge Data Center Management
Meeting
AI
Face Recognition Service
Graph Engine Service
Content Moderation
Image Recognition
Data Lake Factory
Optical Character Recognition
ModelArts
ImageSearch
Conversational Bot Service
Speech Interaction Service
Huawei HiLens
Developer Tools
SDK Developer Guide
API Request Signing Guide
Terraform
Koo Command Line Interface
Distribución de contenido y cómputo de borde
Content Delivery Network
Intelligent EdgeFabric
CloudPond
Soluciones
SAP Cloud
High Performance Computing
Servicios para desarrolladores
ServiceStage
CodeArts
CodeArts PerfTest
CodeArts Req
CodeArts Pipeline
CodeArts Build
CodeArts Deploy
CodeArts Artifact
CodeArts TestPlan
CodeArts Check
Cloud Application Engine
aPaaS MacroVerse
KooPhone
KooDrive
Centro de ayuda/ API Gateway/ Preguntas frecuentes/ Autenticación de API/ Errores comunes relacionados con la información de autenticación de IAM

Errores comunes relacionados con la información de autenticación de IAM

Actualización más reciente 2023-10-18 GMT+08:00

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

Método 1: Ver logs.

  1. Obtener la canonicalRequest calculada por APIG.

    Obtenga request_id del cuerpo del mensaje de error, busque error.log (puede ver este archivo en CLS) del nodo shubao basado en el request_id y obtenga canonicalRequest de error.log.
    2019/01/26 11:34:27 [error] 1211#0: *76 [lua] responses.lua:170: rewrite(): 473a4370fbaf69e42f9da243eb8f8c52;app-1;Incorrect IAM authentication information: verify signature fail;SDK-HMAC-SHA256 Access=071fe245-9cf6-4d75-822d-c29945a1e06a, SignedHeaders=host;x-sdk-date, Signature=b2ef2cddcef89cbfe22974c988909c1a94b1ac54114c30b8fe083d34a259e0f5;canonicalRequest:GET
    /app1/
    
    host:test.com
    x-sdk-date:20190126T033427Z
    
    host;x-sdk-date
    e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855, client: 192.168.0.1, server: shubao, request: "GET /app1 HTTP/1.1", host: "test.com"

  2. Obtenener la canonicalRequest calculada por el cliente imprimiendo logs o usando interrupciones de depuración. En la siguiente tabla se describen las funciones utilizadas para calcular la canonicalRequest en los SDK de diferentes idiomas.

    Tabla 1 Funciones para calcular la canonicalRequest en los SDK de idiomas comunes

    Idioma

    Función

    Java

    Función de Sign en com.cloud.sdk.auth.signer.DefaultSigner.class de libs/java-sdk-core-*.jar

    C

    Función sig_sign de signer.c

    C++

    Función Signer::createSignature de signer.cpp.

    C#

    Función de Sign en signer.cs

    Go

    Función de Sign en el signer.go

    JavaScript

    Función de Signer.prototype.Sign de signer.js

    Python

    Función de Sign en el signer.py

    PHP

    Función de Sign en el signer.php

    Ejemplo: canonicalRequest obtenida en una interrupción de depuración

    POST 
    /app1/  
    
    host:test.com 
    x-sdk-date:20190126T033950Z  
    
    host;x-sdk-date 
    e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

  3. Compruebe si el canonicalRequest de 1 es el mismo que el de 2.

    • Sí: Compruebe si las AK y SK son correctas, por ejemplo, sin espacios.
    • No:
      • Diferente en la línea 1: El método de solicitud debe ser el mismo.
      • Diferente en la línea 2: La ruta de la solicitud debe ser la misma.
      • Diferente en la línea 3: Los parámetros de solicitud deben ser los mismos.
      • Diferente en las líneas 4 a 5: El encabezado de solicitud debe ser el mismo en cada línea.
      • Diferente en la línea 7: El número de parámetros de cabecera de solicitud debe ser el mismo que el número de líneas de cabecera de solicitud.
      • Diferente en la línea 8: El cuerpo de la solicitud debe ser el mismo.
    Tabla 2 canonicalRequest de APIG y un cliente

    N.º de línea

    Parámetro

    APIG

    Cliente

    1

    Request method

    GET

    POST

    2

    Request path

    /app1/

    /app1/

    3

    Request parameters

    No hay

    No hay

    4

    Request header

    host:test.com

    host:test.com

    5

    Request header

    x-sdk-date:20190126T033427Z

    x-sdk-date:20190126T033950Z

    6

    Blank line

    -

    -

    7

    Request header parameters

    host;x-sdk-date

    host;x-sdk-date

    8

    Request body hash value

    e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

    e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

Method 2: Compare the local signature with the obtained one.

  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=6cc7e0042e1645c4bc954368d3b495a8, SignedHeaders=host;x-sdk-date, Signature=488409e25642fd03753a16238f89e35b466e93b3470160a9e894f53e79f2108a" -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. Resuelva el problema haciendo referencia a Incorrect IAM authentication information: verify aksk signature fail.
  • Las AK y SK no coinciden.
  • 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).
  • Se utiliza un token caducado para la autenticación de 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 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.

Utilizamos cookies para mejorar nuestro sitio y tu experiencia. Al continuar navegando en nuestro sitio, tú aceptas nuestra política de cookies. Descubre más

Comentarios

Comentarios

Comentarios

0/500

Seleccionar contenido

Enviar el contenido seleccionado con los comentarios