Вопрос или проблема
У меня есть экземпляр Artifactory 7.84.14 CPP CE на нашем сервере, который хостит репозиторий conan. Когда токен пользователя истекает (или пользователь не аутентифицирован), Artifactory возвращает код ошибки 404 вместо 401/403. В результате conan возвращает “Пакет не найден” вместо “Пожалуйста, авторизуйтесь”.
> conan install --remote someremote --requires=somepackage/version@some/repo
> ERROR: Package 'somepackage/version@some/repo' not resolved: Unable to find 'somepackage/version@some/repo' in remotes.
В файле artifactory-request.log есть строка с кодом 404.
anonymous|GET|/api/conan/package/path|404|-1|0|5|Conan/2.7.1 (Windows 11; Python 3.12.3; AMD64)
Я нашел информацию о конфигурационном параметре hideUnauthorizedResources
(здесь и здесь). Проблема в том, что эта конфигурация уже установлена. Вот XML-документ конфигурации (из интерфейса AF):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<config xmlns="http://artifactory.jfrog.org/xsd/3.3.5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://releases.jfrog.io/artifactory/static-release-virtual/xsd/artifactory/artifactory-v3_3_5.xsd">
...
<security>
<hideUnauthorizedResources>false</hideUnauthorizedResources>
<passwordSettings>
<expirationPolicy>
...
А вот artifactory.repository.config.latest.json:
{
"localRepoConfigs":
[
{
"type": "local",
"key": "somerepo",
"packageType": "conan",
"baseConfig":
{
"modelVersion": 2,
"description": "",
"notes": "",
"repoLayoutRef": "conan-default",
"includesPattern": "**/*",
"excludesPattern": ""
},
"repoTypeConfig":
{
"archiveBrowsingEnabled": false,
"blackedOut": false,
"propertySetRefs":
[],
"checksumPolicyType": "client-checksums",
"priorityResolution": false,
"maxUniqueSnapshots": 0,
"handleReleases": true,
"handleSnapshots": true,
"snapshotVersionBehavior": "unique"
},
"packageTypeConfig":
{
"forceConanAuthentication": "false"
},
"securityConfig":
{
"hideUnauthorizedResources": false,
"signedUrlTtl": 90
},
"repoType": "LOCAL"
}
]
...
}
Итак, мой вопрос: что я упускаю? Почему я получаю 404 вместо 401/403?
Заранее спасибо!
Ответ или решение
Проблема, с которой вы столкнулись, заключается в том, что Artifactory возвращает ошибку 404 вместо ожидаемых 401 или 403 при истечении срока действия токена пользователя или при отсутствии аутентификации. Это может ввести в заблуждение клиенты Conan, поскольку они не получают соответствующее сообщение об ошибке о необходимости авторизации.
Из вашего описания видно, что вы проверили наличие параметра hideUnauthorizedResources
и установили его значение в false, что должно предотвратить скрытие ресурсов, к которым нет доступа. Однако это не исправляет ошибку 404.
Вот несколько шагов для дальнейшей диагностики и возможного решения проблемы:
-
Проверьте конфигурацию Artifactory: Убедитесь, что параметр
forceConanAuthentication
установлен наtrue
. Этот параметр заставляет Artifactory требовать аутентификации для всех запросов к репозиториям Conan. В вашем JSON описанииforceConanAuthentication
установлен наfalse
, что может быть причиной проблемы.Измените конфигурацию так:
"packageTypeConfig": { "forceConanAuthentication": "true" }
-
Настройка безопасности репозитория: Убедитесь, что у групп и пользователей, которые пытаются получить доступ к репозиторию, есть соответствующие права. Возможно, текущие настройки безопасности позволяют анонимному доступу, что также может вызвать проблемы при аутентификации.
-
Логи и отладка: Проверьте другие логи Artifactory (например, access.log), чтобы понять, какой именно запрос был отправлен, и как Artifactory на него ответил. Это может дать более детальную информацию о причинах возникновения ошибки.
-
Обновление версии Artifactory: Поскольку вы используете Artifactory 7.84.14, рассмотрите возможность обновления до последней стабильной версии. Иногда проблемы с обработкой аутентификации могут быть связаны с конкретными версиями, и новое обновление может решить известные проблемы.
-
Обратитесь в поддержку JFrog: Если после выполнения вышеуказанных шагов проблема не решена, рекомендую обратиться в службу поддержки JFrog. Они могут помочь с более глубоким анализом вашей конфигурации и логов.
Надеюсь, эти рекомендации помогут вам решить проблему с неверными кодами ошибок в Artifactory при использовании Conan.