gpt4 book ai didi

windows - 使用 VBA 从具有 SAML 身份验证的网站下载文件

转载 作者:可可西里 更新时间:2023-11-01 09:28:48 27 4
gpt4 key购买 nike

我想构建一个 excel vba 插件,能够从当前受 SAML 身份验证保护的内联网网站下载 excel 文件。

如果我尝试使用 Internet Explorer 或 Google Chrome 下载文件,文件会自动开始下载而无需输入任何凭据,我认为这是因为这些浏览器依赖于某种集成的 Windows 身份验证。

如果我尝试使用 winhttp.winhttprequest.5.1 等 VBA 对象进行下载,我会得到一些 html 页面,我认为它正在启动 SAML 身份验证(所以我假设我使用的 winhttp.winhttprequest.5.1 对象不支持SAML 身份验证)。

是否有任何简单的方法可以使用 VBA 进行 SAML 身份验证,或者我是否必须手动编写身份验证步骤代码?

最佳答案

问题是,虽然随 Windows/Office 分发的各种库会为您管理 HTTP 和 SSL,但要找到一个执行 SAML 的库并不容易。 .NET 有 Windows Communication Foundation (WCF),可以在 VBA 中使用,但我不知道它如何与网站一起工作。

如果您不能让 WCF 为您执行 SAML,最简单的方法可能是自动化 Internet Explorer,因为 Internet Explorer 已经包含 SAML 功能。不幸的是,在 Internet Explorer 中难以自动化的一件事是下载文件,特别是如果您不希望在用户屏幕上弹出的内容。

您需要使用 Windows API 以编程方式与 Internet Explorer 的“另存为”对话框交互,同时将其隐藏。以下文章介绍了如何执行此操作:http://www.codeproject.com/Articles/2847/Automated-IE-SaveAs-MHTML本文使用 C++,但您可以从 VBA 进行相同的 API 调用。

我想这是弄清楚服务器使用的是哪种 SAML,然后决定哪个更容易:(a) 自动化 Internet Explorer 或 (b) 编写您自己的 SAML 客户端。

如果您打算编写自己的 SAML 客户端,则可以使用 MSXML 来使用和生成所需的 XML 并编码/解码 base64。

关于windows - 使用 VBA 从具有 SAML 身份验证的网站下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26841051/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com