В экосистеме Cesium доступ к облачным ресурсам платформы Cesium осуществляется через систему токенов доступа. Основной механизм предназначен для идентификации клиента при запросах к Cesium ion, загрузке 3D Tiles, террейна, изображений и других геопространственных данных. Токен выступает обязательным элементом авторизации при работе с облачными сервисами и определяет уровень доступа к ресурсам аккаунта.
Access token в Cesium ion выполняет роль ключа API, который связывает запросы приложения с конкретным аккаунтом. Без корректного токена:
Токен не просто идентифицирует приложение, но и определяет разрешённые операции: чтение ассетов, использование публичных наборов данных, доступ к платным слоям.
В CesiumJS токен устанавливается глобально через объект
Cesium.Ion. Это влияет на все последующие запросы к Cesium
ion.
import { Ion } from "cesium";
Ion.defaultAccessToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6...";
После установки:
ViewerПри создании сцены Viewer токен уже должен быть
установлен глобально, иначе часть ресурсов не загрузится.
import { Viewer, Ion, createWorldTerrain } from "cesium";
Ion.defaultAccessToken = "TOKEN";
const viewer = new Viewer("cesiumContainer", {
terrainProvider: createWorldTerrain()
});
В данном сценарии:
В системе Cesium ion существует несколько категорий токенов:
Используется для разработки и серверной интеграции. Даёт доступ ко всем ресурсам аккаунта.
Позволяет ограничить:
Генерируется сервером для краткосрочного доступа:
Хранение токена напрямую в клиентском JavaScript считается потенциально небезопасным, поскольку:
Поэтому распространённая архитектура включает серверный слой:
В сборках на базе Vite, Webpack или Node.js токен часто передаётся через переменные окружения:
const token = process.env.CESIUM_ION_TOKEN;
Ion.defaultAccessToken = token;
Такой подход:
Токены Cesium ion могут быть отозваны или обновлены. В таких случаях необходимо:
Ion.defaultAccessTokenViewer при необходимостиДинамическая замена токена:
Ion.defaultAccessToken = "NEW_TOKEN";
viewer.scene.requestRender();
Однако часть ресурсов может потребовать повторной инициализации провайдеров.
При работе с 3D Tiles токен передаётся автоматически через Ion API.
import { Cesium3DTileset, IonResource } from "cesium";
const tileset = new Cesium3DTileset({
url: IonResource.fromAssetId(12345)
});
Здесь происходит цепочка:
В некоторых сценариях токен передаётся явно через ресурсы:
const resource = IonResource.fromAssetId(12345, {
accessToken: "TOKEN"
});
Такой подход используется:
При некорректной настройке токена возникают типовые ошибки:
401 Unauthorized — отсутствует или недействителен
токен403 Forbidden — нет доступа к ресурсуInvalid access token — повреждён формат токенаAsset not found — отсутствуют права на assetIdДиагностика обычно сводится к проверке:
CesiumJS может использоваться на сервере для подготовки данных. В этом случае токен передаётся так же:
import { Ion } from "cesium";
Ion.defaultAccessToken = process.env.CESIUM_TOKEN;
Особенности серверной среды:
Токены Cesium ion поддерживают ограничения:
Рекомендуемая практика — минимизация прав токена:
Сам токен не влияет напрямую на рендеринг сцены, но влияет на:
Запросы с одинаковым токеном и assetId могут кешироваться на уровне браузера и CDN, ускоряя загрузку сцены при повторных обращениях.
В корпоративных архитектурах токен часто скрывается за прокси:
Пример логики прокси:
app.get("/terrain", async (req, res) => {
const url = buildCesiumUrl(req.query.assetId);
const response = await fetch(url, {
headers: {
Authorization: `Bearer ${process.env.CESIUM_TOKEN}`
}
});
res.send(await response.arrayBuffer());
});
Если токен не установлен:
В таких условиях приложение переходит в режим ограниченной функциональности с использованием локальных или публичных источников данных.