Pregunta

Estoy intentando poner a prueba la interacción con un servidor Nexus que requiere autenticación para las operaciones que se proponen utilizar, pero también necesito para manejar un servidor proxy interno.

En base a mi entendimiento (limitado) que puedo agregar varios controladores a la apertura. Sin embargo sigo teniendo una respuesta 401. He comprobado el nombre de usuario y la contraseña son válidos. No estoy seguro de si se requieren cookies para hacer esto y si es así cómo estaría incluido. ¿Alguna sugerencia?

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 es el campo de las cabeceras 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

Actualizar Parece Nexus implementar una versión personalizada de AuthenticationHelper de Restlet. Gracias a Alex sabía qué buscar.

¿Fue útil?

Solución

¿Puede mostrar las cabeceras completas de la respuesta 401 que está recibiendo? Tal vez no es una solicitud de autenticación básica, tal vez es el proxy querer su propia autenticación - que es difícil de adivinar sin ver dichas cabeceras

Editar . Gracias por mostrar las cabeceras (me reformateado como "código" de lo contrario eran ilegibles)

Como sospechaba, que no quiere "Básico", que quiere alguna otra (propietaria ... Nexus?) Protocolo de autenticación "NxBASIC" - Nunca he oído hablar de él (no sé nada al respecto Nexus) y me imagino que ninguno de ellos tiene el manejador de autenticación básica que está usando (incluso si de alguna manera NxBASIC aceptó la autenticación básica llano, el manejador, sabiendo sólo que es un protocolo diferente, no ofrecería tales autenticación).

Por lo tanto, primero es necesario investigar exactamente lo que es lo NxBASIC, y por eso sospechan una pregunta así que con las etiquetas correctas podría ayudar. Luego, dependiendo de lo que se aprende, viene la interesante cuestión de definir un controlador para él ... - (

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top