Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Mencapai Pengesahan NTLM dengan Bukti Kelayakan Sistem dalam Permintaan HTTP Go?
Pengesahan NTLM dengan Bukti Kelayakan Sistem dalam Permintaan HTTP Go
Sebagai pembangun, anda mungkin menghadapi senario di mana anda perlu membuat permintaan HTTP dan mengesahkan menggunakan bukti kelayakan sistem pengguna yang menjalankan aplikasi anda. Dalam persekitaran Windows, ini boleh dilakukan menggunakan pengesahan NTLM (Negotiate Token Level Message). Walaupun terdapat penyelesaian yang tersedia dalam C# dan Python, pelaksanaan dalam Go adalah kurang mudah.
Penyelesaian dengan Go-ole
Selepas meneliti, kami mendapati bahawa Pustaka go-ole menyediakan akses kepada antara muka WinHTTPRequest, yang boleh digunakan untuk melaksanakan pengesahan NTLM dengan kelayakan sistem. Begini cara untuk mencapainya:
<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>
Kod ini memulakan pustaka ole dan mencipta contoh WinHTTPRequest. Kaedah SetAutoLogonPolicy dipanggil untuk membolehkan penggunaan kelayakan sistem. Kemudian, permintaan dihantar dengan kaedah Buka dan Hantar. Akhir sekali, teks respons diperoleh menggunakan sifat ResponseText.
Kesimpulan
Menggunakan perpustakaan go-ole, anda boleh memanfaatkan antara muka WinHTTPRequest untuk melaksanakan pengesahan NTLM dengan sistem kelayakan dalam Go, menyediakan pendekatan yang lancar untuk permintaan HTTP dalam persekitaran Windows.
Atas ialah kandungan terperinci Bagaimana untuk Mencapai Pengesahan NTLM dengan Bukti Kelayakan Sistem dalam Permintaan HTTP Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!