2010-08-09 4 views
3

У меня есть существующее приложение в производстве, использующем SqlMembershipProvider и имеет указанный ключ машины:хеширование больше не работает в .NET 4.0, несмотря на MSDN обходные

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

Он работает под .Net 2.0 AppPool в настоящее время.

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

Эта статья предполагает, нарушающие изменения с алгоритмом хэширования по умолчанию в ASP.Net в .Net 4.0: http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes

Однако я уже указания ключа машины, как предложено. Кроме того, я удалил компоненты .Net 4.0 и отбросил его до 3.5 (это CLR 2), и хэш введенного пароля все тот же.

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

Что еще я могу здесь попробовать?

ответ

0

Сначала скопируйте производственное приложение на dev/test и запустите его там, чтобы увидеть, работает ли он так, как ожидалось. Если это так, приступайте к обновлению проекта для работы под .NET 4.0, но не изменяйте какой-либо другой код (т. Е. Не пытайтесь заставить его работать с SQLMembershipProvider) - повторите попытку приложения Если это работает, вы знаете, что это а не проблема среды, и это не проблема с изменением .NET. Это указывает на то, что в вашем коде не работает, как вы ожидаете, он должен работать. Я предполагаю, что алгоритм хеширования, который вы используете в новом приложении, отличается от того, который используется в старом приложении. Вы засовывали пароль в старом приложении? Используете ли вы ту же соль в новом приложении?

 Смежные вопросы

  • Нет связанных вопросов^_^