Domanda

sto cercando di testare le interazioni con un server Nexus che richiede l'autenticazione per le operazioni Ho intenzione di utilizzare, ma ho anche bisogno di gestire un server proxy interno.

Sulla base della mia comprensione (limitata) posso aggiungere più gestori alla gara di apertura. Comunque sto ancora ricevendo una risposta 401. Ho controllato il nome utente e la password sono validi. Io non sono certo se i cookie sono necessari per fare questo e se sì, come sarebbero incluso. Qualche suggerimento?

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)

Questo è il campo header del URLError risultante:

>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

Aggiorna Sembra Nexus implementare una versione personalizzata di AuthenticationHelper di Restlet. Grazie ad Alex sapevo che cosa cercare.

È stato utile?

Soluzione

Potete mostrare le intestazioni complete della risposta 401 che stai ricevendo? Forse non è una richiesta di autenticazione di base, forse è il proxy che vogliono la propria autenticazione - è difficile da indovinare senza vedere dette intestazioni

Modifica :. Grazie per mostrare le intestazioni (li ho riformattato come "codice" altro erano illeggibili)

Come sospettavo, non vuole "Basic", che vuole qualche altro (Nexus proprietaria ...?) Protocollo di autenticazione "NxBASIC" - non ho mai sentito parlare (io non so nulla Nexus) e immagino nessuno dei due ha il gestore autenticazione di base si sta usando (anche se in qualche modo accettato NxBASIC pianura autenticazione di base, il gestore, sapendo solo che si tratta di un protocollo diverso, non offrirebbe tale autenticazione).

Quindi, per prima cosa bisogno di ricerca esattamente ciò che quella cosa è NxBASIC, e per questo ho il sospetto di una domanda SO con i tag potrebbe aiutare. Poi, a seconda di ciò che si impara, arriva la questione interessante di definire un gestore per esso ... -! (

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top