ऐसा लगता है कि आप Windows Communication Foundation Authentication Service देख रहे हैं।
संपादित करें:
प्रश्न अधिक ध्यान से फिर से पढ़ने (और एरियल की टिप्पणी के बाद) के बाद मैं ऊपर सुझाव वापस लेना चाहते हैं। डब्ल्यूसीएफ प्रमाणीकरण सेवा इस परिदृश्य में ज्यादा नहीं जोड़ पाएगी।
मैं WCF और ASP.NET के बीच ऐसा नहीं किया है, हालांकि मैं उपयोगकर्ताओं को प्रमाणीकृत रूपों साझा करने के लिए ASP.NET अनुप्रयोगों कॉन्फ़िगर किया है, शायद मैं किसी तरह से कर सकते हैं।
सुनिश्चित करना है कि दोनों आवेदनों एन्क्रिप्ट कर सकते हैं/उसी तरह आपको दोनों ऐप्लिकेशन (web.config या machine.config में के लिए configure the <machineKey>
element आप मशीन या आवेदन के स्तर पर ऐसा करना चाहते हैं, इस आधार पर करना चाहिए में रूपों प्रमाणीकरण कुकी को डिक्रिप्ट करने के लिए)। आपको validation
, validationKey
, decryption
और decryptionKey
विशेषताओं को देखना चाहिए।
सुनिश्चित करें कि दोनों web.config फ़ाइलों में अपने <forms>
तत्वों समान रूप से कॉन्फ़िगर कर रहे हैं। विशेष रूप से name
, path
और domain
विशेषताएँ।
यह संभव है कि यह केवल एक वेब ब्राउज़र से करने के लिए/पारित कर दिया कुकीज़ पर लागू होता है (लेकिन इस मामले में उपयोगी हो सकता है): कुकीज़ वेबसाइटों के बीच पारित करने की अनुमति के लिए www.foo.com और bar.foo .com आप forms
तत्व कॉन्फ़िगर के रूप में कुकीज़ दूसरे से एक साइट पर स्थापित किया जाना है और सफलतापूर्वक पारित कर दिया अनुमति देने के लिए इस प्रकार है:
<forms ... domain=".foo.com" ... />
WCF सेवा करने के लिए कुकी पासिंग मुश्किल सा होने की संभावना है। मैं बहुत WCF के साथ अनुभव नहीं कर रहा हूँ, इसलिए I've adapted code from kennyw.com:
HttpRequestMessageProperty httpRequestProperty = new HttpRequestMessageProperty();
httpRequestProperty.Headers.Add(HttpRequestHeader.Cookie, "<Forms Authentication Cookie>");
using (OperationContextScope scope = new OperationContextScope(serviceClient.InnerChannel))
{
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty;
serviceClient.MethodName();
}
आप आईआईएस (और नहीं स्वयं की मेजबानी) के भीतर WCF होस्ट कर रहे हैं, तो आप
की स्थापना करके ASP.NET प्रसंस्करण पाइप लाइन के माध्यम WCF अनुरोध पारित कर सकते हैं
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" ... />
</system.serviceModel>
आप स्वयं की मेजबानी आप OperationContext.Current.IncomingMessageProperties
में भेजे संदेश के गुण का उपयोग कर अनुरोध हेडर की जांच करने और रूपों प्रमाणीकरण कुकी मूल्य मिलता है और FormsAuthentication.Decrypt(string)
का उपयोग कर इसे डिक्रिप्ट कर सकता है कर रहे हैं।
मुझे नहीं पता कि इनमें से कोई भी काम करेगा या नहीं, लेकिन यह सुनना अच्छा लगेगा कि यह करता है!
हैलो एरियल, आप इस के साथ कैसे पहुंचे? मैं इसी तरह के मुद्दों वाले किसी को जानता हूं। –