2009-02-13 18 views
9

साथ समर्थित नहीं हैं मैं एक सदस्यता प्रदाता बनाने औरटुकड़ों में बांटा या एन्क्रिप्टेड पासवर्ड स्वत: जनरेट कुंजी

<membership defaultProvider="MyMembershipProvider"> 
    <providers> 
    <clear/> 
    <add name="MyMembershipProvider" 
      type="Khafan.Providers.SqlMembershipProvider" 
      connectionStringName="KhafanConnectionString" 
      maxInvalidPasswordAttempts="5"    
      passwordAttemptWindow="10" 
      minRequiredNonalphanumericCharacters="0" 
      minRequiredPasswordLength="4" 
      passwordStrengthRegularExpression="" 
      passwordFormat="Hashed" 
      enablePasswordReset="true" 
      enablePasswordRetrieval="false"    
      requiresQuestionAndAnswer="false" 
      requiresUniqueEmail="true" /> 
    </providers> 
</membership> 

करने के लिए अपने web.config बदल लेकिन अब, जब भी मैं ASP.Net की सुरक्षा पृष्ठ पर ब्राउज़ करने का प्रयास करें

हैश्ड या एन्क्रिप्टेड पासवर्ड स्वत: जनरेट कुंजी

मेरी डेटाबेस में मैं अपने पीकेएस के लिए पहचान का इस्तेमाल किया है के साथ समर्थित नहीं हैं: विन्यास यह मुझे निम्न त्रुटि देता है। मुझे नहीं पता कि यह समस्या है या नहीं। लेकिन अगर यह है, तो मैं इसे कैसे हल कर सकता हूं? मैं पहचान मूल्यों को बदलना नहीं चाहता हूं।

धन्यवाद।

उत्तर

19

ऐसा इसलिए है क्योंकि आप हैंशिंग पासवर्ड हैं लेकिन आपने अपने web.config में विशिष्ट कुंजी सेट नहीं की हैं। इस MSDN article में एक "कुंजी जनरेटर" टुकड़ा है, यह दो बार चलाने के लिए और के रूप में अपने web.config में उन्हें भगाओ:

<system.web> 
    <machineKey 
    validationKey="<blah>"   
    decryptionKey="<blah>" 
    validation="SHA1" 
    decryption="AES" 
    /> 

और है कि आप को हल करना चाहिए। ऐसा इसलिए है क्योंकि अन्यथा आप अपनी सदस्यता डेटाबेस/ऐप को किसी अन्य मशीन पर ले जा सकते हैं और आपके कोई भी पासवर्ड काम नहीं करेगा, क्योंकि ऑटो जेनरेट की गई मशीन कुंजी अलग-अलग होंगी :-)

+3

या सिर्फ इस ऑनलाइन उपकरण का उपयोग करें। com/articles/machinekey_generator.aspx –

+5

उपरोक्त लिंक टूटा हुआ है, लेकिन यहां एक और है: http://aspnetresources.com/tools/machineKey – Sprintstar

+0

क्या मुझे ऐसा करने की ज़रूरत है भले ही मैं एक कस्टम हैशिंग एल्गोरिदम का उपयोग कर रहा हूं? और एक एप्लिकेशन से उपयोगकर्ता बनाना और एक diff एप्लिकेशन से लॉगिन करने का प्रयास करें, एप्लिकेशन को उसी पर होस्ट किया जा सकता है या अलग-अलग मशीन हो सकती है। दोनों एप्लिकेशन "System.Web.Security.SqlMembershipProvider" का उपयोग करते हैं और जिनकी "पासवर्डफॉर्मैट" संपत्ति "सदस्यता" है और "सदस्यता" टैग की "हैश एल्गोरिदम टाइप" संपत्ति "CustomPbkdf2Hash" है। – Vipresh

3

शिकार के लिए जाने के लिए एक schlep था MSDN link स्टीवन रॉबिन्स ने "उत्तर जनरेटर" स्निपेट को अपने उत्तर में संदर्भित किया, इसलिए मैं इसे त्वरित संदर्भ के लिए यहां जोड़ रहा हूं। तो यह एक स्टैंडअलोन जवाब नहीं है। यह स्वीकृत उत्तर के लिए पूरक है।

MSDN से

The following code shows how to generate random key values. Compile the code to create a console application, and then pass the required key size as a command line argument expressed as the desired number of hexadecimal characters. Each byte is represented by two hexadecimal characters; therefore, to request a 32-byte key, pass 64 as a command line argument. If you do not specify an argument, the code returns a 128 hexadecimal character (64-byte) key.

using System; 
using System.Text; 
using System.Security; 
using System.Security.Cryptography; 

class App { 
    static void Main(string[] argv) { 
    int len = 128; 
    if (argv.Length > 0) 
     len = int.Parse(argv[0]); 
    byte[] buff = new byte[len/2]; 
    RNGCryptoServiceProvider rng = new 
          RNGCryptoServiceProvider(); 
    rng.GetBytes(buff); 
    StringBuilder sb = new StringBuilder(len); 
    for (int i=0; i<buff.Length; i++) 
     sb.Append(string.Format("{0:X2}", buff[i])); 
    Console.WriteLine(sb); 
    } 
} 

इसके अलावा, <machineKey><system.web> के अंदर चला जाता है, इस तरह: http: //www.developmentnow

<system.web> 
    <machineKey 
     validationKey="" 
     decryptionKey="" 
     validation="SHA1" 
     decryption="AES" 
/> 
संबंधित मुद्दे