使用系统凭证的 Go HTTP 请求中的 NTLM 身份验证
在此问题中,用户寻求有关在 Go HTTP 中执行 Windows NTML 身份验证的指导使用调用用户的系统凭据进行请求。他们提供了 C# 和 Python 的示例,演示了如何在这些语言中实现此目的。
解决方案在于利用 go-ole 库,该库允许在 Go 中使用 WinHTTPRequest。通过遵循与 Python 示例类似的方法,可以在 Go 中使用系统凭据实现 NTML 身份验证。
以下是 Go 中提供的用于完成此操作的代码片段:
package main
import (
"fmt"
ole "github.com/go-ole/go-ole"
"github.com/go-ole/go-ole/oleutil"
)
func main() {
ole.CoInitialize(0)
defer ole.CoUninitialize()
unknown, _ := oleutil.CreateObject("WinHTTP.WinHTTPRequest.5.1")
request, _ := unknown.QueryInterface(ole.IID_IDispatch)
oleutil.CallMethod(request, "SetAutoLogonPolicy", 0)
oleutil.CallMethod(request, "Open", "GET", "http://example.com", false)
oleutil.CallMethod(request, "Send")
resp := oleutil.MustGetProperty(request, "ResponseText")
fmt.Println(resp.ToString())
}
此代码初始化 WinHTTPRequest 对象,设置自动登录策略以使用当前用户的凭据,打开对指定 URL 的 GET 请求,发送请求,并检索响应文本。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3