2009-02-13 10 views
9

Tengo crear un proveedor de pertenencia y cambiado mi web.config paracontraseñas con algoritmo hash o cifrado no son compatibles con las claves generadas automáticamente

<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> 

pero ahora, cada vez que intento para navegar a la página de seguridad de ASP.Net configuración me da el siguiente error:

ordenada o contraseñas cifradas no son compatibles con las claves generadas automáticamente

En mi base de datos de identidad que he utilizado para mis PK. No sé si es el problema o no. Pero si lo es, ¿cómo puedo resolverlo? No quiero cambiar los valores de Identidad.

Gracias.

Respuesta

19

Esto se debe a que tiene contraseñas hash pero no ha establecido claves específicas en su web.config. Hay un fragmento de "generador de claves" en este MSDN article, ejecutarlo dos veces y empujarlos en su web.config como:

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

Y que debe resolver. Es así porque de lo contrario podría llevar su base de datos/aplicación de membresía a otra máquina y ninguna de sus contraseñas funcionaría, ya que las claves de máquina generadas automáticamente serían diferentes :-)

+3

o simplemente utilizar esta herramienta en línea: http: //www.developmentnow. com/articles/machinekey_generator.aspx –

+5

El enlace anterior está roto, pero aquí hay otro: http://aspnetresources.com/tools/machineKey – Sprintstar

+0

¿Tendré que hacer esto incluso si estoy usando un algoritmo hash personalizado? Y al crear un usuario desde una aplicación e intentar iniciar sesión desde una aplicación de diferencias, la aplicación podría estar alojada en la misma o pueden ser máquinas diferentes. Tanto la aplicación utiliza el "System.Web.Security.SqlMembershipProvider" y cuya propiedad "passwordFormat" es "Hashed" y la propiedad "hashAlgorithmType" de la etiqueta "membership" es "CustomPbkdf2Hash". – Vipresh

3

Fui un poco escéptico para ir a buscar el fragmento de "generador de claves" en el MSDN link al que se refirió Steven Robbins en su respuesta, por lo que lo añado aquí para una referencia rápida. Entonces esta no es una respuesta independiente. Es suplementario a la respuesta aceptada.

DE 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); 
    } 
} 

Además, <machineKey> va dentro de <system.web>, así:

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