使用系统凭据在 Go HTTP 请求中进行 NTLM 身份验证
可以通过利用用户的系统凭据来简化 Go HTTP 请求中的 NTLM 身份验证。在 C# 和 Python 等其他语言中,这可以使用内置库来实现。
要在 Go 中使用系统凭据执行 NTLM 身份验证,您可以利用 go-ole 包。该包允许与 COM(组件对象模型)对象交互,包括 WinHTTPRequest 对象。
下面的代码片段演示了如何实现此目的:
<code class="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()) }</code>
通过利用 WinHTTPRequest 对象和将 AutoLogonPolicy 设置为 0,系统凭据将自动应用于 HTTP 请求。这种方法简化了 Go 中的 NTLM 身份验证,允许您在不显式提供用户名和密码凭据的情况下发出请求。
以上是如何在 Go HTTP 请求中使用系统凭据进行 NTLM 身份验证?的详细内容。更多信息请关注PHP中文网其他相关文章!