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-08-02 GMT+08:00

Autenticação de um ID de aplicação

Descrição

Esta API é usada para autenticar um ID de aplicação Depois que a autenticação é bem-sucedida, um token de acesso é gerado. Para obter detalhes sobre a autenticação de ID de aplicação, consulte Introdução à autenticação de ID de aplicação.

  • Quando clientType é definido como 72, até 64 tokens podem ser criados para cada usuário. Se 64 tokens foram criados usando um ID de usuário e os tokens são válidos, criar um novo token usando a mesma conta invalidará o token mais anterior entre os primeiros 64 tokens.
  • Quando clientType não é definido como 72, apenas um token pode ser criado para cada ID de usuário.
  • Um token é válido por 12 a 24 horas.

Depuração

Você pode depurar essa API no API Explorer.

Protótipo

Tabela 1 Protótipo

Método de solicitação

POST

Endereço de solicitação

/v2/usg/acs/auth/appauth

Protocolo de transporte

HTTPS

Parâmetros de solicitação

Tabela 2 Parâmetros

Parâmetro

Obrigatório

Tipo

Localização

Descrição

Authorization

Sim

String

Cabeçalho

Informações de autenticação da aplicação.

  • Regra: HMAC-SHA256 signature=HexEncode(HMAC256((appId + ":" + userId + ":" + expireTime + ":" + nonce), appKey))
  • Exemplo: HMAC-SHA256 signature=07f31aa9eafb06652c6899248b145c1a3264242e2ccf4c81b1b6eb99bb5c

Se userId for transportado, o corpo da solicitação deverá carregar o mesmo userId.

Content-Type

Sim

String

Cabeçalho

Formato de mídia do corpo.

  • Exemplo: application/json; charset=UTF-8

X-Request-ID

Não

String

Cabeçalho

ID da solicitação, que é usado para rastreamento e localização de falhas. Recomendamos que você use um identificador universalmente exclusivo (UUID). Se este parâmetro não for transportado, um ID de solicitação é gerado automaticamente.

Accept-Language

Não

String

Cabeçalho

Idioma. Valores: zh-CN para chinês (padrão) e en-US para inglês.

appId

Sim

String

Corpo

ID de aplicação. Para obter detalhes sobre como obter um ID da aplicação, consulte Solicitação de um ID da aplicação.

clientType

Sim

Integer

Corpo

Tipo da conta usada para fazer logon.

  • 72: chamada de API.

corpId

Não

String

Corpo

ID da empresa. (Quando este parâmetro é transportado nos cenários de aplicação de SP, se os parâmetros corpId e userId não forem transportados ou forem nulos, o sistema considera que o administrador do SP efetua logon no sistema por padrão.)

expireTime

Sim

Long

Corpo

Carimbo de data/hora quando as informações de autenticação da aplicação expiram, em segundos. (Se o carimbo de data/hora UNIX do servidor for maior que expireTime quando a solicitação de autenticação da aplicação for recebida, a autenticação falhará.) Exemplo: para que as informações de autenticação da aplicação expirem em 10 minutos, defina expireTime como a soma do carimbo de data/hora UNIX atual mais 60 x 10. Para tornar as informações de autenticação da aplicação sempre válidas, defina expireTime como 0.

nonce

Sim

String

Corpo

Cadeia de caracteres aleatórios, que é usada para calcular informações de autenticação da aplicação.

maxLength: 64

minLength: 32

userEmail

Não

String

Corpo

Endereço de e-mail.

NOTA:

Este parâmetro é válido somente quando é transportado durante a primeira autenticação de logon.

userId

Não

String

Corpo

ID do usuário. (Se o campo userId não for transportado ou estiver definido como uma cadeia de caracteres vazia, o usuário efetuará logon como o administrador empresarial padrão.)

userName

Não

String

Corpo

Nome do usuário.

NOTA:

Este parâmetro é válido somente quando é transportado durante a primeira autenticação de logon.

userPhone

Não

String

Corpo

Número de celular.

NOTA:

Este parâmetro é válido somente quando é transportado durante a primeira autenticação de logon.

deptCode

Não

String

Corpo

Código do departamento. Obtenha o valor chamando a API para consultar um departamento e seus subdepartamentos de nível 1.

Códigos de status

Tabela 3 Códigos de status

Código de status HTTP

Descrição

200

Operação bem-sucedida.

400

Parâmetros inválidos.

401

Acesso negado.

403

Permissões insuficientes.

412

A conta foi desativada.

423

A conta foi bloqueada.

500

Exceção do servidor.

Parâmetros de resposta

Tabela 4 Parâmetros de resposta

Parâmetro

Tipo

Descrição

accessToken

String

Token de acesso.

clientType

Integer

Tipo da conta usada para fazer logon.

  • 72: chamada de API.

createTime

Long

Carimbo de data/hora quando o token foi criado, em milissegundos.

daysPwdAvailable

Integer

Período de validade de senha.

delayDelete

Boolean

Se a exclusão do token está atrasada.

expireTime

Long

Carimbo de data/hora quando o token expira, em segundos.

firstLogin

Boolean

Se o logon é o primeiro logon.

NOTA:

Se você fizer logon no sistema pela primeira vez, o sistema solicitará que você altere a senha inicial.

Valor padrão: false.

forceLoginInd

Integer

Se o logon preventivo está ativado.

  • 0: desativado.
  • 1: ativado. (Este valor não é fornecido.)

proxyToken

ProxyTokenDTO object

Informações de autenticação do proxy.

pwdExpired

Boolean

Se a senha expirou.

Valor padrão: false.

refreshCreateTime

Long

Carimbo de data/hora quando o token foi atualizado, em milissegundos.

refreshExpireTime

Long

Carimbo de data/hora quando o token atualizado expirou, em segundos.

refreshToken

String

Token atualizado.

refreshValidPeriod

Long

Período de validade do token atualizado, em segundos.

tokenIp

String

Endereço IP do usuário de logon.

tokenType

Integer

Tipo de token.

  • 0: token de acesso do usuário.
  • 1: token de controle de reunião.
  • 2: token único.

user

UserInfo object

Detalhes de autenticação do usuário.

validPeriod

Long

Período de validade de um token, em segundos.

Exemplo de solicitação

POST /v2/usg/acs/auth/appauth
Connection: keep-alive
Content-Type: application/json
X-Request-ID: 5162fa32dc7e47afafeee39a72a2eec3
Accept-Language: zh-CN
Host: api.meeting.huaweicloud.com
Authorization: HMAC-SHA256 signature=3eca3f0f1e90ed55de38388066d02f1b7a86571a8ce30823af1df7c4edd7e086
User-Agent: Apache-HttpClient/4.5.3 (Java/1.8.0_191)

{
    "appId": "fdb8e4699586458bbd10c834872dcc62",
    "clientType": 72,
    "expireTime": 1627722929,
    "nonce": "EycLQsHwxhzK9OW8UEKWNfH2I3CGR2nINuU1EBpQ1627722929",
    "userEmail": "testuser@mycorp.com",
    "userId": "testuser@mycorp.com",
    "userName": "testuser",
    "userPhone": "173****9092"
}

Exemplo de resposta

HTTP/1.1 200 
 "X-Envoy-Upstream-Service-Time": "230",
 "Server": "api-gateway",
 "X-Request-Id": "085d1f96cd9ddd6f3c50d70a0b2eb239",
 "X-Content-Type-Options": "nosniff",
 "Connection": "keep-alive",
 "X-Download-Options": "noopen",
 "Pragma": "No-cache",
 "Date": "Sat, 31 Jul 2021 06:18:07 GMT",
 "X-Frame-Options": "SAMEORIGIN",
 "Strict-Transport-Security": "max-age=31536000; includeSubDomains",
 "Cache-Control": "no-cache",
 "X-Xss-Protection": "1; mode=block",
 "Content-Security-Policy": "connect-src 'self' *.huaweicloud.com ;style-src 'self' 'unsafe-inline' 'unsafe-eval';object-src 'self'; font-src 'self' data:;",
 "Expires": "Thu, 01 Jan 1970 00:00:00 GMT",
 "Content-Length": "1250",
 "Content-Type": "application/json"

{
    "accessToken":"cnr1316vcp2ceIkbfko3z13Y2J8UdioOw0ER4kTK",
    "tokenIp":"49.4.112.60",
    "validPeriod":56326,
    "expireTime":1627768613,
    "createTime":1627712287360,
    "utcTime":1627712287373,
    "user":{
        "realm":"huaweicloud.com",
        "userId":"53e2759d388e413abf6a56743a2694c5",
        "ucloginAccount":"Auto-53e2759d388e413abf6a56743a2694c5",
        "serviceAccount":"sip:+99111283523475338@huaweicloud.com",
        "sn":"",
        "numberHA1":"065eb94e5b090f70c77d4d1439f35b8e",
        "alias1":null,
        "companyId":"651543334",
        "spId":"8a8df0a174a1c6680174a26f578b0000",
        "companyDomain":null,
        "userType":2,
        "adminType":2,
        "name":"testuser@mycorp.com",
        "nameEn":"",
        "isBindPhone":null,
        "freeUser":false,
        "thirdAccount":"testuser@mycorp.com",
        "visionAccount":null,
        "headPictureUrl":null,
        "password":null,
        "status":0,
        "paidAccount":null,
        "paidPassword":null,
        "weLinkUser":false,
        "appId":"fdb8e4699586458bbd10c834872dcc62",
        "tr069Account":null,
        "corpType":5,
        "cloudUserId":"",
        "grayUser":true,
        "phoneOrEmailLogin":false,
        "weChatName":null
    },
    "clientType":72,
    "forceLoginInd":null,
    "firstLogin":false,
    "pwdExpired":false,
    "daysPwdAvailable":-19678,
    "proxyToken":null,
    "tokenType":0,
    "refreshToken":"cnr13168neNyRDfomYEIci7zVjBBybZQG90fYdX2",
    "refreshValidPeriod":2592000,
    "refreshExpireTime":1630304287,
    "refreshCreateTime":1627712287360,
    "bindInfo":null
}

Códigos de erro

Se um código de erro começando com MMC ou USG for retornado quando você usar essa API, corrija a falha seguindo as instruções fornecidas no Centro de erros da API da Huawei Cloud.

Exemplo de comando cURL

curl -k -i -H 'content-type: application/json' -X POST  -H 'Content-Type: application/json,Accept-Language: zh-CN,Authorization: HMAC-SHA256 signature=198c3046dbdafa9d89ce917c5613c29fda855da2aa79f8f51f2871e88fdba91c' -d '{"appId": "d5e1785afbe44c2588b642446652489e","clientType": 72,"corpId": "807074304","expireTime": 1597824907000,"nonce": "EycLQsHwxhzK9OW8UEKWNfH2I3CGR2nINuU1EBpQ","userEmail": "alice@huawei.com","userId": "alice@ent01","userName": "alice","userPhone": "173****9092"}' 'https://api.meeting.huaweicloud.com/v2/usg/acs/auth/appauth'