문제

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

내 (제한된) 이해를 바탕으로 오프너에 여러 핸들러를 추가 할 수 있습니다. 그러나 나는 여전히 401 응답을 받고 있습니다. 사용자 이름을 확인했고 비밀번호가 유효합니다. 쿠키 가이 작업을 수행 해야하는지 확실하지 않습니다. 그렇다면 어떻게 포함되는지 확실하지 않습니다. 제안이 있습니까?

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의 헤더 필드입니다.

>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

업데이트Nexus는 사용자 정의 버전을 구현하는 것 같습니다 Restlet의 AuthenticationHelper. 알렉스 덕분에 무엇을 찾아야하는지 알았습니다.

도움이 되었습니까?

해결책

당신이받는 401 응답의 전체 헤더를 보여줄 수 있습니까? 어쩌면 그것은 기본 인증 요청이 아닐 수도 있습니다. 아마도 자체 인증을 원하는 대리 일 수도 있습니다. 헤더를 보지 않고 추측하기가 어렵습니다!

편집하다: 헤더를 보여 주셔서 감사합니다 (나는 그것들을 읽을 수 없었던 "코드"로 재구성했습니다).

내가 의심했듯이, 그것은 "기본"을 원하지 않으며, 다른 (Nexus 독점 ...?) "nxbasic"인증 프로토콜을 원합니다. 나는 당신이 사용하고있는 기본 인증 핸들러를 가지고 있지 않다고 생각합니다 (nxbasic이 어떻게 든 평범한 기본 인증을 받아 들인 경우에도, 다른 프로토콜이라는 것을 아는 핸들러는 그러한 인증을 제공하지 않을 것입니다).

따라서 먼저 NXBASIC이 무엇인지 정확하게 연구해야하며, 그로 인해 올바른 태그가있는 SO 질문이 도움이 될 수 있습니다. 그런 다음, 당신이 배우는 것에 따라, 핸들러를 정의하는 흥미로운 문제가 있습니다 ...!-(.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top