Прежде чем использовать библиотеку отслеживания автопарка JavaScript, убедитесь, что вы знакомы с Fleet Engine и настроили его. Подробности см. в разделе Fleet Engine .
В этом документе показано, как включить авторизацию между приложением веб-страницы и Fleet Engine. Как только ваши запросы к Fleet Engine будут настроены с использованием правильных токенов авторизации, вы будете готовы отслеживать транспортное средство на карте.
Настроить авторизацию
Для вызовов методов API из сред с низким уровнем доверия Fleet Engine требует использования веб-токенов JSON (JWT), подписанных соответствующей учетной записью службы. К средам с низким уровнем доверия относятся смартфоны и браузеры. JWT создается на вашем сервере, который является полностью доверенной средой . JWT подписывается, шифруется и передается клиенту для последующего взаимодействия с сервером до тех пор, пока не истечет срок его действия или он не станет действительным.
Серверная часть должна аутентифицироваться и авторизоваться в Fleet Engine с использованием стандартных механизмов учетных данных приложения по умолчанию . Обязательно используйте JWT, подписанные соответствующей учетной записью службы. Список ролей сервисных учетных записей см. в разделе Роли сервисных учетных записей Fleet Engine в Основах Fleet Engine .
Напротив, ваш сервер должен аутентифицироваться и авторизоваться в Fleet Engine, используя стандартные механизмы учетных данных приложения по умолчанию .
Как работает авторизация?
Авторизация с использованием данных Fleet Engine включает реализацию как на стороне сервера, так и на стороне клиента.
Авторизация на стороне сервера
Прежде чем вы настроите аутентификацию и авторизацию в приложении отслеживания автопарка, ваш внутренний сервер должен иметь возможность выдавать веб-токены JSON вашему приложению отслеживания автопарка для доступа к Fleet Engine. Ваше приложение отслеживания автопарка отправляет эти JWT вместе со своими запросами, поэтому Fleet Engine распознает запросы как проверенные и авторизованные для доступа к данным в запросе. Инструкции по реализации JWT на стороне сервера см. в разделе «Выдача веб-токенов JSON» в разделе «Основы Fleet Engine» .
Чтобы сгенерировать токены с вашего сервера при реализации отслеживания автопарка, см. следующее:- Общие рекомендации по выпуску веб-токенов JSON, включая разделы для поездок по требованию и запланированных задач.
- Поездки по требованию: пример токена для работы внутреннего сервера
- Запланированные задачи: пример токена для отслеживания всех задач и транспортных средств в парке.
Авторизация на стороне клиента
Когда вы используете библиотеку отслеживания парка JavaScript, она запрашивает токен с сервера, используя сборщик токенов авторизации. Это происходит, когда выполняется любое из следующих условий:
Действительный токен не существует, например, когда 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,
};
}