2012-11-22 11 views
24

मैं वेबसाइट के उपयोगकर्ताओं को प्रमाणीकृत करने और मेरी एमवीसी वेबसाइट और डब्ल्यूसीएफ सेवाओं के बीच संचार को सुरक्षित करने के लिए नई 4.5 डब्ल्यूआईएफ सामग्री का उपयोग कर रहा हूं।डब्ल्यूआईएफ 4.5 बूटस्ट्रैप कॉन्टेक्स्ट सुरक्षा टोकन शून्य

मेरे पास बूटस्ट्रैप संदर्भ को सहेजने के लिए कॉन्फ़िगर किया गया वेबसाइट है ताकि मैं सेवा परत के सभी अनुरोधों के लिए एक ही सुरक्षा टोकन का पुन: उपयोग कर सकूं।

सामान्य परिस्थितियों में सभी प्रमाणित प्रत्येक वेबसाइट अनुरोध के साथ ठीक काम कर रहे हैं और सुरक्षा टोकन डब्ल्यूसीएफ कॉल को सुरक्षित करने के लिए संदर्भ के माध्यम से उपलब्ध कराया गया है।

यदि वेबसाइट ऐप डोमेन रीसेट हो गया है (उदाहरण के लिए ऐप का निर्माण करते समय ऐप बनाना) अभी भी प्रमाणीकृत होगा लेकिन सुरक्षा टोकन डब्ल्यूसीएफ कॉल पर जाने के संदर्भ में अब उपलब्ध नहीं है।

डिबगिंग BootstrapContext यह 4 उपयोगी गुण है:

SecurityToken 
SecutiryTokenHandler 
Token 
TokenBytes 

पूर्व एप्लिकेशन डोमेन SecurityToken और SecurityTokenHandler मान रीसेट, और बाद टोकन एक मूल्य है रीसेट करें।

रीसेट के बाद टोकन के मूल्य को नजरअंदाज करना ऐसा लगता है कि यह कच्चा SAML एक्सएमएल है, इसलिए मैं संभवतः एक पूर्ण Secutiry टोकन को फिर से बहाल कर सकता हूं लेकिन यह अजीब व्यवहार लगता है कि मुझे कोई दस्तावेज नहीं मिल रहा है।

कोई विचार जो मैं यह सुनिश्चित करने के लिए कर सकता हूं कि सुरक्षा टोकन हमेशा टोकन एक्सएमएल के साथ गड़बड़ाने के लिए उपलब्ध है?

अद्यतन

dotPeek का उपयोग करते हुए देखने के लिए कारण है कि यह इस तरह से होने की जरूरत पर क्या ढांचे स्रोत कोड में चल रहा है मैं निष्पादन पथ है कि इस व्यवहार casues देख सकते हैं, लेकिन मैं किसी भी कारण से निर्धारित नहीं कर सका और यह कैसे किया जा सकता है।

अंत में मैं छोड़ दिया इस पर काम किया और अब कोड का निम्न भाग का उपयोग सुनिश्चित करने के लिए मेरे पास करने की कोशिश कर एक टोकन

if (context.SecurityToken != null) 
{ 
    token = context.SecurityToken; 
} 
else if (context.Token.IsNotEmpty()) 
{ 
    var handlers = FederatedAuthentication.FederationConfiguration.IdentityConfiguration.SecurityTokenHandlers; 
    token = handlers.ReadToken(new XmlTextReader(new StringReader(context.Token))); 
} 

क्या मैं अब के बारे में मैं इस के पीछे कुछ तर्क चूक गए है चिंतित हूँ व्यवहार और ऊपर मेरा फिक्स कुछ बिंदु पर उड़ने जा रहा है।

+0

ओविन एक ही WIF नहीं है? W3wp.exe repro चरणों को मारने के लिए – Kiquenet

उत्तर

4

मैंने एक ही मुद्दे पर ठोकर खाई है। मैं टोकन को टोकन के एक्सएमएल प्रतिनिधित्व और सुरक्षा टोकन को शून्य होने के लिए देखता हूं। मैंने यह भी देखा कि w3wp.exe को मारकर पुन: उत्पन्न करना वास्तव में आसान है।

+0

+1 – Josh

0

मुझे एक ही समस्या थी जब मैंने माइक्रोसॉफ्ट से ClaimsAwareWebFarm नमूना लागू किया। समस्या तब उत्पन्न होती है जब आप इस अनुभाग को web.config में जोड़ते हैं:

<caches> 
    <sessionSecurityTokenCache type="CacheLibrary.SharedSessionSecurityTokenCache, CacheLibrary"> 
     <!--cacheServiceAddress points to the centralized session security token cache service running in the web farm.--> 
     <cacheServiceAddress url="http://localhost/SecurityTokenCacheService/SessionSecurityTokenCacheService.svc" /> 
    </sessionSecurityTokenCache> 
    </caches> 

धन्यवाद इस कामकाज के लिए मैट!

1

मैंने फेडाथ कुकी सहित ब्राउज़र कुकी को हटाकर समस्या हल कर दी है। एक बार फिर से डिबग करने के बाद मैं सभी आवश्यक मान प्राप्त करने में सक्षम था

संबंधित मुद्दे