НейроАгент

Исправление ошибки 404 авторизации в APS Viewer

Узнайте, как исправить ошибку 404 авторизации при просмотре ранее переведенных моделей в APS Viewer. Найдите решения для проблем с областью действия токенов, проблем региональной конфигурации и изменений методов аутентификации, влияющих на старые URN.

Ошибка 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, несколько факторов могут способствовать возникновению этой проблемы:

  1. Изменения методов аутентификации: Autodesk прекратил поддержку метода аутентификации V1 30 апреля 2024 года, что могло повлиять на проверку старых токенов [источник].

  2. Требования к области действия токенов: Ошибка часто возникает, когда токены доступа не имеют необходимых областей действия. Для просмотра переведенных моделей обычно требуются области действия, такие как data:read и data:write [источник].

  3. Региональные конечные точки API: Если ваше ведро (bucket) или учетная запись ACC находятся в регионе ЕС (EMEA), необходимо использовать конечную точку streamingV2_EU вместо стандартной api [источник].

  4. Изменения формата URN: Способ генерации и проверки URN мог измениться, затрагивая старые URN, созданные в предыдущих версиях API.


Изменения в системе аутентификации

В 2024 году Autodesk внес значительные изменения в свою систему аутентификации, которые напрямую влияют на то, как авторизуются URN. Наиболее важным изменением было прекращение поддержки метода аутентификации V1.

Прекращение поддержки аутентификации V1

  • График: Аутентификация V1 была полностью отключена 30 апреля 2024 года
  • Влияние: Приложения, полагающиеся на токены V1, могут не проходить аутентификацию для старых URN
  • Решение: Все приложения теперь должны использовать аутентификацию V2 с правильными определениями областей действия

“В настоящее время Autodesk предлагает две версии аутентификации, но к 30 апреля 2024 года метод ‘V1’ больше не будет поддерживаться.” [источник]

Эволюция областей действия токенов

Служба Model Derivative теперь требует более конкретных областей действия:

javascript
// Недостаточная область действия (может вызвать 404 для старых URN)
const scopes = ['bucket:create']; 

// Необходимые области действия для просмотра переведенных моделей
const requiredScopes = [
  'data:read',
  'data:write',
  'bucket:read',
  'bucket:create'
];

Когда модели изначально переводились, они могли быть созданы с токенами, которые имели другие или более ограниченные области действия, чем сейчас требуется для просмотра [источник].


Распространенные причины и решения

Причина 1: Отсутствующие или просроченные токены

Проблема: Старые URN были созданы с токенами, которые теперь просрочены или имеют недостаточные области действия.

Решение: Регенерируйте токены с правильными областями действия:

javascript
// Генерация нового токена с правильными областями действия для просмотра
const auth = new TwoLeggedAuth();
auth.setScopes(['data:read', 'data:write', 'bucket:read']);
const token = await auth.fetchToken();

Причина 2: Проблемы с конечной точкой манифеста

Проблема: Конечная точка /modeldata/manifest/ возвращает ошибки 401 для старых URN.

Решение: Убедитесь, что URN правильно закодирован, а токен имеет необходимые разрешения:

javascript
// Убедитесь, что URN правильно закодирован
const encodedUrn = Base64Encode(urn);
const manifest = await derivativesApi.GetManifestAsync(encodedUrn);

Причина 3: Проблемы со статусом перевода

Проблема: У старых моделей может не быть полного перевода, или их производные данные могут быть повреждены.

Решение: Проверьте статус задания перевода и при необходимости переведите заново:

javascript
// Проверка статуса перевода
const jobStatus = await derivativesApi.GetJobStatusAsync(jobId);
if (jobStatus.status === 'success') {
  // Продолжить просмотр
} else {
  // Перевести модель заново
}

Проблемы региональной конфигурации

Если ваша учетная запись Autodesk Construction Cloud (ACC) или BIM 360 размещена в регионе ЕС, вы, вероятно, столкнулись с регионально-специфическими проблемами со стриминговыми конечными точками.

Региональная конфигурация ЕС

Стандартная конечная точка api не работает для регионов EMEA. Вы должны использовать региональную конечную точку:

javascript
// Неправильно для регионов ЕС/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’” [источник]

Шаги тестирования для разных регионов

  1. Определите географический регион вашей учетной записи
  2. Убедитесь, что конфигурация вашей конечной точки API соответствует региону
  3. Протестируйте обе конечные точки, чтобы определить, какая работает
  4. Обновите конфигурацию вашего приложения соответственно

Шаги по устранению неполадок

Шаг 1: Проверка областей действия токена

Убедитесь, что ваш токен доступа включает все необходимые области действия:

  1. Сгенерируйте новый токен с полным набором областей действия
  2. Расшифруйте токен для проверки его содержимого
  3. Протестируйте токен сначала с рабочей моделью

Шаг 2: Проверка авторизации URN

Протестируйте авторизацию URN вручную:

bash
# Тестирование авторизации 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: Проверка статуса перевода модели

Убедитесь, что перевод завершен успешно:

javascript
// Проверка успешного завершения перевода
const jobStatus = await derivativesApi.GetJobStatusAsync(translationJobId);
console.log('Статус перевода:', jobStatus.status);

Шаг 5: Обновление метода аутентификации

Убедитесь, что вы используете аутентификацию V2:

javascript
// Реализация аутентификации 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. Регулярное обновление токенов

Реализуйте автоматическое обновление токенов для предотвращения проблем с истечением срока их действия:

javascript
// Логика обновления токена
async function ensureValidToken() {
  const tokenExpiry = new Date(tokenInfo.expiry * 1000);
  const now = new Date();
  
  if (tokenExpiry - now < 5 * 60 * 1000) { // 5 минут буфера
    await refreshToken();
  }
}

2. Комплексное управление областями действия

Всегда запрашивайте наиболее полный набор доступных областей действия:

javascript
// Рекомендуемый набор областей действия для производства
const productionScopes = [
  'data:read',
  'data:write',
  'bucket:read',
  'bucket:create',
  'bucket:delete',
  'data:create',
  'data:search'
];

3. Управление региональной конфигурацией

Создайте систему региональной конфигурации:

javascript
// Вспомогательная функция для региональной конфигурации
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. Мониторинг и оповещения

Настройте мониторинг ошибок авторизации:

javascript
// Реализация мониторинга ошибок
const viewerErrorHandler = (error) => {
  if (error.status === 404 && error.message.includes('Fail to authorize')) {
    // Логирование и оповещение об ошибках авторизации URN
    console.error('Ошибка авторизации URN:', error);
    sendAlert('Обнаружена ошибка авторизации URN');
  }
};

Заключение

Ошибка авторизации 404 при просмотре ранее переведенных моделей в APS Viewer в основном вызвана недавними изменениями в системе аутентификации, ограничениями области действия токенов и проблемами региональной конфигурации. Ключевые выводы включают:

  1. Обновление аутентификации: Убедитесь, что все приложения используют аутентификацию V2 с полными областями действия, такими как data:read, data:write и bucket:read

  2. Проверка региональных настроек: Если вы используете регионы ЕС/EMEA, настройте вашу конечную точку API для использования streamingV2_EU вместо стандартной конечной точки

  3. Регенерация токенов: Создайте новые токены доступа с необходимыми областями действия для просмотра существующих URN

  4. Мониторинг статуса перевода: Убедитесь, что старые модели были успешно переведены, и их производные данные целы

  5. Реализация профилактических мер: Настройте регулярное обновление токенов, комплексное управление областями действия и мониторинг ошибок

Для немедленного решения сосредоточьтесь на регенерации токенов с правильными областями действия и проверке вашей региональной конфигурации. Если проблема сохраняется, рассмотрите возможность повторного перевода затронутых моделей с использованием текущих требований API.


Источники

  1. Autodesk Platform Services - 401 Unauthorized / 403 Forbidden
  2. Stack Overflow - Autodesk Viewer stopped working - returns 401 on /modeldata/manifest/
  3. Autodesk Platform Services - Getting 404 resource not found error in viewer
  4. Blog - Important Update: Autodesk Authentication Changes Coming April 30, 2024
  5. Autodesk Platform Services - Authentication API V2 update
  6. Autodesk Platform Services - Generating Access Tokens and Model URNs