首頁  >  文章  >  後端開發  >  如何在 Go HTTP 請求中使用 Windows 系統憑證執行 NTLM 驗證?

如何在 Go HTTP 請求中使用 Windows 系統憑證執行 NTLM 驗證?

Susan Sarandon
Susan Sarandon原創
2024-10-25 00:37:02252瀏覽

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

使用Windows 系統憑證的Go HTTP 請求中的NTLM 驗證

在Web 開發領域,驗證對於保護對受保護資源的訪問至關重要。 NTLM 是一種常見的驗證機制,它涉及使用使用者的 Windows 憑證來驗證其身分。本文探討如何利用 Windows 使用者的系統憑證在 Go HTTP 要求中實作 NTLM 驗證。

傳統上,NTLM 驗證需要手動指定使用者名稱和密碼,但我們的目標是避免這個繁瑣的過程。透過利用 WinHTTPRequest COM 物件的功能,我們可以利用系統的預設憑證來實現無縫身份驗證體驗。

為了在 Go 中實現這一點,我們使用 go-ole 庫,它提供了一個交互接口與 COM 物件。以下是示範此方法的程式碼片段:

<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 的HTTP GET 請求,然後傳送的請求。最後,我們檢索回應文字。系統將無縫取得使用者的憑證並執行 NTLM 驗證,從而允許存取受保護的資源。

以上是如何在 Go HTTP 請求中使用 Windows 系統憑證執行 NTLM 驗證?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn