使用系統憑證的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