गो HTTP अनुरोधों में सिस्टम क्रेडेंशियल के साथ एनटीएलएम प्रमाणीकरण
एक डेवलपर के रूप में, आपको ऐसे परिदृश्यों का सामना करना पड़ सकता है जहां आपको HTTP अनुरोध करने और प्रमाणित करने की आवश्यकता होती है आपके एप्लिकेशन को चलाने वाले उपयोगकर्ता के सिस्टम क्रेडेंशियल का उपयोग करना। विंडोज़ परिवेश में, यह एनटीएलएम (नेगोशिएट टोकन लेवल मैसेज) प्रमाणीकरण का उपयोग करके किया जा सकता है। जबकि C# और Python में समाधान उपलब्ध हैं, Go में कार्यान्वयन कम सरल है।
Solution with 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())
}
यह कोड ओले लाइब्रेरी को आरंभ करता है और एक WinHTTPRequest उदाहरण बनाता है। सिस्टम क्रेडेंशियल्स के उपयोग को सक्षम करने के लिए SetAutoLogonPolicy विधि को कॉल किया जाता है। फिर, अनुरोध ओपन और सेंड विधियों के साथ भेजा जाता है। अंत में, रिस्पॉन्सटेक्स्ट प्रॉपर्टी का उपयोग करके प्रतिक्रिया पाठ प्राप्त किया जाता है। गो में क्रेडेंशियल, विंडोज़ वातावरण में HTTP अनुरोधों के लिए एक सहज दृष्टिकोण प्रदान करता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3