Репозиторий Artifactory conan возвращает 404 вместо 401/403

Вопрос или проблема

У меня есть экземпляр 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.

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

  1. Проверьте конфигурацию Artifactory: Убедитесь, что параметр forceConanAuthentication установлен на true. Этот параметр заставляет Artifactory требовать аутентификации для всех запросов к репозиториям Conan. В вашем JSON описании forceConanAuthentication установлен на false, что может быть причиной проблемы.

    Измените конфигурацию так:

    "packageTypeConfig": {
       "forceConanAuthentication": "true"
    }
  2. Настройка безопасности репозитория: Убедитесь, что у групп и пользователей, которые пытаются получить доступ к репозиторию, есть соответствующие права. Возможно, текущие настройки безопасности позволяют анонимному доступу, что также может вызвать проблемы при аутентификации.

  3. Логи и отладка: Проверьте другие логи Artifactory (например, access.log), чтобы понять, какой именно запрос был отправлен, и как Artifactory на него ответил. Это может дать более детальную информацию о причинах возникновения ошибки.

  4. Обновление версии Artifactory: Поскольку вы используете Artifactory 7.84.14, рассмотрите возможность обновления до последней стабильной версии. Иногда проблемы с обработкой аутентификации могут быть связаны с конкретными версиями, и новое обновление может решить известные проблемы.

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

Надеюсь, эти рекомендации помогут вам решить проблему с неверными кодами ошибок в Artifactory при использовании Conan.

Оцените материал
Добавить комментарий

Капча загружается...