Excel VBA:NTLM / Kerberos和VBA-Web / WinHttp协商身份validation

我想使用数字证书(.PFX文件)(NTLM身份validation)或使用Windows域身份validation(Kerberos和协商身份validation)来与要求身份validation的网站(在EXCEL VBA中)的REST API进行交互。 后者是首选,但我也不知道怎么做,我希望有人可以分享如何做这些authentication的代码。 我不能使用其他authentication方法(例如基本),因为它不被支持。

目前我正在使用VBA-Web(github:VBA-tools:VBA-Web),而且我已经设法与api进行交互,但是方式非常奇怪。 我跟踪了Chrome浏览器到网站的networking电话,并注意到它将cookies添加到每个电话的标题中。 因此,在我的要求中,我补充说:

webrequest.SetHeader "Cookie", "server.com.au=35558896564.55846.54545; SDASESSION=AQISFCwMasdffczd6afASFVHfgfgsdf%2BG35FsE%3D%40AAJTSwAJSDFSDTkMw%3D%3D%23; amlbcookie=07; JSESSIONID=000f:19pcqj2d1; server2.com.au=484566584.454584.41545" 

但是,这显然是烦人的,而不是用户友好的 – 因为每次我想要使用我的Excel VBA代码,我必须findcookies。

此外,在Chrome中跟踪authentication的networking调用之后,我注意到它经历了各种redirect,在redirect时收集所有的cookie。 在一个特定的呼叫期间,它进行“协商”authentication。

VBA-Web似乎是基于WinHTTP的,所以我环顾四周,我真的迷失在如何与WinHTTP(或WinINet等)接口来做这些authentication。 我已经看了setCredentials方法( https://msdn.microsoft.com/en-us/library/windows/desktop/aa384112(v=vs.85).aspx ),但我不知道什么用户名密码是NTLM还是Negotiate?

另外,我试过使用数字证书,但由于我有一个PFX文件,我不知道如何直接使用它。 我已经看到https://msdn.microsoft.com/en-us/library/windows/desktop/aa384055(v=vs.85).aspx但我不完全确定在安装PFX后我的证书存储在哪里。 我在安装过程中select个人,这是否意味着它在LOCAL_MACHINE \个人? 更重要的是,我不知道主题名称是什么。

Microsoft文档是用C ++或JScript编写的,所以对我也没有帮助。

所以,如果我能够validation和获取cookie,那么其余的应该没问题。 我如何用Excel中的两种身份validation方法中的任何一种来使用VBA?

PS我希望我的问题很清楚。 随意要求澄清。 我发现所有的答案都恢复到基本authentication,但我不能这样做。 我将与您分享我正在尝试与之交互的网站,但它在Intranet上。