如何捕获存在隐藏SAML POST的请求的SAML响应?

时间:2019-03-05 06:01:05

标签: authentication saml-2.0 browser-automation

我想从使用隐藏SAML身份验证的URL请求中捕获SAML响应。我能够在Fiddler中看到响应,但是如何保存它以进行进一步分析。通过URL发布重定向请求,带有“ 200 OK”的SAML响应到达提琴手,我想捕获它。是否有任何Powershell实用程序可用于执行相同操作,或者我是否必须使用某些模块自动使Fiddler本身。请提出是否还有其他选择。

我在Powershell中尝试了一些带有“ Invoke-WebRequest”的代码段,但是关于SAML响应却无法重现。

2 个答案:

答案 0 :(得分:0)

嘟嘟响我自己的喇叭,但是我的chrome plugin会帮助您。它为开发工具控制台添加了一个ta。然后,标签会显示所有流量,并突出显示与saml消息相同的消息。当您单击一个时,它会以清晰的格式显示格式正确的saml xml。

答案 1 :(得分:0)

我尝试了很多事情,最终在phantomjs的帮助下几乎完成了它。

var page = require('webpage').create();
page.customHeaders={'Authorization': 'Basic '+btoa('USER:PASSWORD')};

// hook into initial request
page.onResourceRequested = function(request) {
    //console.log("Request: "+ JSON.stringify(request, undefined, 4));
    var req_json = JSON.stringify(request, undefined, 4);
    if (request.method == "POST" && request.postData != null){
            //console.log("Request: "+ JSON.stringify(request, undefined, 4));
            console.log("SAML Req/Resp: \n" + request.postData);
    }
};

// hook to response
page.onResourceReceived = function(response) {
 //console.log("Response: "+ JSON.stringify(response, undefined, 4));
 var resp_json = JSON.stringify(response, undefined, 4);
};

page.open("https://yourURLwithhiddenSAML");

现在,我可以使用SAMLRequest和SAMLResponse获取后数据,并将输出重定向到某些文件。但是,我还注意到了另一件事。如果我添加

phantom.exit();

在该函数内部,我无法获取包含SAML的完整请求/响应生命周期。