Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Computação
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
Gerenciamento e governança
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
Migração
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álises
MapReduce Service
Data Lake Insight
CloudTable Service
Cloud Search Service
Data Lake Visualization
Data Ingestion Service
GaussDB(DWS)
DataArts Studio
IoT
IoT Device Access
Outros
Product Pricing Details
System Permissions
Console Quick Start
Common FAQs
Instructions for Associating with a HUAWEI CLOUD Partner
Message Center
Segurança e conformidade
Security Technologies and Applications
Web Application Firewall
Host Security Service
Cloud Firewall
SecMaster
Anti-DDoS Service
Data Encryption Workshop
Database Security Service
Cloud Bastion Host
Data Security Center
Cloud Certificate Manager
Blockchain
Blockchain Service
Serviços de mídia
Media Processing Center
Video On Demand
Live
SparkRTC
Armazenamento
Object Storage Service
Elastic Volume Service
Cloud Backup and Recovery
Cloud Server Backup Service
Storage Disaster Recovery Service
Scalable File Service
Volume Backup Service
Data Express Service
Dedicated Distributed Storage Service
Containers
Cloud Container Engine
SoftWare Repository for Container
Application Service Mesh
Ubiquitous Cloud Native Service
Cloud Container Instance
Bancos de dados
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
Aplicações de negócios
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
Distribuição de conteúdo e computação de borda
Content Delivery Network
Intelligent EdgeFabric
CloudPond
Soluções
SAP Cloud
High Performance Computing
Serviços para desenvolvedore
ServiceStage
CodeArts
CodeArts PerfTest
CodeArts Req
CodeArts Pipeline
CodeArts Build
CodeArts Deploy
CodeArts Artifact
CodeArts TestPlan
CodeArts Check
Cloud Application Engine
MacroVerse aPaaS
KooPhone
KooDrive
Central de ajuda/ API Gateway/ Perguntas frequentes/ Autenticação da API/ Erros comuns relacionados às informações de autenticação do IAM

Erros comuns relacionados às informações de autenticação do IAM

Atualizado em 2024-09-24 GMT+08:00

Você pode encontrar os seguintes erros relacionados às informações de autenticação do 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": "******" 
}

Possível causa

O algoritmo de assinatura está incorreto e a assinatura calculada pelo cliente é diferente da calculada pelo APIG.

Solução

Método 1: ver logs.

  1. Obtenha o canonicalRequest calculado pelo APIG.

    Obtenha request_id no corpo da mensagem de erro, pesquise error.log (você pode exibir esse arquivo no CLS) do nó shubao com base em request_id e obtenha 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. Obtenha o canonicalRequest calculado pelo cliente imprimindo logs ou usando interrupções de depuração. A tabela a seguir descreve as funções usadas para calcular o canonicalRequest nos SDKs de diferentes linguagens.

    Tabela 1 Funções para calcular canonicalRequest nos SDKs de linguagens comuns

    Linguagem

    Função

    Java

    Função Sign em com.cloud.sdk.auth.signer.DefaultSigner.class de libs/java-sdk-core-*.jar

    C

    Função sig_sign em signer.c

    C++

    Função Signer::createSignature em signer.cpp.

    C#

    Função Sign em signer.cs

    Go

    Função Sign em signer.go

    JavaScript

    Função Signer.prototype.Sign em signer.js

    Python

    Função Sign em signer.py

    PHP

    Função Sign em signer.php

    Exemplo: canonicalRequest obtido em uma interrupção de depuração

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

  3. Verifique se o cannonicalRequest em 1 é o mesmo que em 2.

    • Sim: verifique se AK e SK estão corretos, por exemplo, sem espaços.
    • Não:
      • Diferente na linha 1: o método de solicitação deve ser o mesmo.
      • Diferente na linha 2: o caminho da solicitação deve ser o mesmo.
      • Diferente na linha 3: os parâmetros de solicitação devem ser os mesmos.
      • Diferente nas linhas 4 a 5: o cabeçalho da solicitação deve ser o mesmo em cada linha.
      • Diferente na linha 7: o número de parâmetros de cabeçalho da solicitação deve ser o mesmo que o número de linhas de cabeçalho da solicitação.
      • Diferente na linha 8: o corpo da solicitação deve ser o mesmo.
    Tabela 2 canonicalRequest de APIG e um cliente

    Linha nº

    Parâmetro

    APIG

    Cliente

    1

    Request method

    GET

    POST

    2

    Request path

    /app1/

    /app1/

    3

    Request parameters

    Nenhum

    Nenhum

    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

Método 2: comparar a assinatura local com a obtida.

  1. Faça o download do SDK do JavaScript, visualize o SDK de assinatura visualizado e obtenha a assinatura.
  2. Descompacte o pacote e abra o arquivo demo.html usando um navegador.
  3. Obtenha o valor de x-sdk-date e verifique se a diferença entre esse valor e a hora atual está dentro de 15 minutos.

    1. Pressione F12 no teclado e escolha Sources > Snippets > New snippet.
    2. Copie o código a seguir para o snippet de script à direita, clique com o botão direito do mouse no nome do snippet à esquerda e selecione Run no menu de atalho. O valor exibido na guia Console é o 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. Adicione x-sdk-date aos Headers, defina outros parâmetros e clique em Debug para obter a assinatura.

    Para todas as solicitações, exceto get, delete e head, adicione um corpo na área Body usando o mesmo formato de um corpo de solicitação real.

  5. Copie o comando curl na figura de 4, execute-o em uma interface de linha de comando e vá para a próxima etapa.

    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 $''

    Se um autorizador personalizado for usado, substitua Authorization no comando curl pelo nome do autorizador.

  6. Compare a assinatura no código local com a assinatura visualizada de JavaScript.

    Por exemplo, verifique se os valores de canonicalRequest, stringToSign e authorizationHeader no código de assinatura de Java são os mesmos que os da assinatura visualizada do 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": "******" 
}

Possíveis causas

  • O cálculo da assinatura de AK/SK está incorreto. Resolva o problema referindo-se a Incorrect IAM authentication information: verify aksk signature fail.
  • AK e SK não coincidem.
  • A autenticação de AK/SK falha por mais de cinco vezes consecutivas e o par de AK/SK é bloqueado por cinco minutos. (As solicitações de autenticação são rejeitadas nesse período).
  • Um token expirado é usado para autenticação de token.

Incorrect IAM authentication information: decrypt token fail

{
  "error_msg": "Incorrect IAM authentication information: decrypt token fail",
  "error_code": "APIG.0301",
  "request_id": "******"
}

Possível causa

O token não pode ser analisado para autenticação do IAM da API.

Solução

  • Verifique se o token está correto.
  • Verifique se o token foi obtido no ambiente onde a API é chamada.

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": "******"
}

Possível causa

O AK usado para autenticação do IAM da API não existe.

Solução

Verifique se o AK está correto.

Usamos cookies para aprimorar nosso site e sua experiência. Ao continuar a navegar em nosso site, você aceita nossa política de cookies. Saiba mais

Feedback

Feedback

Feedback

0/500

Conteúdo selecionado

Envie o conteúdo selecionado com o feedback