JSON Web Tokens

Um JSON Web Token (JWT) é um padrão aberto da Web usado para autenticar e autorizar trocas de informações entre um cliente e um servidor. Quando um usuário do app faz login pela primeira vez com as credenciais de papel apropriadas, o servidor cria e retorna um JWT codificado e assinado digitalmente para uso com solicitações subsequentes. Esse processo autentica o usuário e o autoriza a acessar rotas, serviços e recursos com base no papel da conta.

O Fleet Engine exige o uso de JSON Web Tokens (JWTs) para chamadas de método de API em ambientes de baixa confiança: smartphones e navegadores.

Um JWT é originado no seu servidor, assinado, criptografado e transmitido ao cliente para interações subsequentes com o servidor até que ele expire ou não seja mais válido.

Detalhes importantes

Ao contrário das chaves de API, os JWTs têm vida curta e limitam as operações apenas àquelas que o papel está autorizado a realizar. Para mais informações sobre JWTs, consulte JSON Web Tokens na Wikipédia. Para mais detalhes sobre os papéis de acesso, consulte Papéis de conta de serviço neste guia.

Elementos JWT

Os JWTs contêm um cabeçalho e uma seção de declaração. A seção de cabeçalho contém informações como a chave privada recebida das contas de serviço e o algoritmo de criptografia. A seção de declaração contém informações como o horário de criação do JWT, o tempo de vida, os serviços que o JWT declara acessar e outras informações de autorização para definir o escopo do acesso, por exemplo, o ID do veículo de entrega.

A tabela a seguir fornece detalhes descritivos sobre os campos JWT em geral, além de informações específicas sobre onde encontrar os valores desses campos no projeto na nuvem do Fleet Engine.

Campos de cabeçalho JWT

Campo

Descrição

alg

O algoritmo a ser usado. `RS256`.

typ

O tipo de token. `JWT`.

criança

O ID da chave privada da sua conta de serviço. Esse valor está no campo private_key_id do arquivo JSON da conta de serviço. Use uma chave de uma conta de serviço com o nível correto de permissões.

Campos de declarações JWT

Campo

Descrição

iss

O endereço de e-mail da conta de serviço, encontrado no campo client_email do arquivo JSON da conta de serviço.

sub

O endereço de e-mail da conta de serviço, encontrado no campo client_email do arquivo JSON da conta de serviço.

aud

O SERVICE_NAME da sua conta de serviço, neste caso, https://fleetengine.googleapis.com/.

iat

O carimbo de data/hora de quando o JWT foi criado, especificado em segundos decorridos desde 00:00:00 UTC, January 1, 1970. Permita 10 minutos para distorção. Se o carimbo de data/hora estiver muito no passado ou no futuro, o servidor poderá informar um erro.

exp

O carimbo de data/hora de expiração do JWT, especificado em segundos decorridos desde 00:00:00 UTC, January 1, 1970. A solicitação falhará se o carimbo de data/hora estiver mais de uma hora no futuro.

autorização

Dependendo do caso de uso, pode conter deliveryvehicleid, trackingid, taskid ou taskids.

Se você especificar taskids, o escopo de autorização precisará ser uma matriz em um dos seguintes formatos:

"taskids": ["task_id_one","task_id_two"]

ou

"taskids": ["*"]

Declarações JWT do Fleet Engine

O Fleet Engine usa declarações particulares. O uso de declarações particulares garante que apenas clientes autorizados possam acessar os próprios dados.

Por exemplo, quando o servidor emite um JSON Web Token para o dispositivo móvel de um motorista, ele precisa conter a declaração vehicleid ou deliveryvehicleid com o valor do ID do veículo do motorista. Em seguida, dependendo da função do motorista, os JWTs permitem o acesso apenas ao ID do veículo específico, e não a qualquer outro ID de veículo arbitrário.

O Fleet Engine usa as seguintes declarações particulares:

Viagens on demand

  • vehicleid:
    • O SDK do Driver sempre usa essa declaração, seja em uma viagem ou em um veículo. O back-end do Fleet Engine garante que o veículo esteja associado à viagem solicitada antes de fazer a modificação.
    • O JWT pode abranger operações de veículo e de viagem, mesmo que não sejam obrigatórias, o que pode simplificar a implementação da assinatura do JWT.
  • tripid:
    • O SDK do Consumidor sempre usa essa declaração.
    • O JWT pode abranger operações de veículos e viagens, mesmo que não seja obrigatório, o que pode simplificar a implementação da assinatura de tokens.

Tarefas agendadas

  • deliveryvehicleid

    Use ao chamar APIs por veículo de entrega.

  • taskid

    Use ao chamar APIs por tarefa.

  • taskids

    Use ao chamar BatchCreateTasksAPI. Essa declaração precisa estar em formato de matriz, e a matriz precisa conter todos os IDs de tarefa necessários para concluir a solicitação. Não inclua declarações delivervehicleid, trackingid ou taskid.

  • trackingid

    Use ao chamar o GetTaskTrackingInfoAPI. A declaração precisa corresponder ao ID de rastreamento na solicitação. Não inclua declarações delivervehicleid, taskid ou taskids.

A seguir