【问题标题】:How to capture the SAML response of a request in which hidden SAML POST is present?如何捕获存在隐藏 SAML POST 的请求的 SAML 响应?
【发布时间】:2019-03-05 06:01:05
【问题描述】:

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

我在 Powershell 中尝试了一些带有“Invoke-WebRequest”的 sn-ps,但无法重现很多关于 SAML 响应的内容。

【问题讨论】:

  • 我可以在 Chrome 浏览器开发工具的帮助下手动导出 HAR(HTTP 存档)。现在需要对通过 SAML 进行身份验证的多个 URL 进行自动化处理,然后从每个 HAR 文件中提取 SAML 响应。

标签: authentication saml-2.0 browser-automation


【解决方案1】:

我自己的喇叭,但我的chrome plugin 会帮助你。它向开发工具控制台添加了一个 ta。然后选项卡显示所有流量并突出显示带有 saml 消息的流量。当您单击一个时,它会以格式良好的明文向您显示 saml xml。

【讨论】:

  • 您好 Stefan,感谢您的回复。对于调试和故障排除,我只使用了很长时间。在尝试了很多选项之后,我找到了一个非常有用的解决方案,它使用 phantomjs 作为我们所有请求/响应的无头浏览器。
【解决方案2】:

我尝试了很多东西,最后在 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 获取 postdata 并将输出重定向到某个文件。但是,我还注意到另一件事。如果我添加

phantom.exit();

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

【讨论】:

    猜你喜欢
    • 2014-12-26
    • 2015-05-19
    • 2022-01-22
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 1970-01-01
    • 2015-01-21
    相关资源
    最近更新 更多