पर यह काफी सचमुच मुझे केले गाड़ी चला रहा है - मैं कल से के रूप में छुट्टी पर हूँ लेकिन अगर मैं इस काम के आज नहीं मिल सकता है तो यह खतरे में है - तो किसी भी मदद की बहुत सराहना!फार्म प्रमाणीकरण 4.0 वेब फार्म
सबसे पहले, मेरी वेबसाइट का मैन्युअल रूप से परिभाषित <machinekey />
तत्व परिभाषित ताकि वेब खेत में दोनों वेब सर्वर सिंक में रखा जाता है है। मैंने आईआईएस मैनेजर के साथ यह सत्यापित किया है (इसलिए मैं अन्य प्रश्नों के साथ समानता के बावजूद क्यों पूछ रहा हूं)। यह इस तरह दिखता है (elided कुंजी - लेकिन वे सही लंबाई हैं):
<machineKey validationKey="[512 bit hex]"
decryptionKey="[256-bit hex]"
validation="SHA1"
decryption="AES" />
वेबसाइट Asp.Net MVC3 चल रहा है और मैं 'सामान्य' मोड (अर्थात नहीं 2.0 compat मोड) में फार्म प्रमाणीकरण का उपयोग कर रहा हूँ। मैं रूपों प्रमाणीकरण एक प्रमाणीकरण टिकट बनाने के लिए उपयोग कर रहा हूँ - निम्नलिखित की तरह कोड का उपयोग:
FormsAuthentication.SetAuthCookie(userName, false);
मेरे फार्म प्रमाणीकरण config बहुत सरल है; वहाँ कि दस्तावेज चूक ओवरराइड जगह में कोई आईआईएस या सर्वर-व्यापी सेटिंग कर रहे हैं:
<authentication mode="Forms">
<forms defaultUrl="~/Unauthorised"
loginUrl="~/Unauthorised"
ticketCompatibilityMode="Framework40" />
</authentication>
और फिर मैं कुकी-पढ़ने कार्यक्षमता as per this MSDN topic ताकि मैं प्रिंसिपल और पहचान है कि मैं चाहता हूँ बना सकते हैं का अपहरण कर लिया गया है।
समस्या है - वेब खेत का केवल एक आधा प्रमाणीकरण कुकी डिक्रिप्ट करने में सक्षम है, दूसरे आधे (यानी जो भी उपयोगकर्ता को प्रमाणित नहीं किया है) सिर्फ देता है:
System.Security.Cryptography.CryptographicException: Length of the data to decrypt is invalid.
स्टैक ट्रेस के शीर्ष-भाग के रूप में: - जो HTTP ट्रैफ़िक संशोधित नहीं करता है - और वें
[CryptographicException: Length of the data to decrypt is invalid.]
System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount) +12521039
System.Security.Cryptography.CryptoStream.FlushFinalBlock() +53
System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Boolean useValidationSymAlgo, Boolean useLegacyMode, IVType ivType) +331
System.Web.Security.FormsAuthentication.Decrypt(String encryptedTicket) +293
हम एक से थोड़ा प्राचीन (लेकिन बहुत विश्वसनीय) लोड संतुलन का उपयोग कर रहे ई मामले में यातायात HTTP है; मैं यह सत्यापित करने में सक्षम हूं कि यह हमेशा एक सर्वर है और ट्रैफिकर को डिक्रिप्ट और निरीक्षण करने के लिए दोनों का उपयोग करके नहीं किया जाता है।
यह स्पष्ट रूप से करने के लिए बाहर के सिंक machineKey
रों बताते हैं - लेकिन वे नहीं कर रहे हैं - तो किसी भी विचार क्या हो रहा है !!?
अग्रिम धन्यवाद!
आप अपने पैच जाँच किया? http://blog.evonet.com.au/post/SystemSecurityCryptographyCryptographicException-Length-of-the-data-to-decrypt-is-invalid.aspx –
@ Surfer513 - एक जवाब डाल; मैं अभी तक यकीन नहीं है - लेकिन सहायता टीम में से एक से बात कर यह कारण ... –