2009-07-03 6 views
2

사용할 작업에 대한 인증이 필요한 Nexus 서버와의 상호 작용을 테스트하려고하지만 내부 프록시 서버도 처리해야합니다.httplib2로 인증 및 프록시 서버 처리

필자의 제한적인 이해를 토대로 오프너에 여러 개의 처리기를 추가 할 수 있습니다. 그러나 나는 아직도 401 응답을 얻고있다. 사용자 이름과 비밀번호가 유효한지 확인했습니다. 나는 이것을하기 위해 쿠키가 필요한지, 어떻게 쿠키가 포함되는지에 대해서는 확실하지 않습니다. 제안 사항이 있으십니까?

>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 

업데이트 넥서스 Restlet's AuthenticationHelper의 사용자 지정 버전을 구현하는 것 :

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) 

은 결과 URLError의 헤더 필드입니다. Alex 덕분에 나는 무엇을 찾아야할지 알았습니다.

답변

3

받고있는 401 응답의 전체 헤더를 표시 할 수 있습니까? 어쩌면 기본 인증 요청이 아니며 아마도 자체 인증을 원할 수도 있습니다. 헤더를 보지 않고도 추측하기 어렵습니다.

편집 : 헤더를 보여 주셔서 감사합니다 (내가 그들을 포맷 그들이 읽을 수 있었다 "코드"다른).

내가 "Basic"을 원하지 않는다면, 다른 Nexus 소유의 ... NxBASIC 인증 프로토콜을 원한다. 나는 그것에 대해 들어 본 적이 없다. (나는 아무것도 모른다. Nexus에 관해서) 그리고 나는 둘 다 기본 인증 핸들러를 사용하고 있다고 상상하지 못한다. (NxBASIC이 어떻게 든 일반 기본 인증을 받아들이더라도 핸들러는 다른 프로토콜이라는 것을 알고 그러한 인증을 제공하지 않을지라도).

그래서 먼저 NxBASIC이 무엇인지 정확하게 조사해야하며, 올바른 태그가있는 SO 질문이 도움이 될 것으로 의심됩니다. 그럼, 당신이 배운 내용에 따라, 그것에 대한 처리기를 정의하는 흥미로운 문제가 온다 ...! - (

+0

Alex에게 감사의 말을 전했다. –

+0

... 헤더를보고 쉽게 내 의문을 확인할 수있게되었다. 기본 인증 요청을받지 못했습니다. 수정 된 답변을 참조하십시오. –