Pergunta

Estou tentando testar interações com um servidor Nexus que requer autenticação para as operações que pretendo usar, mas também preciso lidar com um servidor de proxy interno.

Com base no meu entendimento (limitado), posso adicionar vários manipuladores ao abridor. No entanto, ainda estou recebendo uma resposta 401. Eu verifiquei o nome de usuário e a senha são válidos. Não tenho certeza se os cookies precisam fazer isso e, se sim, como seriam incluídos. Alguma sugestão?

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)

Este é o campo de cabeçalhos de Urlerror resultante:

>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

AtualizarParece que o Nexus implementa uma versão personalizada de AuthenticationHelper de Restlet. Graças a Alex, eu sabia o que procurar.

Foi útil?

Solução

Você pode mostrar os cabeçalhos completos da resposta 401 que está recebendo? Talvez não seja um pedido de autenticação básico, talvez seja o proxy querendo sua própria autenticação - é difícil adivinhar sem ver os cabeçalhos!

Editar: Obrigado por mostrar os cabeçalhos (eu os reformatei como "código", caso contrário, eles eram ilegíveis).

Como eu suspeitava, não quer "básico", quer outro (Nexus Proprietary ...?) Eu imagino que também não tenha o manipulador de autenticação básico que você está usando (mesmo que o nxbasic de alguma forma aceite autenticação básica simples, o manipulador, sabendo apenas que é um protocolo diferente, não ofereceria essa autenticação).

Então, primeiro você precisa pesquisar exatamente o que é essa coisa nxbasic e, por isso, suspeito que uma pergunta tão com as tags certas pode ajudar. Então, dependendo do que você aprende, vem a questão interessante de definir um manipulador para isso ...!-(

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top