2012-05-28 12 views
8

के साथ छेड़छाड़ हो सकता है मैं अपनी नई वेबसाइट प्रमाणीकृत करने के लिए वाईआईएफ का उपयोग कर रहा हूं, एसटीएस स्टार्टर-एसटीएस कार्यान्वयन पर आधारित है।डब्ल्यूआईएफ- आईडी 1014: हस्ताक्षर मान्य नहीं है। डेटा

आउट लोड लोड पर्यावरण पर सही ढंग से काम करने के लिए इसे सक्षम करने के लिए मैंने वैश्विक प्रमाणपत्र में डिफ़ॉल्ट प्रमाणपत्र व्यवहार को ओवरराइड करने के लिए निम्न का उपयोग किया है।

ID1014: हस्ताक्षर मान्य नहीं है

void onServiceConfigurationCreated(object sender, ServiceConfigurationCreatedEventArgs e) 
     { 
      List<CookieTransform> sessionTransforms = new List<CookieTransform>(new CookieTransform[] 
      { 
       new DeflateCookieTransform(), 
       new RsaEncryptionCookieTransform(e.ServiceConfiguration.ServiceCertificate), 
       new RsaSignatureCookieTransform(e.ServiceConfiguration.ServiceCertificate) 
      }); 

      SessionSecurityTokenHandler sessionHandler = new SessionSecurityTokenHandler(sessionTransforms.AsReadOnly()); 
      e.ServiceConfiguration.SecurityTokenHandlers.AddOrReplace(sessionHandler); 
     } 

यह सभी कार्य सिर्फ खोजने के लिए और लोगों को सफलतापूर्वक प्रणाली का उपयोग किया गया है, लेकिन हर अब और फिर हम में से एक विस्फोट हो जाता है। डेटा के साथ छेड़छाड़ की गई हो सकती है।

इवेंट लॉग में, इसलिए मैंने वाईआईएफ ट्रेसिंग पर स्विच किया और लॉग में निम्नलिखित उल्लेखित देखा।

आईडी 1074: संरक्षित डेटा एपीआई (विवरण के लिए आंतरिक अपवाद देखें) का उपयोग करके कुकी को एन्क्रिप्ट करने का प्रयास करते समय एक क्रिप्टोग्राफिक अपवाद हुआ। यदि आप आईआईएस 7.5 का उपयोग कर रहे हैं, तो यह एप्लीकेशन पूल पर लोड यूज़र प्रोफाइल सेटिंग के कारण गलत हो सकता है।

मुझे एहसास है कि यह मुझे एक अंधेरे गली के नीचे ले जा रहा है क्योंकि मैंने सोचा था क्योंकि मैं आरएसए का उपयोग करने के लिए कार्यान्वयन को बदल दूंगा, इससे मुझे प्रभावित नहीं होना चाहिए।

मेरी मदद करने के लिए कोई विचार?

+0

उत्तर के लिए धन्यवाद, यह सब ठीक से चेक किया गया है और यह ठीक काम कर रहा है ब्रेकपॉइंट फंसे हुए और ट्रेसिंग भी आउटपुट कर रहा है। मुझे संघीय प्रमाणीकरण मिला है। सेवा कॉन्फ़िगरेशनक्रेटेड + = ऑन सेवा कॉन्फ़िगरेशन क्रिएटेड; एप्लिकेशन प्रारंभ में। – RubbleFord

उत्तर

2

मैंने ओन्टोकेक्टेड विधि में टाइमआउट में संशोधन करने के लिए कार्यान्वयन को बदल दिया। यह पुनर्मिलन को रोकता है।

protected override void OnSessionSecurityTokenCreated(Microsoft.IdentityModel.Web.SessionSecurityTokenCreatedEventArgs args) 
     { 
      args.SessionToken = FederatedAuthentication.SessionAuthenticationModule.CreateSessionSecurityToken(
       args.SessionToken.ClaimsPrincipal, 
       args.SessionToken.Context, 
       DateTime.UtcNow, 
       DateTime.UtcNow.AddDays(365), 
       true 
       ); 
      //base.OnSessionSecurityTokenCreated(args); 
     } 
+0

यह अपवाद आपके द्वारा प्राप्त अपवाद के संदर्भ में वास्तव में क्या करता है? – ABC

+0

मुझे खेद है कि मुझे याद नहीं है, मुझे कोडबेस में एक नज़र रखना होगा। – RubbleFord

+0

धन्यवाद, अगर आपको मौका मिलता है, तो क्या आप मुझे बता सकते हैं? – ABC

0

क्या आपने loadUserProfile विकल्प को सही करने की कोशिश की है? क्या समस्या अभी भी होती है?

(आईआईएस में एप्लिकेशन पूल का चयन करें और फिर दाईं ओर "उन्नत सेटिंग्स" पर क्लिक करें। "उपयोगकर्ता प्रोफ़ाइल लोड करें" अनुभाग "प्रक्रिया मॉडल" अनुभाग में है)।

+0

हमने पूरी तरह से यह कोशिश नहीं की है क्योंकि हम आरएसए का उपयोग नहीं कर रहे हैं डीपीएपीआई। – RubbleFord

3

ब्राउज़र कुकीज़ "पुरानी" तंत्र - डीपीएपीआई के साथ एन्क्रिप्ट की गई हैं। इसलिए, जब सर्वर कुकीज को डिक्रिप्ट करने का प्रयास करता है, तो यह विफल हो जाता है - आपका कोड अब आरएसए का उपयोग करता है, डीपीएपीआई नहीं।

वर्कअराउंड के रूप में, ब्राउज़र कैश साफ़ करें, और एप्लिकेशन अपेक्षा के अनुसार चलना शुरू हो जाएगा।

+0

हमने कभी भी अन्य सिस्टम का उपयोग नहीं किया है क्योंकि हम एक लोड संतुलित वातावरण में हैं। – RubbleFord

0

आपकी त्रुटि की अंतःक्रियात्मक घटना, आपके निशान में दिखाए गए डीपीएपीआई अपवाद के साथ मिलकर मुझे पता चलता है कि आप वास्तव में कुकी ट्रांसफॉर्म को ओवरराइड नहीं कर रहे हैं, और आपकी सेवा अभी भी डीपीएपीआई का उपयोग कर रही है।

यह एक लंबा शॉट हो सकता है, लेकिन आपके कोड स्निपेट में मैंने देखा है कि आपकी विधि ओवरराइड "ऑन सर्विस कॉन्फ़िगरेशनक्रेटेड" कम केस ओ के साथ शुरू होती है। ऐसा एक टाइपो वास्तव में आपको डिफ़ॉल्ट WIF व्यवहार को ठीक से ओवरराइड करने से रोक देगा।

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