.PFX
デジタル証明書 (ファイル) (NTLM 認証) を使用するか、Windows ドメイン認証 (Kerberos & ネゴシエート認証) を使用して、authentication を必要とする Web サイト (EXCEL VBA) の REST API とやり取りしたいと考えています。後者が推奨されますが、どちらの方法もわかりません。これらの認証のいずれかを行う方法について誰かがコードを共有できることを望んでいました。サポートされていないため、他の認証方法 (基本など) を使用できません。
現在、私は VBA-Web ( github:VBA-tools:VBA-Web
) を使用しており、API とのインターフェイスに成功しましたが、非常に奇妙な方法でした。Chrome から Web サイトへのネットワーク呼び出しを追跡したところ、すべての呼び出しのヘッダーに Cookie が追加されていることがわかりました。したがって、私のリクエストでは、次のように追加します。
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 コードを使用するたびに Cookie を見つけなければならないからです。
さらに、Chrome で認証のネットワーク呼び出しを追跡した後、さまざまなリダイレクトを通過し、リダイレクトされるたびにすべての Cookie を収集していることに気付きました。1 つの特定の呼び出し中に、"negotiate"
認証を行います。
VBA-Web は に基づいているようです。そのため、いろいろ調べてみましたが、これらの認証を行うために (または WinINet などと) やり取りWinHTTP
する方法に本当に迷いました。メソッドLinkWinHTTP
を見てきましたが、NTLM または Negotiate のユーザー名とパスワードがどうなるかわかりませんか?setCredentials
または、代わりにデジタル証明書を使用しようとしましたが、PFX ファイルがあるため、それを直接使用する方法がわかりません。Linkを見たことがありますが、PFX のインストール後に証明書がどこに保存されているか完全にはわかりません。インストール時に Personal を選択しましたが、これは LOCAL_MACHINE\Personal にあるということですか? さらに重要なことに、サブジェクト名が何であるかわかりません。
Microsoft のドキュメントはC++
またはJScript
にあるため、どちらも役に立ちません。
したがって、認証して Cookie を取得できれば、残りは問題ありません。VBA を使用して、Excel で 2 つの認証方法のいずれかを使用してこれを行うにはどうすればよいですか?
PS私の質問が明確であることを願っています。ご不明な点がございましたらお気軽にお問い合わせください。私が見つけたすべての答えは基本認証に戻りますが、それはできません。私が接続しようとしている Web サイトを紹介したいと思いますが、それはイントラネット上にあります。