前の質問への回答は、Nexus が「NxBASIC」と呼ばれるカスタム認証ヘルパーを実装していることを示していました。
Python でハンドラーの実装を開始するにはどうすればよいですか?
アップデート:
Alex の提案に従ってハンドラーを実装することは正しいアプローチのように見えますが、authreq からスキームとレルムを抽出しようとして失敗します。authreq の戻り値は次のとおりです。
str: NxBASIC realm="Sonatype Nexus Repository Manager API""
AbstractBasicAuthHandler.rx.search(authreq) は単一のタプルのみを返します:
tuple: ('NxBASIC', '"', 'Sonatype Nexus Repository Manager API')
したがって、scheme,realm = mo.groups() は失敗します。私の限られた正規表現の知識から、AbstractBasicAuthHandler の標準正規表現はスキームとレルムに一致するはずですが、そうではないようです。
正規表現は次のとおりです。
rx = re.compile('(?:.*,)*[ \t]*([^ \t]+)[ \t]+'
'realm=(["\'])(.*?)\\2', re.I)
更新 2: AbstractBasicAuthHandler の検査から、デフォルトの処理は次のようになります。
scheme, quote, realm = mo.groups()
これに変更するとうまくいきます。正しいレルムに対してパスワードを設定するだけです。ありがとうアレックス!