Question

Je tente de tester les interactions avec un serveur Nexus qui nécessite une authentification pour les opérations que je l'intention d'utiliser, mais je dois aussi gérer un serveur proxy interne.

Sur la base de mon (limitée) comprendre que je peux ajouter plusieurs gestionnaires à l'ouvre. Cependant, je suis toujours obtenir une réponse 401. J'ai vérifié le nom d'utilisateur et mot de passe sont valides. Je ne suis pas certain si les cookies sont tenus de le faire et si oui, comment ils seraient inclus. Toutes les suggestions?

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)

Ceci est le champ d'en-têtes de URLError résultant:

>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

Mise à jour Il semble Nexus mettre en œuvre une version personnalisée de AuthenticationHelper de Restlet. Merci à Alex je savais ce qu'il faut chercher.

Était-ce utile?

La solution

Pouvez-vous montrer les en-têtes complets de la réponse que vous obtenez 401? Peut-être que ce n'est pas une demande d'authentification de base, peut-être est le proxy vouloir sa propre authentification - il est difficile de deviner sans voir ces en-têtes

Modifier :. Merci pour montrer les en-têtes (je les ai reformaté "code" sinon ils étaient illisibles)

Comme je le pensais, il ne veut pas « Basic », il veut un autre (Nexus propriétaire ...?) Protocole d'authentification « NxBASIC » - Je ne l'ai jamais entendu parler (je ne sais pas quoi que ce soit au sujet Nexus) et j'imagine n'a ni le gestionnaire d'authentification de base que vous utilisez (même si NxBASIC en quelque sorte accepté simplement l'authentification de base, le gestionnaire, sachant seulement qu'il est un protocole différent, ne serait pas offrir une telle authentification).

Alors, vous devez d'abord la recherche exactement ce que cette chose est NxBASIC, et que je soupçonne une question SO avec les balises droite pourrait aider. Ensuite, en fonction de ce que vous apprenez, vient la question intéressante de la définition d'un gestionnaire pour elle ... - (

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top