1

Я только что создал новый веб-сервер (Windows Server 2012) и пытаюсь войти на наш сайт (прямая копия файлов со старого веб-сервера). Со старого веб-сервера все работает отлично. При попытке входа с нового сервера мой пароль отклоняется. Я знаю, что запросы проходят через сервер БД, поскольку я вижу их через SQL Profiler на сервере базы данных.Переключение веб-серверов останавливает членство в ASP.Net, проверяя пользователя/пароль

У старой установки был сайт и база данных на том же сервере, новая настройка просто перемещает веб-сайт на выделенный сервер. База данных осталась прежней.

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

<!-- Key information as using encrypted passwords  --> 
    <machineKey validationKey="xxx,IsolateApps" decryptionKey="xxx,IsolateApps" validation="3DES"/> 
    <!-- Membership, Role & Personalisation Providers  --> 
    <membership> 
     <providers> 
      <remove name="AspNetSqlMembershipProvider"/> 
      <add name="AspNetSqlMembershipProvider" connectionStringName="SqlAspNetDB" 
     type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
     enablePasswordRetrieval="true" enablePasswordReset="true" requiresQuestionAndAnswer="false" 
     applicationName="/" requiresUniqueEmail="false" passwordFormat="Clear" 
     maxInvalidPasswordAttempts="5" passwordAttemptWindow="10" passwordStrengthRegularExpression="" minRequiredPasswordLength="5" minRequiredNonalphanumericCharacters="0"/> 
     </providers> 
    </membership> 
+0

Этот вопрос кажется не по теме, поскольку он нацелен на [веб-мастеров] (http://webmasters.stackexchange.com) –

ответ

1

Предполагая, что MachineKey конфигурации в точности то же самое на обоих серверах ... Я вижу, что вы используете IsolateApps.

Из MSDN: «Модификатор IsolateApps заставляет ASP.NET создавать уникальный ключ для каждого приложения на вашем сервере с помощью идентификатора приложения вашего приложения».

http://msdn.microsoft.com/en-us/library/ff649308.aspx

фермы развертывания веб соображения раздел по ссылке выше показывает, как конфигурация MachineKey должно быть сделано.

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

  1. Если вы не заботитесь о восстановлении пароля, переключитесь на Hashed passwordFormat. Смотрите это для получения дополнительной помощи: Changing passwordFormat from Encrypted to Hashed

  2. Если вы хотите придерживаться зашифрован и если вы хотите сохранить пароли вам необходимо извлечь все пароли в виде текста с некоторым ручной работой .Net кода в вашем первом приложение (аналогично используемому выше). Затем, после правильной настройки вашего машинного ключа, повторно зашифруйте эти пароли и храните их в базе данных.Эта ссылка выглядит хорошо для расшифровки паролей: Decrypting an 'Encrypted' password from ASP.NET 2.0 Membership

ВНИМАНИЕ: Возможно, не нужно говорить об этом, но тесте с одной учетной записью пользователя первым перед применением всех записей учетной записи пользователя. :-)

1

Да, это может быть проблема с паролем. Мое шестое чувство ....

В вашей базе данных, выполните:

SELECT PasswordFormat FROM aspnet_Membership WHERE UserId = {YourUserId}.

Если возвращаемое значение не 0, то это, скорее всего, проблема. Параметр passwordFormat в настройках конфигурации должен соответствовать формату пароля записей в вашей базе данных. passwordFormat = «Хашед» - самый популярный выбор. (то есть PasswordFormat = 1 из перспективы базы данных).

Так что, если это «1» в базе данных, установить конфигурации в passwordFormat = «Хэшировано»

Другие варианты: «Encrypted» (2)

+0

Формат пароля возвращается как зашифрованный. Установки в файле web.config также установлены в Encrypted, так что это должно быть хорошо, не так ли? – Ben

+0

В web.config вы отправили, я вижу passwordFormat = "Clear"? –

+0

Если он установлен в «Зашифрованный», как в базе данных, так и в конфиге, и чтобы исключить, что это даже проблема с паролем, выберите запись пользователя из aspnet_Users/aspnet_Membership, обновите парольную регистрационную запись этой пользовательской записи до 0. Установите passwordFormat в «Clear», в вашем конфиге и переустановить пароль на что-то .., а затем попробуйте другой логин. –

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

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