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 função 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 autoriza o acesso a rotas, serviços e recursos com base na função da conta.
O Fleet Engine exige o uso de JSON Web Tokens (JWTs) para chamadas de método da 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é expirar ou não ser mais válido.
Detalhes importantes
- Use as credenciais padrão do aplicativo para autenticar e autorizar no Fleet Engine.
- Use uma conta de serviço adequada para assinar JWTs. Consulte os papéis da conta de serviço do Fleet Engine em Fundamentos do Fleet Engine.
Ao contrário das chaves de API, os JWTs têm curta duração e limitam as operações apenas àquelas que a função está autorizada a realizar. Para mais informações sobre JWTs, consulte JSON Web Tokens na Wikipédia. Para mais 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 e o tempo de vida do JWT, os serviços a que ele declara ter acesso e outras informações de autorização para restringir o 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 seu projeto do Google Cloud 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ê encontra esse valor 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 |
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 precisará 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 seu servidor emite um JSON Web Token para um dispositivo móvel de um motorista, ele precisa conter a declaração vehicleid
ou 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 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 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 seja necessário, 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ículo e de viagem, mesmo que não seja necessário, o que pode simplificar a implementação da assinatura do token.
Tarefas agendadas
-
deliveryvehicleid
Use ao chamar APIs por veículo de entrega.
-
taskid
Usado ao chamar APIs por tarefa.
-
taskids
Use 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ções dedelivervehicleid
,trackingid
outaskid
. -
trackingid
Use ao chamar o
GetTaskTrackingInfoAPI
. A declaração precisa corresponder ao ID de rastreamento na solicitação. Não inclua declarações dedelivervehicleid
,taskid
outaskids
.
A seguir
- Leia sobre o design de segurança do Fleet Engine para entender o fluxo completo de autenticação.
- Saiba como emitir tokens JSON da Web do seu servidor.