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.
Atualizado em 2023-05-29 GMT+08:00

Vinculação de uma chave de assinatura

Função

Uma chave de assinatura só entra em vigor após ser vinculada a uma API. Ao solicitar o serviço de back-end, o APIG usa a chave de assinatura para assinar solicitações criptograficamente. O serviço de back-end verifica a assinatura para identificar fontes de solicitação. Essa API é usada para vincular uma chave de assinatura a uma ou mais APIs publicadas. Você pode vincular chaves de assinatura diferentes a uma API em ambientes diferentes, mas pode vincular apenas uma chave de assinatura à API em cada ambiente.

URI

POST /v2/{project_id}/apigw/instances/{instance_id}/sign-bindings

Tabela 1 Parâmetros de caminho

Parâmetro

Obrigatório

Tipo

Descrição

project_id

Sim

String

ID do projeto. Para obter detalhes sobre como obter um ID de projeto, consulte "Apêndice" > "Obtenção de um ID de projeto" neste documento.

instance_id

Sim

String

ID do gateway, que pode ser obtido a partir das informações de gateway no console do APIG.

Parâmetros de solicitação

Tabela 2 Parâmetros do cabeçalho de solicitação

Parâmetro

Obrigatório

Tipo

Descrição

X-Auth-Token

Sim

String

Token do usuário. Ele pode ser obtido chamando a API do IAM usada para obter um token de usuário. O valor de X-Subject-Token no cabeçalho da resposta é um token.

Tabela 3 Parâmetros de corpo de solicitação

Parâmetro

Obrigatório

Tipo

Descrição

sign_id

Sim

String

ID da chave de assinatura.

publish_ids

Sim

Array of strings

ID do registro de publicação da API.

Parâmetros de resposta

Código de status: 201

Tabela 4 Parâmetros de corpo de resposta

Parâmetro

Tipo

Descrição

bindings

Array of SignApiBindingInfo objects

APIs vinculadas à chave de assinatura.

Tabela 5 SignApiBindingInfo

Parâmetro

Tipo

Descrição

publish_id

String

ID do registro de publicação da API.

api_id

String

ID da API.

group_name

String

Nome do grupo de APIs ao qual a API pertence.

binding_time

String

Tempo de vinculação.

env_id

String

ID do ambiente no qual a API foi publicada.

env_name

String

Nome do ambiente no qual a API foi publicada.

api_type

Integer

Tipo de API.

api_name

String

Nome da API.

id

String

ID do registro de vinculação.

api_remark

String

Descrição da API.

sign_id

String

ID da chave de assinatura.

sign_name

String

Nome da chave de assinatura. Pode conter de 3 a 64 caracteres, começando com uma letra. Apenas letras, dígitos e sublinhados (_) são permitidos.

sign_key

String

Chave de assinatura.

  • hmac: o valor contém de 8 a 32 caracteres, incluindo letras, dígitos, sublinhados (_) e hifens (-). Deve começar com uma letra ou dígito. Se não for especificado, um valor é gerado automaticamente.

  • básico: o valor contém de 4 a 32 caracteres, incluindo letras, dígitos, sublinhados (_) e hifens (-). Deve começar com uma letra. Se não for especificado, um valor é gerado automaticamente.

  • public_key: o valor contém de 8 a 512 caracteres, incluindo letras, dígitos e caracteres especiais (_-+/=). Deve começar com uma letra, dígito, sinal de adição (+), ou barra (/). Se não for especificado, um valor é gerado automaticamente.

  • aes: o valor contém 16 caracteres se o algoritmo aes-128-cfb for usado ou 32 caracteres se o algoritmo aes-256-cfb for usado. Letras, dígitos e caracteres especiais (_-!@#$%+/=) são permitidos. O valor deve começar com uma letra, dígito, sinal de adição (+), ou barra (/). Se não for especificado, um valor é gerado automaticamente.

sign_secret

String

Segredo de assinatura.

  • hmac: o valor contém de 16 a 64 caracteres. Letras, dígitos e caracteres especiais (_-!@#$%) são permitidos. Deve começar com uma letra ou dígito. Se não for especificado, um valor é gerado automaticamente.

  • básico: o valor contém de 8 a 64 caracteres. Letras, dígitos e caracteres especiais (_-!@#$%) são permitidos. Deve começar com uma letra ou dígito. Se não for especificado, um valor é gerado automaticamente.

  • public_key: o valor contém de 15 a 2048 caracteres, incluindo letras, dígitos e caracteres especiais (_-!@#$%+/=). Deve começar com uma letra, dígito, sinal de adição (+), ou barra (/). Se não for especificado, um valor é gerado automaticamente.

  • aes: o valor contém 16 caracteres, incluindo letras, dígitos e caracteres especiais (_-!@#$%+/=). Deve começar com uma letra, dígito, sinal de adição (+), ou barra (/). Se não for especificado, um valor é gerado automaticamente.

sign_type

String

Tipo de chave de assinatura.

  • hmac

  • básico

  • public_key

  • aes

Para usar uma chave básica de assinatura, certifique-se de que sua versão de gateway a suporte. Se o gateway não suportar este tipo de chave de assinatura, contacte o suporte técnico para actualizar o gateway.

Para usar uma chave de assinatura public_key, certifique-se de que o recurso public_key tenha sido configurado para o gateway. Para obter detalhes, consulte "Apêndice" > "Recursos suportados". Se o seu gateway não for compatível com esse recurso, entre em contato com o suporte técnico para habilitá-lo.

Para usar uma chave de assinatura AES, certifique-se de que sua versão de gateway a suporte. Se o gateway não suportar este tipo de chave de assinatura, contacte o suporte técnico para actualizar o gateway.

Valores de enumeração:

  • hmac

  • basic

  • public_key

  • aes

Código de status: 400

Tabela 6 Parâmetros de corpo de resposta

Parâmetro

Tipo

Descrição

error_code

String

Código de erro.

error_msg

String

Mensagem de erro.

Código de status: 401

Tabela 7 Parâmetros de corpo de resposta

Parâmetro

Tipo

Descrição

error_code

String

Código de erro.

error_msg

String

Mensagem de erro.

Código de status: 403

Tabela 8 Parâmetros de corpo de resposta

Parâmetro

Tipo

Descrição

error_code

String

Código de erro.

error_msg

String

Mensagem de erro.

Código de status: 404

Tabela 9 Parâmetros de corpo de resposta

Parâmetro

Tipo

Descrição

error_code

String

Código de erro.

error_msg

String

Mensagem de erro.

Código de status: 500

Tabela 10 Parâmetros de corpo de resposta

Parâmetro

Tipo

Descrição

error_code

String

Código de erro.

error_msg

String

Mensagem de erro.

Exemplo de solicitações

{
  "sign_id" : "0b0e8f456b8742218af75f945307173c",
  "publish_ids" : [ "40e7162dc6b94bbbbb1a60d2a24b1b0c" ]
}

Exemplo de respostas

Código de status: 201

Criado

{
  "bindings" : [ {
    "api_id" : "5f918d104dc84480a75166ba99efff21",
    "sign_secret" : "dc02fc5f30714d6bb21888389419e2b3",
    "group_name" : "api_group_001",
    "sign_id" : "0b0e8f456b8742218af75f945307173c",
    "sign_key" : "a071a20d460a4f639a636c3d7e3d8163",
    "binding_time" : "2020-08-03T04:00:11.638167852Z",
    "env_id" : "DEFAULT_ENVIRONMENT_RELEASE_ID",
    "env_name" : "RELEASE",
    "sign_name" : "signature_demo",
    "api_type" : 1,
    "api_name" : "Api_http",
    "id" : "25082bd52f74442bb1d273993d567938",
    "api_remark" : "Web backend API"
  } ]
}

Código de status: 400

Solicitação inválida

{
  "error_code" : "APIG.2012",
  "error_msg" : "Invalid parameter value,parameterName:sign_id. Please refer to the support documentation"
}

Código de status: 401

Não autorizado

{
  "error_code" : "APIG.1002",
  "error_msg" : "Incorrect token or token resolution failed"
}

Código de status: 403

Proibido

{
  "error_code" : "APIG.1005",
  "error_msg" : "No permissions to request this method"
}

Código de status: 404

Não encontrado

{
  "error_code" : "APIG.3017",
  "error_msg" : "Signature key 0b0e8f456b8742218af75f945307173c does not exist"
}

Código de status: 500

Erro do servidor interno

{
  "error_code" : "APIG.9999",
  "error_msg" : "System error"
}

Códigos de status

Código de status

Descrição

201

Criado

400

Solicitação inválida

401

Não autorizado

403

Proibido

404

Não encontrado

500

Erro do servidor interno

Códigos de erro

Consulte Códigos de erro.