首页  >  文章  >  后端开发  >  如何在 Go HTTP 请求中使用系统凭据进行 NTLM 身份验证?

如何在 Go HTTP 请求中使用系统凭据进行 NTLM 身份验证?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-25 21:24:02950浏览

How can I use system credentials for NTLM authentication in Go HTTP requests?

使用系统凭据在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn