مصادقة NTLM باستخدام بيانات اعتماد النظام في طلبات Go HTTP
كمطور، قد تواجه سيناريوهات حيث تحتاج إلى تقديم طلبات HTTP والمصادقة باستخدام بيانات اعتماد النظام للمستخدم الذي يقوم بتشغيل التطبيق الخاص بك. في بيئات Windows، يمكن القيام بذلك باستخدام مصادقة NTLM (التفاوض على مستوى الرمز المميز). على الرغم من وجود حلول متاحة في C# وPython، إلا أن التنفيذ في Go أقل وضوحًا.
الحل باستخدام Go-ole
بعد البحث، وجدنا أن توفر مكتبة go-ole إمكانية الوصول إلى واجهة WinHTTPRequest، والتي يمكن استخدامها لإجراء مصادقة NTLM باستخدام بيانات اعتماد النظام. وإليك كيفية تحقيق ذلك:
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())
}
يعمل هذا الرمز على تهيئة مكتبة ole وإنشاء مثيل WinHTTPRequest. يتم استدعاء الأسلوب SetAutoLogonPolicy لتمكين استخدام بيانات اعتماد النظام. وبعد ذلك، يتم إرسال الطلب باستخدام طريقتي الفتح والإرسال. أخيرًا، يتم الحصول على نص الاستجابة باستخدام خاصية ResponseText.
الاستنتاج
باستخدام مكتبة go-ole، يمكنك الاستفادة من واجهة WinHTTPRequest لإجراء مصادقة NTLM مع النظام بيانات الاعتماد في Go، مما يوفر أسلوبًا سلسًا لطلبات HTTP في بيئات Windows.تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3