IIS7 e Diferenças do Sistema de Criptografia do ASP.NET

1

Eu tenho um aplicativo que eu recentemente portou do IIS6 (Windows 2003) (7 Classic Pipeline) para o IIS7 (Windows 2008) Integrated Pipeline.

O problema que eu notei é que os hashes de senhas criados no sistema IIS6 não correspondem mais quando tentamos efetuar login no sistema IIS7. No entanto, quando voltamos a gerar o hash no sistema IIS7, ele funciona bem.

Eu li em algum lugar que existem diferenças nos sistemas criptográficos entre as duas (2003/2008) e suas respectivas versões do IIS, mas não consegui encontrar nenhuma informação adicional.

Eu estou perdido aqui, preciso de hashes existentes para trabalhar no novo sistema e não consigo encontrar um ponto de partida.

Se alguém souber de algum recurso que possa ajudar nisso, ou em um cenário ou algo assim, eu ficaria muito grato.

    
por Aren B 25.03.2011 / 21:47

1 resposta

2

Muitas funções de criptografia no .NET dependem da machineKey, que pode ser armazenada em web.config ou machine.config. Se você precisar de vários servidores IIS para poder criptografar / descriptografar os mesmos dados compartilhados, todos os servidores devem ser configurados para usar a mesma machineKey.

"Se você usar o recurso de associação, os hashes de senha serão armazenados no banco de dados de associação por padrão. O sistema de associação também suporta senhas criptografadas. Se você selecionar o formato de senha criptografada, as configurações <machineKey> serão usadas ao criptografar e descriptografar dados. "
referência: link

Se você já especificou a machineKey, pode haver um problema com o algoritmo padrão, que foi uma alteração importante no .Net 4.0. O padrão é agora SHA256; talvez seja necessário alterar isso de volta para SHA1 no atributo de validação machineKey e também especificar o hashAlgorithmType na seção de associação:

<system.web>
  <membership defaultProvider="myMembership" hashAlgorithmType="SHA1">
  ...
</system.web>

link
link
link

    
por 26.03.2011 / 16:17