Um JSON Web Token (JWT) é um padrão da Web aberto usado para autenticar e autorizar trocas de informações entre um cliente e um servidor. Quando um usuário de app faz login pela primeira vez com as credenciais de papel adequadas, o servidor cria e retorna um JWT codificado e assinado digitalmente para uso em 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 de ambientes de baixa confiança: smartphones e navegadores.
Um JWT é originado no seu servidor, assinado, criptografado e transmitido ao cliente para interações subsequentes do servidor até expirar ou não ser mais válido.
Detalhes importantes
- Use Application Default Credentials para autenticar e autorizar o Fleet Engine.
- Use uma conta de serviço adequada para assinar JWTs. Consulte Papéis da conta de serviço do Fleet Engine em Noções básicas do Fleet Engine.
Ao contrário das chaves de API, os JWTs são de curta duração e limitam as operações apenas àquelas que o papel está autorizado a executar. Para mais informações sobre JWTs, consulte JSON Web Tokens na Wikipédia. Para detalhes sobre papéis de acesso, consulte Papéis da 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 obtida de 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 time to live (TTL), os serviços que o JWT declara acesso 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, bem como informações específicas sobre onde encontrar os valores desses campos no seu projeto na nuvem do Fleet Engine.
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. Você pode encontrar esse valor no
|
Campo |
Descrição |
|---|---|
iss |
O endereço de e-mail da sua conta de serviço, encontrado no
|
sub |
O endereço de e-mail da sua conta de serviço, encontrado no
|
aud |
O |
iat |
O carimbo de data/hora em que o JWT foi criado, especificado em segundos
decorridos desde 00:00:00 |
exp |
O carimbo de data/hora em que o JWT expira, especificado em segundos decorridos
desde |
autorização |
Dependendo do caso de uso, pode conter Se você especificar taskids, o escopo de autorização precisa ser uma matriz em uma das seguintes formas: "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 a
deliveryvehicleid declaração com o valor do ID do veículo desse motorista. Em seguida, dependendo do papel do motorista, os JWTs permitem o acesso apenas para o ID do veículo específico e não para qualquer outro ID de veículo arbitrário.
O Fleet Engine usa as seguintes declarações particulares:
Viagens sob demanda
-
vehicleid:- O Driver SDK sempre usa essa declaração, seja operando em uma viagem ou 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 viagem mesmo que não sejam necessárias, o que pode simplificar a implementação da assinatura JWT.
-
tripid:- O Consumer SDK sempre usa essa declaração.
- O JWT pode abranger operações de veículo e viagem, mesmo que não sejam necessárias, o que pode simplificar a implementação da assinatura de token implementação.
Tarefas agendadas
-
deliveryvehicleidUse ao chamar APIs por veículo de entrega.
-
taskidUse ao chamar APIs por tarefa.
-
taskidsUse ao chamar
BatchCreateTasksAPI. Essa declaração precisa estar no formato de matriz, e a matriz precisa conter todos os IDs de tarefa necessários para concluir a solicitação. Não inclua declaraçõesdelivervehicleid,trackingid, outaskid. -
trackingidUse ao chamar a
GetTaskTrackingInfoAPI. A declaração precisa corresponder ao ID de rastreamento na solicitação. Não inclua declaraçõesdelivervehicleid,taskid, outaskids.
A seguir
- Leia sobre o design de segurança do Fleet Engine para entender o fluxo de autenticação completo.
- Saiba como emitir JSON Web Tokens do seu servidor.