Ошибка 404 при просмотре ранее переведенных моделей в APS Viewer
Все ранее переведенные модели во всех средах (разработка, тестирование и производство) возвращают ошибку 404 с сообщением “x-ads-troubleshooting: Не удалось авторизовать входной URN. Объект не существует или у вас нет разрешения на просмотр объекта” при доступе к ним в APS Viewer.
Подробности проблемы:
- Модели были созданы в разное время, включая модели в производстве, которые были онлайн более года
- Новые модели можно просматривать успешно
- Проблема затрагивает конкретно модели, переведенные до недавних изменений
- Доступ к представлениям, дереву и свойствам переведенных моделей по-прежнему работает нормально
Техническая информация:
- Ошибка: 404
- Сообщение об ошибке: “x-ads-troubleshooting: Не удалось авторизовать входной URN. Объект не существует или у вас нет разрешения на просмотр объекта”
Может кто-нибудь помочь диагностировать эту проблему и объяснить, что может вызывать проблему авторизации с ранее переведенными моделями?
Ошибка авторизации 404, с которой вы сталкиваетесь при просмотре ранее переведенных моделей в APS Viewer, вероятно, связана с недавними изменениями в системе аутентификации Autodesk и требованиях к API. Эта проблема затрагивает старые модели из-за ограничений области действия токенов, изменений в региональной конфигурации или устаревших методов аутентификации, которые использовались при первоначальном переводе этих моделей.
Содержание
- Понимание основной причины
- Изменения в системе аутентификации
- Распространенные причины и решения
- Проблемы региональной конфигурации
- Шаги по устранению неполадок
- Профилактические меры
Понимание основной причины
Сообщение об ошибке “x-ads-troubleshooting: Fail to authorize the input URN. Either the object doesn’t exist or you don’t have permission to view the object” указывает на проблему авторизации, а не на отсутствие ресурса. Поскольку новые модели работают нормально, а старые — нет, это говорит об изменении способа обработки авторизации для существующих URN.
Согласно недавней документации Autodesk, несколько факторов могут способствовать возникновению этой проблемы:
-
Изменения методов аутентификации: Autodesk прекратил поддержку метода аутентификации V1 30 апреля 2024 года, что могло повлиять на проверку старых токенов [источник].
-
Требования к области действия токенов: Ошибка часто возникает, когда токены доступа не имеют необходимых областей действия. Для просмотра переведенных моделей обычно требуются области действия, такие как
data:readиdata:write[источник]. -
Региональные конечные точки API: Если ваше ведро (bucket) или учетная запись ACC находятся в регионе ЕС (EMEA), необходимо использовать конечную точку
streamingV2_EUвместо стандартнойapi[источник]. -
Изменения формата URN: Способ генерации и проверки URN мог измениться, затрагивая старые URN, созданные в предыдущих версиях API.
Изменения в системе аутентификации
В 2024 году Autodesk внес значительные изменения в свою систему аутентификации, которые напрямую влияют на то, как авторизуются URN. Наиболее важным изменением было прекращение поддержки метода аутентификации V1.
Прекращение поддержки аутентификации V1
- График: Аутентификация V1 была полностью отключена 30 апреля 2024 года
- Влияние: Приложения, полагающиеся на токены V1, могут не проходить аутентификацию для старых URN
- Решение: Все приложения теперь должны использовать аутентификацию V2 с правильными определениями областей действия
“В настоящее время Autodesk предлагает две версии аутентификации, но к 30 апреля 2024 года метод ‘V1’ больше не будет поддерживаться.” [источник]
Эволюция областей действия токенов
Служба Model Derivative теперь требует более конкретных областей действия:
// Недостаточная область действия (может вызвать 404 для старых URN)
const scopes = ['bucket:create'];
// Необходимые области действия для просмотра переведенных моделей
const requiredScopes = [
'data:read',
'data:write',
'bucket:read',
'bucket:create'
];
Когда модели изначально переводились, они могли быть созданы с токенами, которые имели другие или более ограниченные области действия, чем сейчас требуется для просмотра [источник].
Распространенные причины и решения
Причина 1: Отсутствующие или просроченные токены
Проблема: Старые URN были созданы с токенами, которые теперь просрочены или имеют недостаточные области действия.
Решение: Регенерируйте токены с правильными областями действия:
// Генерация нового токена с правильными областями действия для просмотра
const auth = new TwoLeggedAuth();
auth.setScopes(['data:read', 'data:write', 'bucket:read']);
const token = await auth.fetchToken();
Причина 2: Проблемы с конечной точкой манифеста
Проблема: Конечная точка /modeldata/manifest/ возвращает ошибки 401 для старых URN.
Решение: Убедитесь, что URN правильно закодирован, а токен имеет необходимые разрешения:
// Убедитесь, что URN правильно закодирован
const encodedUrn = Base64Encode(urn);
const manifest = await derivativesApi.GetManifestAsync(encodedUrn);
Причина 3: Проблемы со статусом перевода
Проблема: У старых моделей может не быть полного перевода, или их производные данные могут быть повреждены.
Решение: Проверьте статус задания перевода и при необходимости переведите заново:
// Проверка статуса перевода
const jobStatus = await derivativesApi.GetJobStatusAsync(jobId);
if (jobStatus.status === 'success') {
// Продолжить просмотр
} else {
// Перевести модель заново
}
Проблемы региональной конфигурации
Если ваша учетная запись Autodesk Construction Cloud (ACC) или BIM 360 размещена в регионе ЕС, вы, вероятно, столкнулись с регионально-специфическими проблемами со стриминговыми конечными точками.
Региональная конфигурация ЕС
Стандартная конечная точка api не работает для регионов EMEA. Вы должны использовать региональную конечную точку:
// Неправильно для регионов ЕС/EMEA
const config = {
api: 'https://developer.api.autodesk.com'
};
// Правильно для регионов ЕС/EMEA
const config = {
api: 'https://developer.api.autodesk.com/streamingV2_EU'
};
“Если ваше OSS-ведро или учетная запись BIM360/ACC находится в регионе ЕС (EMEA), замените значение
apiна ‘streamingV2_EU’” [источник]
Шаги тестирования для разных регионов
- Определите географический регион вашей учетной записи
- Убедитесь, что конфигурация вашей конечной точки API соответствует региону
- Протестируйте обе конечные точки, чтобы определить, какая работает
- Обновите конфигурацию вашего приложения соответственно
Шаги по устранению неполадок
Шаг 1: Проверка областей действия токена
Убедитесь, что ваш токен доступа включает все необходимые области действия:
- Сгенерируйте новый токен с полным набором областей действия
- Расшифруйте токен для проверки его содержимого
- Протестируйте токен сначала с рабочей моделью
Шаг 2: Проверка авторизации URN
Протестируйте авторизацию URN вручную:
# Тестирование авторизации URN через curl
curl -X GET \
'https://developer.api.autodesk.com/modelderivative/v2/designdata/{encoded_urn}/manifest' \
-H 'Authorization: Bearer {your_token}' \
-H 'Content-Type: application/json'
Шаг 3: Проверка региональных настроек
Подтвердите вашу региональную конфигурацию:
- Проверьте, находится ли ваше ведро в регионе ЕС/EMEA
- Убедитесь, что ваша конечная точка API использует правильный региональный суффикс
- Протестируйте как стандартные, так и региональные конечные точки
Шаг 4: Проверка статуса перевода модели
Убедитесь, что перевод завершен успешно:
// Проверка успешного завершения перевода
const jobStatus = await derivativesApi.GetJobStatusAsync(translationJobId);
console.log('Статус перевода:', jobStatus.status);
Шаг 5: Обновление метода аутентификации
Убедитесь, что вы используете аутентификацию V2:
// Реализация аутентификации V2
const authClient = new AuthenticationClientTwoLegged();
const credentials = {
client_id: process.env.AUTODESK_CLIENT_ID,
client_secret: process.env.AUTODESK_CLIENT_SECRET,
scope: 'data:read data:write bucket:read bucket:create'
};
Профилактические меры
1. Регулярное обновление токенов
Реализуйте автоматическое обновление токенов для предотвращения проблем с истечением срока их действия:
// Логика обновления токена
async function ensureValidToken() {
const tokenExpiry = new Date(tokenInfo.expiry * 1000);
const now = new Date();
if (tokenExpiry - now < 5 * 60 * 1000) { // 5 минут буфера
await refreshToken();
}
}
2. Комплексное управление областями действия
Всегда запрашивайте наиболее полный набор доступных областей действия:
// Рекомендуемый набор областей действия для производства
const productionScopes = [
'data:read',
'data:write',
'bucket:read',
'bucket:create',
'bucket:delete',
'data:create',
'data:search'
];
3. Управление региональной конфигурацией
Создайте систему региональной конфигурации:
// Вспомогательная функция для региональной конфигурации
const getRegionalEndpoint = (region) => {
const endpoints = {
'US': 'https://developer.api.autodesk.com',
'EU': 'https://developer.api.autodesk.com/streamingV2_EU',
'APAC': 'https://developer.api.autodesk.com/streamingV2_APAC'
};
return endpoints[region] || endpoints['US'];
};
4. Мониторинг и оповещения
Настройте мониторинг ошибок авторизации:
// Реализация мониторинга ошибок
const viewerErrorHandler = (error) => {
if (error.status === 404 && error.message.includes('Fail to authorize')) {
// Логирование и оповещение об ошибках авторизации URN
console.error('Ошибка авторизации URN:', error);
sendAlert('Обнаружена ошибка авторизации URN');
}
};
Заключение
Ошибка авторизации 404 при просмотре ранее переведенных моделей в APS Viewer в основном вызвана недавними изменениями в системе аутентификации, ограничениями области действия токенов и проблемами региональной конфигурации. Ключевые выводы включают:
-
Обновление аутентификации: Убедитесь, что все приложения используют аутентификацию V2 с полными областями действия, такими как
data:read,data:writeиbucket:read -
Проверка региональных настроек: Если вы используете регионы ЕС/EMEA, настройте вашу конечную точку API для использования
streamingV2_EUвместо стандартной конечной точки -
Регенерация токенов: Создайте новые токены доступа с необходимыми областями действия для просмотра существующих URN
-
Мониторинг статуса перевода: Убедитесь, что старые модели были успешно переведены, и их производные данные целы
-
Реализация профилактических мер: Настройте регулярное обновление токенов, комплексное управление областями действия и мониторинг ошибок
Для немедленного решения сосредоточьтесь на регенерации токенов с правильными областями действия и проверке вашей региональной конфигурации. Если проблема сохраняется, рассмотрите возможность повторного перевода затронутых моделей с использованием текущих требований API.
Источники
- Autodesk Platform Services - 401 Unauthorized / 403 Forbidden
- Stack Overflow - Autodesk Viewer stopped working - returns 401 on /modeldata/manifest/
- Autodesk Platform Services - Getting 404 resource not found error in viewer
- Blog - Important Update: Autodesk Authentication Changes Coming April 30, 2024
- Autodesk Platform Services - Authentication API V2 update
- Autodesk Platform Services - Generating Access Tokens and Model URNs