2010-03-15 12 views
5

मैं वर्तमान में एक .NET अनुप्रयोग पर काम कर रहा हूं जो आईआईएस सर्वर पर होस्ट किए गए कुछ वेब अनुप्रयोगों के HTTP अनुरोध करता है। आवेदन ClickOnce के माध्यम से तैनात किया गया है और सरल नेटवर्क आर्किटेक्चर पर ठीक काम कर रहा है।
हमारे ग्राहकों में से एक का एक जटिल नेटवर्क है जिसमें एक कस्टम प्रमाणीकरण सर्वर शामिल है जिस पर उपयोगकर्ता को प्रमाणीकृत होने के लिए स्वयं को लॉग इन करना होता है और इस नेटवर्क पर अन्य अनुप्रयोगों तक पहुंच प्राप्त होती है। एक बार इस सर्वर पर प्रमाणीकृत हो जाने पर, सत्र कुकी बनाई जाती है और उपयोगकर्ता को भेजी जाती है। प्रत्येक बार जब उपयोगकर्ता नेटवर्क के एक सुरक्षित सर्वर पर अनुरोध करता है, तो इस कुकी को उपयोगकर्ता तक पहुंच प्रदान करने के लिए चेक किया जाता है। अगर यह कुकी अनुरोध के साथ नहीं भेजी जाती है, तो उपयोगकर्ता को लॉगिन पेज पर रीडायरेक्ट किया जाता है। इंटरनेट एक्सप्लोरर का उपयोग किया जाने वाला एकमात्र ब्राउज़र है।
इस कुकी को हमारे .NET एप्लिकेशन से एक्सेस नहीं किया जा सकता है क्योंकि इसे इंटरनेट एक्सप्लोरर प्रक्रिया की तुलना में किसी अन्य प्रक्रिया में निष्पादित किया गया है जिसका उपयोग उपयोगकर्ता को लॉग इन करने के लिए किया गया था, और इस प्रकार हमारे अनुरोधों के साथ नहीं भेजा गया है, जो सर्वर रीडायरेक्ट के बाद पूरा नहीं किया जा सकता लॉगिन पेज पर हमारे प्रत्येक अनुरोध।
मुझे मुख्य एप्लिकेशन COM को दृश्यमान बनाकर और एक टैग के साथ एक HTML पृष्ठ पर बनाकर इंटरनेट एक्सप्लोरर में अपने एप्लिकेशन को एम्बेड करने पर एक नज़र डाली थी। यह ठीक से काम कर रहा है, हालांकि ब्राउजर में पहले सेट की गई सत्र कुकीज़ तब नहीं भेजी जाती हैं जब ActiveX नियंत्रण वेब अनुरोध करता है।
मुझे उम्मीद थी कि सत्र की जानकारी साझा करना स्वचालित होगा (हालांकि मुझे वास्तव में विश्वास नहीं था)। तो मेरे प्रश्न हैं: क्या एम्बेडेड ActiveX में इस कुकी तक पहुंच बनाना संभव है? कैसे? क्या यह "सत्य" ActiveX नियंत्रण के बजाय .NET COM-interop घटक का उपयोग करने में कोई फर्क पड़ता है? साथ ही, इस तरह के व्यवहारों का वर्णन करने के लिए विशिष्ट सुरक्षा शब्द हैं (बशर्ते कि मैं सुरक्षा विषयों पर एक विशेषज्ञ नहीं हूं, उचित शब्दावली की कमी से आवश्यक संसाधनों को ढूंढना बहुत मुश्किल हो जाता है)?इंटरनेट एक्सप्लोरर और वेबपृष्ठ में होस्ट किए गए ActiveX घटकों के बीच सत्र कुकीज़ कैसे साझा करें?

मेरा लक्ष्य है कि मेरे एप्लिकेशन के अनुरोध मेजबान ब्राउज़र के अनुरोधों द्वारा किए गए अनुरोधों से समान दिखें, और मैंने सोचा कि ब्राउजर में एक्टिवएक्स नियंत्रण के रूप में एप्लिकेशन को एम्बेड करना ही इसे हासिल करने का एकमात्र तरीका था, हालांकि कोई सुझाव ऐसा करने के लिए दूसरे पर आपका स्वागत है।

उत्तर

2

एक तरह से मैं इस लक्ष्य को हासिल करने के लिए मिला ActiveX घटक इंटरनेट एक्सप्लोरर घटक (WebBrowser वस्तु) को एम्बेड करने के लिए, और मानक वर्ग वस्तुओं के बजाय मेरी HTTP अनुरोध करने के लिए इसका इस्तेमाल करने की है। ऐसा करने से, सत्र कुकीज़ (यहां तक ​​कि केवल-http वाले) इंटरनेट एक्सप्लोरर में सेट एम्बेडेड इंटरनेट एक्सप्लोरर के लिए उपलब्ध हो जाते हैं और स्वचालित रूप से प्रत्येक अनुरोध के साथ भेजा जाता है।

+0

यह काम करता है मदद नहीं होने के लिए खेद है! धन्यवाद! – jerem

0

मैं वास्तव में नेट, आईआईएस या ActiveX के बारे में ज्यादा पता नहीं है, लेकिन यह एम्बेडेड आवेदन करने के लिए कुकीज़ पारित करने के लिए संभव हो सकता है? जावास्क्रिप्ट में document.cookie है जिसमें वर्तमान डोमेन के लिए सभी कुकीज़ शामिल होनी चाहिए (वर्तमान पृष्ठ अनुरोध के लिए भेजे गए हैं)। संभवतः यह मान आपके एम्बेडेड एप्लिकेशन को किसी भी तरह से पास करना संभव है।

अस्पष्ट उत्तर के लिए खेद है। मुझे उम्मीद है कि यह आपको कम से कम एक नई दिशा में इंगित कर सकता है।

+1

दुर्भाग्यवश यह संभव नहीं है: कुकी केवल http-only कुकी है और इस प्रकार क्लाइंट कोड द्वारा एक्सेस नहीं किया जा सकता है। – jerem

+0

ठीक है, सब पर तो = डी – Chibu