Как исправить эту ошибку: Ключ не подходит для использования в указанном состоянии после перехода на другой сервер - PullRequest
0 голосов
/ 10 июля 2019

У меня есть приложение asp.net, использующее провайдера aspnetsqlMembership для шифрования / дешифрования данных профиля пользователя.Теперь мы решили перенести наше приложение на новый сервер, но я получаю эту ошибку на новом сервере, когда пытаюсь создать нового пользователя (шифрование):

Ключ недопустим для использования в указанном состоянии.

Что я уже пробовал: 1. Я импортировал сертификат со старого сервера, и он кажется хорошим / 2. Я проверил разрешения безопасности сертификата, и они такие же, как на старом сервере3. Кроме того, определения машинных ключей на IIs, кажется, то же самое.4. Попытался изменить формат sqlmembership с зашифрованного на хешированный, но исключение все равно выкинуло.

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

1 Ответ

0 голосов
/ 13 июля 2019

Шифрование паролей для SqlMEmbershipProvider не имеет ничего общего с сертификатом.

Зашифрованные и хешированные пароли по умолчанию шифруются или хешируются на основе информации, представленной в элементе machineKey в вашей конфигурации. Обратите внимание, что если вы укажете значение 3DES для атрибута проверки или если значение не указано, хешированные пароли будут хешироваться с использованием алгоритма SHA1.

Пользовательский алгоритм хеширования может быть определен с помощью атрибута hashAlgorithmType элемента конфигурации Элемент членства (Схема настроек ASP.NET). Если вы выбираете шифрование, для шифрования пароля по умолчанию используется AES. Вы можете изменить алгоритм шифрования, установив атрибут decryption элемента конфигурации machineKey. Если вы шифруете пароли, вы должны предоставить явное значение для атрибута decryptionKey в элементе machineKey. Значение по умолчанию AutoGenerate для атрибута decryptionKey не поддерживается при использовании зашифрованных паролей с членством ASP.NET.

Документы Microsoft: свойство SqlMembershipProvider.PasswordFormat

Посмотрите на ваш файл web.config. Есть ли раздел ? Есть ли там какие-либо значения?

Убедитесь, что новый сервер имеет именно те значения сохранения!

Если нет раздела или нет значений ...

Вы должны снова получить доступ к старому серверу!

После небольшого копания в текущей платформе 4.5 оказывается, что автоматически сгенерированные ключи хранятся в байтовом массиве HttpApplication.s_autogenKeys. Ключ проверки - это первые 64 байта, за которыми следуют 24 байта ключа дешифрования.

@ Mr-Curious написал хороший ответ о том, как разрешить значения (ключи) для раздела machineKey, если они не существуют (AutoGenerated).

...