Обработка аутентификации и прокси-серверов с помощью httplib2

StackOverflow https://stackoverflow.com/questions/1080179

  •  22-08-2019
  •  | 
  •  

Вопрос

Я пытаюсь протестировать взаимодействие с сервером Nexus, который требует аутентификации для операций, которые я намереваюсь использовать, но мне также нужно обработать внутренний прокси-сервер.

Основываясь на моем (ограниченном) понимании, я могу добавить несколько обработчиков к открывателю.Однако я все еще получаю ответ 401.Я проверил, что имя пользователя и пароль действительны.Я не уверен, требуются ли для этого файлы cookie, и если да, то как они будут включены.Есть какие-нибудь предложения?

baseUrl = 'server:8070/nexus-webapp-1.3.3/service/local'

params = {"[key]":"[value]"}

data = urllib.urlencode(params)

# create a password manager
password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()

# Add the username and password as supplied
password_mgr.add_password(None, baseUrl, username, password)

handler = urllib2.HTTPBasicAuthHandler(password_mgr)
proxy_support = urllib2.ProxyHandler({})

# create "opener" (OpenerDirector instance)
opener = urllib2.build_opener(proxy_support, handler)
urllib2.install_opener(opener)

txheaders =  {'User-agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}

req = Request(protocol+url, data, txheaders)
handle = urlopen(req)

Это результирующее поле заголовков URLError:

>HTTPMessage: Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=B4BD05C9582F7B27495CBB675A339724; Path=/nexus-webapp-1.3.3
WWW-Authenticate: NxBASIC realm="Sonatype Nexus Repository Manager API"
Content-Type: text/html;charset=utf-8
Content-Length: 954
Date: Fri, 03 Jul 2009 17:38:42 GMT
Connection: close

Обновить Похоже, Nexus реализует пользовательскую версию Средство аутентификации Restlet's AuthenticationHelper.Благодаря Алексу я знал, что искать.

Это было полезно?

Решение

Можете ли вы показать полные заголовки ответа 401, который вы получаете?Возможно, это не обычный запрос аутентификации, возможно, прокси-сервер хочет свою собственную аутентификацию - трудно догадаться, не видя указанных заголовков!

Редактировать:спасибо, что показали заголовки (я переформатировал их как "код", иначе они были нечитабельны).

Как я и подозревал, ему не нужен "Basic", ему нужен какой-то другой (проприетарный Nexus ...?) протокол аутентификации "NxBASIC" - я никогда не слышал об этом (я ничего не знаю о Nexus), и я полагаю, что ни один из них не имеет используемого вами базового обработчика аутентификации (даже если NxBASIC каким-то образом принял обычную базовую аутентификацию, обработчик, зная только, что это другой протокол, не предложил бы такую аутентификацию).

Итак, сначала вам нужно точно выяснить, что это за штука NxBASIC, и для этого, я подозреваю, может помочь вопрос SO с правильными тегами.Затем, в зависимости от того, что вы узнаете, возникает интересная проблема определения обработчика для этого ...!-(

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top