Перед использованием библиотеки отслеживания автопарка на JavaScript убедитесь, что вы знакомы с Fleet Engine и настроили его. Подробности см. в разделе Fleet Engine .
В этом документе показано, как включить авторизацию между веб-приложением и Fleet Engine. После того, как ваши запросы к Fleet Engine будут настроены с использованием правильных токенов авторизации, вы сможете отслеживать транспортное средство на карте.
Настройка авторизации
Для вызова методов API из сред с низким уровнем доверия (смартфонов и браузеров) Fleet Engine требует использования JSON Web Tokens (JWT).
JWT-токен создается на вашем сервере, подписывается, шифруется и передается клиенту для последующих взаимодействий с сервером до тех пор, пока не истечет срок его действия или он не перестанет быть действительным.
Ключевые детали
- Используйте учетные данные приложения по умолчанию для аутентификации и авторизации в Fleet Engine.
- Для подписи JWT используйте соответствующую учетную запись службы. См. раздел «Роли учетных записей служб Fleet Engine» в руководстве «Основы работы с Fleet Engine» .
Как работает авторизация?
Авторизация с использованием данных Fleet Engine включает в себя реализацию как на стороне сервера, так и на стороне клиента.
Авторизация на стороне сервера
Прежде чем настраивать аутентификацию и авторизацию в вашем приложении для отслеживания автопарка, ваш сервер должен иметь возможность выдавать JSON Web Tokens вашему приложению для доступа к Fleet Engine. Ваше приложение для отслеживания автопарка отправляет эти JWT вместе со своими запросами, чтобы Fleet Engine распознавал запросы как аутентифицированные и авторизованные для доступа к данным в запросе. Инструкции по реализации JWT на стороне сервера см. в разделе «Выдача JSON Web Tokens» в разделе «Основы Fleet Engine» .
Для генерации токенов на вашем сервере при внедрении системы отслеживания флота см. следующие инструкции:- Общие рекомендации по выпуску JSON Web Tokens, включая разделы для поездок по запросу и запланированных задач.
- Поездки по запросу: пример токена для операции на бэкэнд-сервере.
- Запланированные задачи: Пример токена для отслеживания всех задач и транспортных средств в автопарке.
Авторизация на стороне клиента
При использовании библиотеки JavaScript Fleet для отслеживания флота, она запрашивает токен у сервера с помощью механизма получения авторизационных токенов. Это происходит, когда выполняется любое из следующих условий:
Действительный токен отсутствует, например, когда SDK не вызывал функцию получения данных при загрузке новой страницы или когда функция получения данных не вернула токен.
Срок действия токена истек.
Срок действия токена истекает не позднее чем через одну минуту.
В противном случае библиотека отслеживания флота на JavaScript использует ранее выданный действительный токен и не вызывает функцию получения данных.
Создайте средство для получения токенов авторизации.
Создайте средство получения авторизационных токенов, следуя этим инструкциям:
Функция получения данных должна возвращать структуру данных с двумя полями , обернутую в
Promiseследующим образом:Строковый
token.Значение параметра
expiresInSecondsуказывает, что токен истекает через указанное время после его получения. Программа для получения аутентификационных токенов должна передавать это значение в секундах, от момента получения токена библиотекой, как показано в примере.
Для получения токена необходимо вызвать URL-адрес на вашем сервере . Этот URL-адрес —
SERVER_TOKEN_URL— зависит от вашей реализации бэкэнда. Следующий пример URL-адреса относится к тестовому приложению на GitHub :-
https://SERVER_URL/token/fleet_reader
-
Пример - Создание средства получения авторизационных токенов
В следующих примерах показано, как создать средство получения авторизационных токенов:
JavaScript
async function authTokenFetcher(options) {
// options is a record containing two keys called
// serviceType and context. The developer should
// generate the correct SERVER_TOKEN_URL and request
// based on the values of these fields.
const response = await fetch(SERVER_TOKEN_URL);
if (!response.ok) {
throw new Error(response.statusText);
}
const data = await response.json();
return {
token: data.Token,
expiresInSeconds: data.ExpiresInSeconds
};
}
Машинопись
function authTokenFetcher(options: {
serviceType: google.maps.journeySharing.FleetEngineServiceType,
context: google.maps.journeySharing.AuthTokenContext,
}): Promise<google.maps.journeySharing.AuthToken> {
// The developer should generate the correct
// SERVER_TOKEN_URL based on options.
const response = await fetch(SERVER_TOKEN_URL);
if (!response.ok) {
throw new Error(response.statusText);
}
const data = await response.json();
return {
token: data.token,
expiresInSeconds: data.ExpiresInSeconds,
};
}