2

使用する操作の認証が必要なNexusサーバーとの相互作用をテストしようとしていますが、内部プロキシサーバーも処理する必要があります。

私の(限られた)理解に基づいて、オープナーに複数のハンドラーを追加できます。しかし、私はまだ401応答を受け取っています。ユーザー名とパスワードが有効であることを確認しました。これを行うためにCookieが必要かどうか、必要な場合はどのように含まれるかはわかりません。助言がありますか?

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のカスタムバージョンを実装しているようです。アレックスのおかげで、私は何を探すべきかを知っていました。

4

1 に答える 1

3

取得している401応答の完全なヘッダーを表示できますか?多分それは基本認証要求ではないかもしれません、多分それはそれ自身の認証を望んでいるプロキシです-言われたヘッダーを見ずに推測するのは難しいです!

編集:ヘッダーを表示していただきありがとうございます(ヘッダーを「コード」として再フォーマットしました。それ以外の場合は読み取り不能でした)。

私が疑ったように、それは「基本」を必要とせず、他の(Nexus独自の...?)「NxBASIC」認証プロトコルを必要とします-私はそれについて聞いたことがありません(私はNexusについて何も知りません)そしてどちらも使用している基本認証ハンドラーを持っていないことを想像します(NxBASICがプレーンな基本認証を何らかの形で受け入れたとしても、ハンドラーは別のプロトコルであることだけを知っていても、そのような認証を提供しません)。

したがって、最初にそのNxBASICが何であるかを正確に調査する必要があります。そのためには、適切なタグを使用したSOの質問が役立つと思います。次に、学習内容に応じて、ハンドラーを定義するという興味深い問題が発生します...!-(

于 2009-07-03T17:22:58.803 に答える