Извлечение отдельных BLOB-объектов в Azure CR с использованием API v2. - PullRequest
2 голосов
/ 03 мая 2019

Я пытаюсь повторно внедрить docker pull для реестров Azure.В прошлом я успешно справлялся с Docker Hub, следуя официальной документации.

В Azure мне удается перечислять теги репозиториев через _catalog и получать манифесты (/manifests), однако я нажимаюпроблемы аутентификации в отношении /blobs, где я получаю:

InvalidAuthenticationInfo Информация аутентификации не указана в правильном формате.Проверьте значение заголовка авторизации.

Мой код похож на:

    const headers: any = {
      Accept: mediaType
    };
    const config: any = {
      method: "GET",
      uri: `https://${registryConfig.base}/v2/${repo}/blobs/${sha}`,
      headers
    };

    if (token) {
      headers.Authorization = `Bearer ${token}`;
    } else {
      config.auth = { username, password };
    }
    return request(config)
  }

Это хорошо работает для Docker Hub, где я использую токен на предъявителя.Любые советы о том, как правильно проходить проверку подлинности в службе BLOB-объектов Azure?

Спасибо!

1 Ответ

2 голосов
/ 08 мая 2019

Проблема возникла из-за автоматического перенаправления (и некоторых неожиданных / недокументированных действий со стороны Azure).

Вызовы к конечной точке /blobs (если они должным образом аутентифицированы) включают заголовок Location, который состоит из другого URI, который содержит требуемый большой двоичный объект.

Однако, если вы попытаетесь вызвать его С помощью заголовка аутентификации, произойдет сбой с вышеупомянутой ошибкой.

...