JSON Web Token (JWT) – это открытый веб-стандарт, который используется для аутентификации и авторизации обмена информацией между клиентом и сервером. Когда пользователь приложения впервые входит в систему с учетными данными соответствующей роли, сервер создает и возвращает закодированный JWT с цифровой подписью для использования в последующих запросах. Этот процесс позволяет аутентифицировать пользователя и авторизовать его для доступа к маршрутам, сервисам и ресурсам на основе роли его аккаунта.
Для вызовов методов API из сред с низким уровнем доверия (смартфонов и браузеров) Fleet Engine требует использовать веб-токены JSON (JWT).
Токен JWT создается на вашем сервере, подписывается, шифруется и передается клиенту для последующих взаимодействий с сервером, пока не истечет срок его действия или он не станет недействительным.
Основные сведения
- Используйте Application Default Credentials для аутентификации и авторизации в Fleet Engine.
- Используйте подходящий сервисный аккаунт для подписи JWT. Подробнее о ролях сервисных аккаунтов Fleet Engine…
В отличие от ключей API, JWT имеют короткий срок действия и ограничивают операции только теми, которые разрешено выполнять роли. Дополнительную информацию о JWT можно найти в статье JSON Web Token в Википедии. Подробные сведения о ролях доступа приведены в разделе Роли сервисных аккаунтов этого руководства.
Элементы JWT
Токены JWT состоят из заголовка и раздела утверждений. Заголовок содержит такую информацию, как закрытый ключ, полученный из сервисных аккаунтов, и алгоритм шифрования. Раздел утверждений содержит такую информацию, как время создания JWT, время жизни, сервисы, к которым JWT запрашивает доступ, и другую информацию об авторизации для определения области доступа, например идентификатор транспортного средства доставки.
В таблице ниже приведены описания полей JWT в целом, а также информация о том, где найти значения для этих полей в облачном проекте Fleet Engine.
Поле |
Описание |
|---|---|
alg |
Алгоритм, который нужно использовать. `RS256`. |
typ |
Тип токена. `JWT`. |
ребенок |
Идентификатор закрытого ключа сервисного аккаунта. Это значение можно найти в поле |
Поле |
Описание |
|---|---|
iss |
Адрес электронной почты сервисного аккаунта, указанный в поле |
замена |
Адрес электронной почты сервисного аккаунта, указанный в поле |
австралийский доллар |
|
iat |
Временная метка создания JWT, указанная в секундах, прошедших с 00:00:00 |
exp |
Временная метка, указывающая, когда истекает срок действия JWT. Указывается в секундах, прошедших с |
авторизация |
В зависимости от варианта использования может содержать Если вы указываете taskids, область авторизации должна быть массивом в одной из следующих форм: "taskids": ["task_id_one","task_id_two"]
или "taskids": ["*"] |
Утверждения JWT Fleet Engine
Fleet Engine использует частные утверждения. Использование частных утверждений гарантирует, что только авторизованные клиенты могут получить доступ к своим собственным данным.
Например, когда ваш сервер выдает веб-токен JSON для мобильного устройства водителя, он должен содержать утверждение vehicleid или deliveryvehicleid со значением идентификатора транспортного средства этого водителя. Затем, в зависимости от роли водителя, JWT разрешают доступ только к определенному идентификатору транспортного средства, а не к любому произвольному идентификатору транспортного средства.
Fleet Engine использует следующие частные утверждения:
Поездки по запросу
-
vehicleid:- Driver SDK всегда использует это утверждение, независимо от того, выполняется ли поездка или используется транспортное средство. Серверная часть Fleet Engine проверяет, связано ли транспортное средство с запрошенной поездкой, прежде чем вносить изменения.
- Токен JWT может охватывать операции как с транспортными средствами, так и с поездками, даже если это не требуется. Это может упростить реализацию подписи JWT.
-
tripid:- Consumer SDK всегда использует это утверждение.
- JWT может охватывать операции как с транспортными средствами, так и с рейсами, даже если это не требуется. Это может упростить подписание токенов.
Запланированные задачи
-
deliveryvehicleidИспользуйте его при вызове API для отдельных транспортных средств доставки.
-
taskidИспользуйте при вызове Tasks API.
-
taskidsИспользуйте при звонках на номер
BatchCreateTasksAPI. Это утверждение должно быть в виде массива, содержащего все идентификаторы задач, необходимые для выполнения запроса. Не включайте заявления оdelivervehicleid,trackingidилиtaskid. -
trackingidИспользуйте при вызове
GetTaskTrackingInfoAPI. Заявка должна соответствовать идентификатору отслеживания в запросе. Не включайте заявления оdelivervehicleid,taskidилиtaskids.
Дальнейшие действия
- Чтобы узнать больше о процессе аутентификации, прочитайте статью о безопасности Fleet Engine.
- Узнайте, как выпускать веб-токены JSON на своем сервере.