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

Obtenção de um token com um token de ID do OpenID Connect

Função

Essa API é usada para obter um token de autenticação de identidade federado usando um token de ID do OpenID Connect.

A API pode ser chamada usando o ponto de extremidade global e pontos de extremidade da região específica. Para pontos de extremidade do IAM, consulte Regiões e pontos de extremidade.

URI

POST /v3.0/OS-AUTH/id-token/tokens

Parâmetros de solicitação

Tabela 1 Parâmetros no cabeçalho da solicitação

Parâmetro

Obrigatório

Tipo

Descrição

X-Idp-Id

Sim

String

ID do provedor de identidade.

Tabela 2 Parâmetro no corpo da solicitação

Parâmetro

Obrigatório

Tipo

Descrição

auth

Sim

object

Detalhes sobre o parâmetro de solicitação auth.

Tabela 3 GetIdTokenAuthParams

Parâmetro

Obrigatório

Tipo

Descrição

id_token

Sim

object

Detalhes sobre um token de ID.

scope

Não

object

Escopo de permissão do token que você deseja obter. Um token sem escopo será obtido se esse parâmetro não for especificado.

Tabela 4 GetIdTokenIdTokenBody

Parâmetro

Obrigatório

Tipo

Descrição

id

Sim

String

Token de ID, que é construído pelo IdP empresarial para transportar as informações de identidade dos usuários federados. Para obter detalhes sobre como obter um token de ID, consulte a documentação do IdP empresarial.

Tabela 5 GetIdTokenIdScopeBody

Parâmetro

Obrigatório

Tipo

Descrição

domain

Não

object

Detalhes do escopo do domínio. Especifique um domínio ou um projeto.

project

Não

object

Detalhes do escopo do projeto. Especifique um projeto ou um domínio.

Tabela 6 GetIdTokenScopeDomainOrProjectBody

Parâmetro

Obrigatório

Tipo

Descrição

id

Não

String

ID do domínio ou ID do projeto. Especifique esse parâmetro ou o parâmetro name.

name

Não

String

Nome do domínio ou nome do projeto. Especifique este parâmetro ou o parâmetro id.

Parâmetros de resposta

Código de status: 201

Tabela 7 Parâmetros no cabeçalho da resposta

Parâmetro

Tipo

Descrição

X-Subject-Token

String

Token assinado.

Tabela 8 Parâmetros no corpo da resposta

Parâmetro

Tipo

Descrição

token

object

Detalhes sobre o token obtido.

Tabela 9 ScopedTokenInfo

Parâmetro

Tipo

Descrição

expires_at

String

Hora em que o token expirará.

NOTA:

O valor é uma hora UTC no formato AAAA-MM-DDTHH:mm:ss.ssssssZ, por exemplo, 2023-06-28T08:56:33.710000Z. Para obter detalhes sobre os formatos de data e carimbo de data/hora, consulte ISO-8601.

methods

Array of strings

Método para obter o token. Para usuários federados, o valor padrão deste parâmetro é mapped.

issued_at

String

Hora em que o token foi emitido.

NOTA:

O valor é uma hora UTC no formato AAAA-MM-DDTHH:mm:ss.ssssssZ, por exemplo, 2023-06-28T08:56:33.710000Z. Para obter detalhes sobre os formatos de data e carimbo de data/hora, consulte ISO-8601.

user

object

Detalhes do usuário.

domain

object

Detalhes da conta.

project

object

Detalhes do projeto.

roles

Array of objects

Detalhes da função ou política.

catalog

Array of objects

Detalhes do catálogo.

Tabela 10 FederationUserBody

Parâmetro

Tipo

Descrição

OS-FEDERATION

object

Detalhes do usuário federado.

domain

object

Detalhes da conta.

id

String

ID do usuário.

name

String

Nome de usuário.

Tabela 11 OSFederationInfo

Parâmetro

Tipo

Descrição

identity_provider

object

Detalhes do provedor de identidade.

protocol

object

Detalhes do protocolo.

groups

Array of objects

Detalhes do grupo de usuários.

Tabela 12 IdpIdInfo

Parâmetro

Tipo

Descrição

id

String

ID do provedor de identidade.

Tabela 13 ProtocolIdInfo

Parâmetro

Tipo

Descrição

id

String

ID do protocolo.

Tabela 14 token.user.OS-FEDERATION.groups

Parâmetro

Tipo

Descrição

id

String

ID do grupo de usuários.

name

String

Nome do grupo de usuários.

Tabela 15 token.user.domain

Parâmetro

Tipo

Descrição

id

String

ID da conta.

name

String

Nome da conta.

Tabela 16 DomainInfo

Parâmetro

Tipo

Descrição

id

String

ID da conta.

name

String

Nome da conta.

Tabela 17 ProjectInfo

Parâmetro

Tipo

Descrição

domain

object

Detalhes da conta.

id

String

ID do projeto.

name

String

Nome do projeto.

Tabela 18 token.project.domain

Parâmetro

Tipo

Descrição

id

String

ID da conta.

name

String

Nome da conta.

Tabela 19 roles

Parâmetro

Tipo

Descrição

id

String

ID de permissão.

name

String

Nome de permissão.

Tabela 20 CatalogInfo

Parâmetro

Tipo

Descrição

id

String

ID do ponto de extremidade.

interface

String

Visibilidade da API. public indica que a API está disponível para acesso público.

region

String

Região à qual o ponto de extremidade pertence.

region_id

String

ID da região.

url

String

URL do ponto de extremidade.

Exemplo de solicitação

  • Solicitação para obter um token com escopo para um projeto específico
    POST /v3.0/OS-AUTH/id-token/tokens
      
     { 
       "auth" : { 
         "id_token" : { 
           "id" : "eyJhbGciOiJSU..." 
         }, 
         "scope" : { 
           "project" : { 
             "id" : "46419baef4324...", 
             "name" : "ap-southeast-1" 
           } 
         } 
       } 
     }
  • Solicitação para obter um token com escopo para um domínio específico
    POST /v3.0/OS-AUTH/id-token/tokens
     
      
     { 
       "auth" : { 
         "id_token" : { 
           "id" : "eyJhbGciOiJSU..." 
         }, 
         "scope" : { 
           "domain" : { 
             "id" : "063bb260a480...", 
             "name" : "IAMDomain" 
           } 
         } 
       } 
     }
  • Solicitação para obter um token sem escopo
    POST /v3.0/OS-AUTH/id-token/tokens
     
      
     { 
       "auth" : { 
         "id_token" : { 
           "id" : "eyJhbGciOiJSU..." 
         } 
       } 
     }

Exemplo de resposta

Código de status: 201

O token é obtido com sucesso.

{ 
  "token" : { 
    "expires_at" : "2018-03-13T03:00:01.168000Z", 
    "methods" : [ "mapped" ], 
    "issued_at" : "2018-03-12T03:00:01.168000Z", 
    "user" : { 
      "OS-FEDERATION" : { 
        "identity_provider" : { 
          "id" : "idptest" 
        }, 
        "protocol" : { 
          "id" : "oidc" 
        }, 
        "groups" : [ { 
          "name" : "admin", 
          "id" : "45a8c8f..." 
        } ] 
      }, 
      "domain" : { 
        "id" : "063bb260a480...", 
        "name" : "IAMDomain" 
      }, 
      "name" : "FederationUser", 
      "id" : "suvmgvUZc4PaCOEc..." 
    } 
  } 
}

Código de status: 400

Parâmetros inválidos.

{ 
  "error_msg" : "Request body is invalid.", 
  "error_code" : "IAM.0011" 
}

Código de status: 401

Falha na autenticação.

{ 
  "error_msg" : "The request you have made requires authentication.", 
  "error_code" : "IAM.0001" 
}

Código de status: 403

Acesso negado.

{ 
  "error_msg" : "Policy doesn't allow %(actions)s to be performed.", 
  "error_code" : "IAM.0003" 
}

Código de status: 404

O recurso solicitado não pode ser encontrado.

{ 
  "error_msg" : "Could not find %(target)s: %(target_id)s.", 
  "error_code" : "IAM.0004" 
}

Código de status: 500

Erro do sistema interno.

{ 
  "error_msg" : "An unexpected error prevented the server from fulfilling your request.", 
  "error_code" : "IAM.0006" 
}

Códigos de status

Código de status

Descrição

201

O token é obtido com sucesso.

400

Parâmetros inválidos.

401

Falha na autenticação.

403

Acesso negado.

404

O recurso solicitado não pode ser encontrado.

500

Erro do sistema interno.

Códigos de erro

Para obter detalhes, consulte Códigos de erro.