2015-03-01 3 views
1

Я пытаюсь авторизовать с API реестра Докер на https://registry-1.docker.io/v1/Аутентифицировать с Докер API реестра

Я пытаюсь делать звонки как

https://registry-1.docker.io/v1/repositories/_/ubuntu/tags

Однако я получаю ответ, как показано ниже:

401 
{ server: 'gunicorn/18.0', 
    date: 'Sun, 01 Mar 2015 12:19:13 GMT', 
    connection: 'close', 
    expires: '-1', 
    'content-type': 'application/json', 
    'www-authenticate': 'Token', 
    pragma: 'no-cache', 
    'cache-control': 'no-cache', 
    'content-length': '35', 
    'x-docker-registry-version': '0.8.2', 
    'x-docker-registry-config': 'prod', 
    'strict-transport-security': 'max-age=31536000' } 
{"error": "Requires authorization"} 

Я прочитал все доступные рекомендации, как в docs и forums.

Следуя этим рекомендациям, я сначала авторизуюсь в HUB и запрашиваю токен. Это преуспевает, и я получаю маркер и cookie от HUB. Тогда я поставить все это к API реестра следующим образом:

{ 
    'set-cookie': 'csrftoken=VfHe6...; Expires=Sun, 28 Feb 2016 12:19:13 GMT; Max-Age=31449600; Path=/; Secure', 
    'www-authenticate': 'Token signature=VfHe6...,repository="ubuntu",access=read', 
    'x-docker-token': 'Token signature=VfHe6...,repository="ubuntu",access=read', 
    Authenticate: 'Token signature=VfHe6...,repository="ubuntu",access=read', 
    Authorization: 'Token signature=VfHe6...,repository="ubuntu",access=read' 
} 
+0

Я отредактировал поставляемые заголовки, чтобы правильно отразить все, что я пробовал, - обратите внимание, что я также пробовал записи заголовков по одному. Все еще не работает. –

+0

После перекопа через источник Docker я нашел функцию, анализирующую вызов auth: [здесь] (https://github.com/docker/docker/blob/8b95ad230e2ee76450ceb9a80aa8e942a56bb397/registry/authchallenge.go) Быстрый взгляд подтверждает, что заголовок поле должно быть «WWW-Authenticate». Из этого файла неясно, как выглядит схема (значение заголовка). –

ответ

0

Существует эта одна строка в документации вы поделились:

Token is only returned when the X-Docker-Token header is sent with request. 

Вы должны отправить «X-докер-токена: истинно» когда вы выполняете аутентификацию на концентраторе, вы получаете в заголовке «X-Docker-Token» обратно. Отправьте это как «Авторизация:» в реестр в «X-Docker-Endpoints», и вы находитесь.

Удачи! :)

Смежные вопросы