Могу ли я получить расшифрованный пароль в базе данных? - PullRequest
1 голос
/ 22 сентября 2010
<add name="LDSAMembers" 
  type="System.Web.Security.SqlMembershipProvider" 
  connectionStringName="" 
  applicationName="" 
  requiresUniqueEmail="true" 
  passwordFormat="Encrypted" 
  minRequiredPasswordLength="6" 
  enablePasswordReset="true" 
  enablePasswordRetrieval="true" 
  maxInvalidPasswordAttempts="5" 
  passwordAttemptWindow="15" 
  requiresQuestionAndAnswer="false" 
  minRequiredNonalphanumericCharacters="0" />

Мне нужен расшифрованный пароль для входа в систему. Я найду поле пароля и пароль в базе данных

Ответы [ 6 ]

2 голосов
/ 23 сентября 2010

Я использовал вышеуказанную конфигурацию в сценарии, где это было уместно (т.е. passwordFormat = "Encrypted"). Следующий код был использован для сброса пароля пользователя с указанным новым паролем (в отличие от создания нового пароля), так что представитель CS может запросить у пользователя новый пароль во время разговора по телефону и изменить его для него, не зная старый пароль.

Звонок пользователю. Для изменения пароля требуется текущий пароль:

MembershipUser user = Membership.GetUser(userId);
user.ChangePassword(user.GetPassword(), newpw);

user.Password () возвращает текущий пароль в виде открытого текста.

2 голосов
/ 22 сентября 2010

Я вижу, у вас есть enablePasswordReset="true", поэтому используйте обычный маршрут.

1 голос
/ 22 сентября 2010

Предполагая, что у вас действительно настроена настоящая строка подключения (а не connectionStringName="", как в вашем примере), вы можете просто использовать это в своем коде

Membership.GetPassword(username, "");

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

http://msdn.microsoft.com/en-us/library/system.web.security.sqlmembershipprovider.getpassword.aspx

1 голос
/ 22 сентября 2010

Нет. Это по замыслу.

0 голосов
/ 23 сентября 2010

Вам понадобится зашифрованный пароль, соль и раздел machineKey с компьютера, который зашифровал пароль.

Этот раздел ДОЛЖЕН быть определен, который не является по умолчанию, для поддержки шифрования. Поэтому, если вы не работаете на сервере, который зашифровал данные, вам необходимо получить ключи от этого компьютера.

Они могут быть определены в любом месте между web.config приложения вплоть до корневого web.config в c: \ windows \ microsoft.net

Итак, ключ, так сказать, есть.

Если у вас есть доступ к этому разделу, НЕ РАЗМЕЩАЙТЕ ЭТО ЗДЕСЬ, но оставьте мне комментарий, и мы можем поговорить о расшифровке.

0 голосов
/ 22 сентября 2010

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

...