# Migrated password hashes support

**URL:** https://meta.discourse.org/t/migrated-password-hashes-support/19512
**Category:** Plugin
**Created:** [01.Сентябрь.2014 17:51:25 UTC](https://meta.discourse.org/t/migrated-password-hashes-support/19512 "2014-09-01T17:51:25Z")
**Posts on this page:** 15
**Page:** 2

<div class="post-metadata">

### Author: ![richbrennan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/richbrennan/32/143177_2.png) [@richbrennan](https://meta.discourse.org/u/richbrennan)
#### Post date: [21.Август.2019 07:45:57 UTC](https://meta.discourse.org/t/migrated-password-hashes-support/19512/21 "2019-08-21T07:45:57Z")

</div>

Спасибо @pfaffman

Я провел некоторые тесты и могу подтвердить, что это не работает с Drupal 7, который, по-видимому, использует SHA-512, согласно [Drupal 7: Secure password storage by default at last | Jon Cave](http://joncave.co.uk/2011/01/password-storage-in-drupal-and-wordpress/)

Я создам PR, если смогу добавить совместимый вариант.

Рич

---

<div class="post-metadata">

### Author: ![p0fi](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/p0fi/32/261315_2.png) [@p0fi](https://meta.discourse.org/u/p0fi)
#### Post date: [21.Сентябрь.2019 13:26:30 UTC](https://meta.discourse.org/t/migrated-password-hashes-support/19512/22 "2019-09-21T13:26:30Z")

</div>

Привет 👋

Я перенёс большое количество контента с bbPress на свою установку Discourse. Я вижу все сообщения, пользователей и прочее. Но мои пользователи не могут войти, используя свои «старые» данные пароля с моего сайта на WordPress. Я установил плагин, он отображается в разделе плагинов в моей панели администратора. Я проверил все доступные флажки.

Тем не менее: никто не может войти!  
Также я не понимаю, куда именно нужно применить приведённый код из README плагина:

```plaintext
user = User.find_by(username: 'user')
user.custom_fields['import_pass'] = '5f4dcc3b5aa765d61d8327deb882cf99'
user.save

```

Кроме того, я не совсем понимаю, что именно имеется в виду под «альтернативными хешами паролей», о которых говорится в README.

@michaeld, не могли бы вы дать дополнительные рекомендации по использованию этого плагина?

---

<div class="post-metadata">

### Author: ![michaeld](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/michaeld/32/1594_2.png) [@michaeld](https://meta.discourse.org/u/michaeld)
#### Post date: [21.Сентябрь.2019 13:41:01 UTC](https://meta.discourse.org/t/migrated-password-hashes-support/19512/23 "2019-09-21T13:41:01Z")

</div>

Насколько я помню, импортер bbPress поддерживает этот плагин, так что вы всё сделали правильно, и больше ничего делать не нужно.

---

<div class="post-metadata">

### Author: ![p0fi](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/p0fi/32/261315_2.png) [@p0fi](https://meta.discourse.org/u/p0fi)
#### Post date: [21.Сентябрь.2019 14:43:21 UTC](https://meta.discourse.org/t/migrated-password-hashes-support/19512/24 "2019-09-21T14:43:21Z")

</div>

О боже, после дополнительных тестов оказалось, что всё работало. Проблема была в изменённом пароле, когда я это тестировал 🤦‍♂️ Извините! Спасибо за отличный плагин! Он значительно облегчил мне жизнь!

---

<div class="post-metadata">

### Author: ![Paracelsus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/paracelsus/32/164912_2.png) [@Paracelsus](https://meta.discourse.org/u/Paracelsus)
#### Post date: [06.Октябрь.2019 22:49:59 UTC](https://meta.discourse.org/t/migrated-password-hashes-support/19512/25 "2019-10-06T22:49:59Z")

</div>

Привет, у меня возникли проблемы с этим. Я создал пользовательское поле import\_pass и установил плагин. Ещё раз запустил скрипт импорта в базе данных SMF, но безрезультатно — после этого никто не может войти. В пользовательском поле я вижу только «-» вместо хеша.

Как уже отмечали другие пользователи, не совсем понятно, что делать с этим:

```plaintext
user = User.find_by(username: 'user')
user.custom_fields['import_pass'] = '5f4dcc3b5aa765d61d8327deb882cf99'
user.save

```

Буду благодарен за любую подсказку. Этот код нужно добавить в файл скрипта импорта smf2.rb или что-то другое?

---

<div class="post-metadata">

### Author: ![michaeld](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/michaeld/32/1594_2.png) [@michaeld](https://meta.discourse.org/u/michaeld)
#### Post date: [06.Октябрь.2019 23:38:13 UTC](https://meta.discourse.org/t/migrated-password-hashes-support/19512/26 "2019-10-06T23:38:13Z")

</div>

> [@Парацельс](#):
>
> Запустил скрипт импорта ещё раз

Это не сработает. Но нет необходимости устанавливать плагин во время импорта или вручную создавать пользовательское поле. Это уже должно обрабатываться скриптом SMF2. Значит, проблема в чём-то другом.

> [@Парацельс](#):
>
> Буду признателен за любые советы. Этот код нужно поместить в smf2.rb?

Этот код приведён там как пример для авторов скриптов. Он уже есть в скрипте SMF2.

---

<div class="post-metadata">

### Author: ![Paracelsus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/paracelsus/32/164912_2.png) [@Paracelsus](https://meta.discourse.org/u/Paracelsus)
#### Post date: [07.Октябрь.2019 06:40:30 UTC](https://meta.discourse.org/t/migrated-password-hashes-support/19512/27 "2019-10-07T06:40:30Z")

</div>

> [@michaeld](#):
>
> > [@Paracelsus](#):
> >
> > Запустил скрипт импорта ещё раз
> 
> Это не сработает. Но нет необходимости устанавливать плагин во время импорта или вручную создавать пользовательское поле. Это должно обрабатываться скриптом SMF2. Значит, проблема в чём-то другом.
> 
> > [@Paracelsus](#):
> >
> > Благодарю за любую помощь. Этот код нужно поместить в smf2.rb?
> 
> Этот код приведён как пример для авторов скриптов. Он уже есть в скрипте SMF2.

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

Есть ли лог, который можно проверить, чтобы понять, почему плагин не делает то, что должен?

---

<div class="post-metadata">

### Author: ![michaeld](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/michaeld/32/1594_2.png) [@michaeld](https://meta.discourse.org/u/michaeld)
#### Post date: [07.Октябрь.2019 08:01:48 UTC](https://meta.discourse.org/t/migrated-password-hashes-support/19512/28 "2019-10-07T08:01:48Z")

</div>

> [@Парацельс](#):
>
> Почему плагин не делает то, что должен?

Плагин отвечает за интерпретацию и использование пользовательских полей, установленных импортером. Если пользовательские поля пусты или отсутствуют, то проблема не в плагине, а в импортере.

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [13.Август.2020 09:30:55 UTC](https://meta.discourse.org/t/migrated-password-hashes-support/19512/29 "2020-08-13T09:30:55Z")

</div>

Должен ли плагин быть установлен до или после миграции? Или это не имеет значения?

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [13.Август.2020 09:55:28 UTC](https://meta.discourse.org/t/migrated-password-hashes-support/19512/30 "2020-08-13T09:55:28Z")

</div>

TL;DR: после.

Вам следует установить плагин на инстанс, на котором фактически запущен перенесённый форум.

Мы наблюдали случаи, когда плагин вызывал проблемы при установке на инстанс, на котором фактически выполнялся скрипт миграции, поэтому мы не рекомендуем устанавливать его там.

---

<div class="post-metadata">

### Author: ![renato](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/renato/32/383632_2.png) [@renato](https://meta.discourse.org/u/renato)
#### Post date: [01.Декабрь.2020 14:34:47 UTC](https://meta.discourse.org/t/migrated-password-hashes-support/19512/31 "2020-12-01T14:34:47Z")

</div>

Привет,

Кто-нибудь пробовал использовать хеши паролей из Auth0?

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

Похоже, что их пароли хешируются с помощью bcrypt с 10 раундами соли.

Спасибо.

---

<div class="post-metadata">

### Author: ![rahim123](https://avatars.discourse-cdn.com/v4/letter/r/df705f/32.png) [@rahim123](https://meta.discourse.org/u/rahim123)
#### Post date: [16.Январь.2023 17:30:17 UTC](https://meta.discourse.org/t/migrated-password-hashes-support/19512/33 "2023-01-16T17:30:17Z")

</div>

> [@Rich](#):
>
> Я провел некоторое тестирование и могу подтвердить, что это не работает с Drupal 7, который, как выяснилось, использует SHA-512, согласно [Drupal 7: Безопасное хранение паролей по умолчанию наконец-то | Jon Cave](http://joncave.co.uk/2011/01/password-storage-in-drupal-and-wordpress/).
> 
> Я создам запрос на слияние (PR), если смогу добавить совместимое решение.

Привет! Не подскажете, не изменилось ли что-либо в отношении поддержки Drupal 7?

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [16.Январь.2023 18:37:39 UTC](https://meta.discourse.org/t/migrated-password-hashes-support/19512/34 "2023-01-16T18:37:39Z")

</div>

Ой, вопрос двухлетней давности, который я пропустил!

> [@renato](#):
>
> Кто-нибудь тестировал с хешами паролей от Auth0?

bcrypt должен поддерживаться независимо от количества раундов, если раунды закодированы обычным способом (`$2a$10$...`)

> [@rahim123](#):
>
> Что-то изменилось в поддержке Drupal 7?

Нет, этот код не трогали уже более 3 лет.

---

<div class="post-metadata">

### Author: ![uckelman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/uckelman/32/103854_2.png) [@uckelman](https://meta.discourse.org/u/uckelman)
#### Post date: [28.Май.2026 14:58:57 UTC](https://meta.discourse.org/t/migrated-password-hashes-support/19512/35 "2026-05-28T14:58:57Z")

</div>

Мы несколько лет назад мигрировали форум на Discourse, используя плагин migratepassword. Есть ли способ проверить, сколько наших пользователей до сих пор используют устаревшие хеши паролей из нашего старого форума?

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [02.Июнь.2026 13:17:31 UTC](https://meta.discourse.org/t/migrated-password-hashes-support/19512/36 "2026-06-02T13:17:31Z")

</div>

> [@uckelman](#):
>
> Существует ли способ проверить, сколько наших пользователей всё ещё используют устаревшие хеши паролей из нашего старого форума?

Технически пользователь не «использует» устаревший хеш пароля.

Когда пользователь впервые входит в систему после миграции и пароль не совпадает с паролем Discourse (который изначально представляет собой случайную строку символов), плагин выполняет свою работу:

- он проверяет, совпадает ли введённый пароль с пользовательским полем `import_pass`, используя все известные ему методы хеширования;
- если совпадение найдено, он сохраняет пароль для пользователя, а затем удаляет пользовательское поле `import_pass`.

Таким образом, через несколько лет поле `import_pass` останется только у тех пользователей, которые не использовали мигрированный пароль для входа.

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

⚠ Я только что осознал, что ситуация б может создать проблему безопасности. Если пользователь не помнит свой пароль и меняет его или использует другой метод аутентификации, мигрированный хеш пароля всё ещё будет сохранён и может быть использован наряду с новым паролем. Я только что выпустил обновление для плагина, которое теперь очищает пользовательское поле `import_pass` при _каждом_ успешном входе в систему.

Таким образом, в дальнейшем пользовательское поле `import_pass` будет присутствовать только у тех пользователей, которые никогда не входили в систему.

[Предыдущая страница](https://meta.discourse.org/t/migrated-password-hashes-support/19512.md?page=1)
