Назад | Перейти на главную страницу

Различия в системе шифрования IIS7 и ASP.NET

У меня есть приложение, которое я недавно перенес с IIS6 (Windows 2003) (7 Classic Pipeline) на IIS7 (Windows 2008) Integrated Pipeline.

Проблема, которую я заметил, заключается в том, что хэши паролей, созданные в системе IIS6, больше не совпадают, когда мы пытаемся войти в систему в системе IIS7. Однако, когда мы повторно генерируем хеш в системе IIS7, он работает нормально.

Я где-то читал, что существуют различия в криптографических системах между двумя (2003/2008) и их соответствующими версиями IIS, но я не смог найти никакой дополнительной информации.

Я здесь в растерянности, мне нужны существующие хэши для работы в новой системе, и я не могу найти отправную точку.

Если кто-то знает какие-либо ресурсы, которые могут помочь с этим, или настройкой, или чем-то еще, я был бы очень признателен.

Многие функции криптографии в .NET полагаются на machineKey, который может храниться в web.config или machine.config. Если вам нужно несколько или других серверов IIS, чтобы иметь возможность шифровать / расшифровывать одни и те же общие данные, все серверы должны быть настроены на использование одного и того же machineKey.

«Если вы используете функцию членства, хэши паролей по умолчанию сохраняются в базе данных членства. Система членства также поддерживает зашифрованные пароли. Если вы выберете зашифрованный формат пароля, то <machineKey> настройки используются при шифровании и дешифровании данных ».
ссылка: http://msdn.microsoft.com/en-us/library/ff649308.aspx#paght000007_membership

Если вы уже указали machineKey, может быть проблема с алгоритмом по умолчанию, который был критическим изменением в .Net 4.0. По умолчанию теперь SHA256; вам может потребоваться изменить это обратно на SHA1 в атрибуте проверки machineKey, а также указать hashAlgorithmType в разделе членства:

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

http://geekswithblogs.net/DavidHoerster/archive/2010/06/15/asp.net-membership-password-hash----.net-3.5-to-.net-4.aspx
https://stackoverflow.com/questions/3438197/hashing-no-longer-works-in-net-4-0-desITE-msdn-workarounds
http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes#0.1__Toc256770148