使用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中文網其他相關文章!