Um JSON Web Token (JWT) é um padrão aberto da Web usado para autenticação. 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. 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 passado ao cliente para o próximo servidor interações até que expirem ou não sejam mais válidas. 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 deve autenticar e autorizar no Fleet Engine usando o Application Default Credentials padrão de segurança.
Ao contrário das chaves de API, os JWTs são de curta duração e limitam as operações apenas àqueles que o papel tem autorização para desempenhar. Para saber mais sobre JWTs, consulte JSON Web Tokens (em inglês) na Wikipédia. Para detalhes sobre papéis de acesso, consulte Serviço funções 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 como a chave privada extraída das contas de serviço e as algoritmo de criptografia. A seção de declaração contém informações como o o tempo de criação, o time to live (TTL) e os serviços que o JWT declara e outras informações de autorização para definir o escopo do acesso; para 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 dessas no projeto do Cloud do Fleet Engine.
Campo |
Descrição |
---|---|
alg |
O algoritmo a ser usado. "RS256". |
typ |
O tipo de token. "JWT". |
criança |
ID da chave privada da conta de serviço. É possível encontrar esse valor
|
Campo |
Descrição |
---|---|
iss |
O endereço de e-mail da sua conta de serviço, encontrado na
|
sub |
O endereço de e-mail da sua conta de serviço, encontrado na
|
aud |
O |
iat |
O carimbo de data/hora em que o JWT foi criado, especificado em segundos
decorrido desde 00:00:00 |
exp |
O carimbo de data/hora de expiração do JWT, especificado em segundos decorridos
desde |
autorização |
Dependendo do caso de uso, pode conter Ao especificar taskids, o escopo de autorização precisa ser uma matriz em um 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 reivindicações particulares garante que apenas autorizados possam acessar os próprios dados.
Por exemplo, quando seu servidor emite um JSON Web Token para o dispositivo móvel de um motorista
dispositivo, ele deve conter a declaração vehicleid
ou o
Declaração de deliveryvehicleid
com o valor do ID do veículo desse motorista. Depois,
dependendo da função do motorista, os JWTs permitem acesso apenas para o veículo específico
e nenhum outro ID arbitrário do veículo.
O Fleet Engine usa as seguintes declarações particulares:
Viagens sob demanda
-
vehicleid
:- O SDK do Driver sempre usa essa declaração, esteja você operando em uma viagem ou veículo. O back-end do Fleet Engine garante que o veículo seja associadas à viagem solicitada antes de fazer a modificação.
- O JWT pode abranger veículos e viagens operações, mesmo que não sejam necessárias, o que pode simplificar a assinatura JWT implementação.
-
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 assinatura de tokens implementação.
Tarefas agendadas
-
deliveryvehicleid
Usar ao chamar por veículo de entrega APIs de terceiros.
-
taskid
Use ao chamar APIs por tarefa.
-
taskids
Usar ao ligar
BatchCreateTasksAPI
: Essa declaração deve estar em formato de matriz, e a matriz deve conter todos os IDs de tarefas necessários para concluir o solicitação. Não incluadelivervehicleid
,trackingid
outaskid
reivindicações. -
trackingid
Use ao chamar o método
GetTaskTrackingInfoAPI
: A declaração precisa corresponder ao ID de rastreamento na solicitação. Não incluadelivervehicleid
,taskid
outaskids
reivindicações.
A seguir
- Leia sobre o design de segurança do Fleet Engine para entender a pelo fluxo de autenticação.
- Saiba como emitir JSON Web Tokens do servidor.