上一个问题的答案显示 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()
更改为此有效。我现在只需要针对正确的领域设置密码。谢谢亚历克斯!