Um token da Web JSON (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 do app faz login pela primeira vez com as credenciais de função adequadas, 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.
Para chamadas de método de API de ambientes de baixa confiança, o Fleet Engine exige o uso de JSON Web Tokens (JWTs) assinados por uma conta de serviço adequada. Os ambientes de baixa confiança incluem smartphones e navegadores. Um JWT é originado no servidor, que é um ambiente totalmente confiável. O JWT é assinado, criptografado e transmitido ao cliente para interações posteriores do servidor até expirar ou deixar de ser válido.
O back-end precisa autenticar e autorizar o Fleet Engine usando mecanismos padrão de credenciais padrão do aplicativo. Use JWTs assinados por uma conta de serviço adequada. Para uma lista de papéis de conta de serviço, consulte os papéis de conta de serviço do Fleet Engine em Noções básicas do Fleet Engine.
Por outro lado, o back-end precisa autenticar e autorizar o Fleet Engine usando mecanismos padrão de credenciais padrão do aplicativo.
Diferente 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 Wikipedia. Para mais detalhes sobre os papéis de acesso, consulte Papéis de contas 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 das contas de serviço e o algoritmo de criptografia. A seção de declaração contém informações como o tempo de criação do JWT, o tempo de vida útil, os serviços a que o JWT declara acesso e outras informações de autorização para o acesso de escopo, como 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 do Fleet Engine Cloud.
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 pode ser encontrado no campo |
Campo |
Descrição |
---|---|
iss |
O endereço de e-mail da sua conta de serviço, encontrado no campo |
sub |
O endereço de e-mail da sua conta de serviço, encontrado no campo |
aud |
|
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 um destes 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 privadas garante que apenas clientes autorizados possam acessar os próprios dados.
Por exemplo, quando o servidor emite um token da Web JSON para o dispositivo móvel de um motorista, ele precisa conter a declaração vehicleid
ou a declaração deliveryvehicleid
com o valor do ID do veículo desse 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 arbitrário.
O Fleet Engine usa as seguintes reivindicações particulares:
Viagens sob demanda
-
vehicleid
:- O SDK do motorista 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 seja 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 seja necessário, o que pode simplificar a implementação de 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 necessá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 tarefas necessários para concluir a solicitação. Não inclua as reivindicaçõesdelivervehicleid
,trackingid
outaskid
. -
trackingid
Use ao chamar o
GetTaskTrackingInfoAPI
. A declaração precisa corresponder ao ID de rastreamento na solicitação. Não inclua as reivindicaçõ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 tokens JSON da Web no seu servidor.