"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تحقيق مصادقة NTLM باستخدام بيانات اعتماد النظام في طلبات Go HTTP؟

كيفية تحقيق مصادقة NTLM باستخدام بيانات اعتماد النظام في طلبات Go HTTP؟

تم النشر بتاريخ 2024-11-12
تصفح:612

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

مصادقة 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