Frage

Ich versuche, Interaktionen mit einem Nexus-Server zu testen, die eine Authentifizierung für die Operationen erfordern ich verwenden will, aber ich brauche auch einen internen Proxy-Server zu handhaben.

Auf der Grundlage meiner (begrenzten) Verständnis kann ich mehrere Handler zu dem Opener hinzufügen. Allerdings bin immer ich noch eine 401-Antwort. Ich habe den Benutzernamen und das Passwort gültig sind, überprüft. Ich bin nicht sicher, ob Cookies erforderlich ist, dies zu tun, und wenn ja, wie würden sie einbezogen werden. Irgendwelche Vorschläge?

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)

Dies ist das resultierende URLError der Header-Feld:

>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

Aktualisieren Es scheint Nexus eine benutzerdefinierte Version von AuthenticationHelper der Restlet. Dank Alex wusste ich, was zu suchen.

War es hilfreich?

Lösung

Können Sie die vollständigen Header der 401-Antwort zeigen Sie bekommen? Vielleicht ist es kein Grund Auth Anfrage, vielleicht ist es der Proxy seine eigene Authentifizierung zu wollen - es ist schwer zu erraten, ohne dass die Header zu sehen

Bearbeiten . Dank für das Zeigen der Header (I neu formatiert sie als "Code" sonst waren sie unlesbar)

Wie ich vermuten, es will nicht, „Basic“, will es eine anderes (Nexus proprietären ...?) „NxBASIC“ Authentifizierungsprotokoll - ich habe darüber noch nie gehört (ich weiß nichts über Nexus) und ich denke, weder die grundlegende Authentifizierung Handler hat Sie verwenden (auch wenn NxBASIC irgendwie schlicht Standardauthentifizierung akzeptiert, den Handler, wohl wissend, nur, dass es ein anderes Protokoll ist, würde nicht eine solche Authentifizierung bieten).

So, müssen Sie zunächst genau recherchieren, was die NxBASIC Sache ist, und dass ich vermute, eine Frage SO mit den richtigen Tags helfen könnte. Dann, je nachdem, was Sie lernen, kommt die interessante Frage der einen Handler für sie definieren ... - (

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top