Método: delegate

Essa chamada retorna um novo JSON Web Token (JWT) de autenticação que permite que uma entidade acesse um recurso especificado em nome do usuário autenticado no JWT de autenticação original. Usado para delegar acesso limitado a wrap ou unwrap a outra entidade quando ela precisa agir em nome do usuário.

Solicitação HTTP

POST https://<base_url>/delegate

Substitua <base_url> pelo URL do serviço de lista de controle de acesso a chaves (KACLS, na sigla em inglês).

Parâmetros de caminho

Nenhum.

Corpo da solicitação

O corpo da solicitação contém uma representação JSON da solicitação:

Representação JSON
{
  "authentication": string,
  "authorization": string,
  "reason": string
}
Campos
authentication

string

Um JWT emitido por terceiros que afirma quem é o usuário. Consulte a seção de autenticação para mais detalhes.

authorization

string

Um JWT com declarações delegated_to e resource_name que afirmam que a entidade identificada pela declaração delegated_to tem permissão para acessar resource_name em nome do usuário. Para mais informações, consulte Tokens de autorização.

reason

string (UTF-8)

Uma string JSON de transmissão que fornece mais contexto sobre a operação. O JSON fornecido precisa ser limpo antes de ser exibido. Tamanho máximo: 1 KB.

Etapas de processamento necessárias

O KACLS precisa executar pelo menos estas etapas:

  • Valide os tokens de autorização e autenticação. Para mais informações, consulte Tokens de autorização e Tokens de autenticação.
  • Verifique se os tokens de autorização e autenticação são do mesmo usuário. Para mais informações, consulte Criptografar e descriptografar dados.
  • Verifique se a declaração kacls_url no token de autorização corresponde ao URL atual do KACLS. Isso permite a detecção de possíveis servidores man-in-the-middle configurados por pessoas de dentro da empresa ou administradores de domínio desonestos.
  • Se a declaração kacls_owner_domain existir no token de autorização, verifique se o valor corresponde ao domínio do Google Workspace do proprietário do KACLS. Isso ajuda a impedir que usuários não autorizados registrem seu KACLS no Google.
  • Registre a operação, incluindo o usuário que a originou, o delegated_to, o resource_name e o motivo transmitido na solicitação.
  • Gere, assine e retorne um token JWT que contenha as declarações delegated_to e resource_name do token de autorização.

O KACLS pode realizar outras verificações de segurança, incluindo as baseadas em declarações de JWT.

Corpo da resposta

Se for bem-sucedido, esse método vai retornar um JWT de autenticação com declarações de delegated_to e resource_name. Esse token pode ser usado posteriormente para autenticação em chamadas para os métodos Wrap e Unwrap. Em caso de erro, uma resposta de erro estruturada precisa ser retornada.

Representação JSON
{
  "delegated_authentication": string
}
Campos
delegated_authentication

string

Um JWT de autenticação delegada válido para acessar resource_name pelo usuário mencionado no JWT de autenticação original. Para mais informações, consulte Token de autenticação do KACLS para delegate.

Exemplo

Solicitação

POST https://mykacls.example.com/v1/delegate
{
  "authentication": "eyJhbGciOi...",
  "authorization": "eyJhbGciOi...delegated_to\":\"other_entity_id\",\"resource_name\":\"meeting_id\"...}",
  "reason": "{client:'meet' op:'delegate_access'}"
}

Resposta

{
  "delegated_authentication": "eyJhbGciOi...delegated_to_from_authz_token...resource_name_from_authz_token...}"
}