mrd*_*ako 5 python authentication
我通过 Python 脚本访问 Confluence 页面来检索需要解析的信息。我的组织将 DUO 2FA 添加到 Confluence 登录中。我的登录尝试返回标准 DUO iFRAME 页面。
当我通过浏览器登录时,通常会发送一个 PUSH 消息,而无需我执行任何操作。不过,我的 Python 请求似乎没有这样做(我没有得到 PUSH)。
这是我的测试代码:
import cookielib
import urllib
import urllib2
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders = [('User-agent', 'RedditTesting')]
urllib2.install_opener(opener)
payload = {
'op': 'login-main',
'os_username': MY_USERNAME,
'os_password': MY_PASSWORD
}
url = MY_URL
data = urllib.urlencode(payload)
req = urllib2.Request(url, data)
resp = urllib2.urlopen(req)
resp.read()
Run Code Online (Sandbox Code Playgroud)
这会产生以下结果(为了可读性而进行解析):
<!DOCTYPE html>
<html>
<head>
<title>Duo Authentication</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body style="text-align: center;">
<h1>Duo Authentication</h1>
<div>
<script src="/download/resources/com.duosecurity.confluence.plugins.duo-twofactor:resources/Duo-Web-v2.js"></script>
<script>
Duo.init({ \'host\': OUR_API_SERVER,
\'sig_request\': MY_SIGNED_RESPONSE_CODE,
\'post_action\': "\\/plugins\\/servlet\\/duologin?duo.originalurl.key=MY_URL"
})
</script>
<iframe id="duo_iframe" frameborder="0"></iframe>
<style>
#duo_iframe {
width: 100%;
min-width: 304px;
max-width: 620px;
height: 330px;
}
</style>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我是应该解析 sig_request 值并发送 /auth API 请求,还是应该已经向我发送 PUSH 了。不确定在这种情况下正常行为应该是什么,我能找到的所有文档似乎都是针对服务器端的。
提前致谢。