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

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

Barbara Streisand
Barbara Streisand原创
2024-10-26 11:46:30968浏览

How to Perform NTLM Authentication in Go HTTP Requests with System Credentials?

使用系统凭据的 Go HTTP 请求中的 NTLM 身份验证

在此问题中,用户寻求有关在 Go HTTP 中执行 Windows NTML 身份验证的指导使用调用用户的系统凭据进行请求。他们提供了 C# 和 Python 的示例,演示了如何在这些语言中实现此目的。

解决方案在于利用 go-ole 库,该库允许在 Go 中使用 WinHTTPRequest。通过遵循与 Python 示例类似的方法,可以在 Go 中使用系统凭据实现 NTML 身份验证。

以下是 Go 中提供的实现此目的的代码片段:

<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 对象,设置自动登录策略以使用当前用户的凭据,打开对指定 URL 的 GET 请求,发送请求,并检索响应文本。

以上是如何使用系统凭据在 Go HTTP 请求中执行 NTLM 身份验证?的详细内容。更多信息请关注PHP中文网其他相关文章!

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