Migrated password hashes support

Gracias @pfaffman

He realizado algunas pruebas y puedo confirmar que no funciona con Drupal 7, que aparentemente utiliza SHA-512 según Drupal 7: Secure password storage by default at last | Jon Cave

Crearé una PR si logro agregar una compatible.

Rich

3 Me gusta

¡Hola :waving_hand:

He migrado un montón de contenido desde bbPress a mi instalación de Discourse. Puedo ver todos los mensajes, usuarios y demás. Pero mis usuarios no pueden iniciar sesión con sus “antiguos” datos de contraseña de mi sitio de WordPress. He instalado el plugin y aparece listado en la sección de plugins de mi área de administración. He marcado todas las casillas disponibles.

Sin embargo: ¡nadie puede iniciar sesión!
Tampoco tengo ni idea de dónde aplicar el código proporcionado en el archivo README del plugin:

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

Además, no tengo ni idea de qué se entiende exactamente por “hashes de contraseña alternativos” mencionados en el README.

@michaeld, ¿podrías darnos más orientación sobre cómo usar el plugin?

Por lo que recuerdo, el importador de bbPress es compatible con el plugin, así que lo hiciste todo bien y eso es todo lo que necesitas hacer.

1 me gusta

¡Dios mío! Tras más pruebas, resultó que en realidad funcionaba. El problema fue que cambié la contraseña cuando lo probé :man_facepalming:. ¡Lo siento! ¡Gracias por el excelente plugin! ¡Me ha facilitado mucho la vida!

2 Me gusta

Hola, tengo problemas para que esto funcione. He creado un campo personalizado llamado import_pass e instalado el plugin. Ejecuté el script de importación una vez más en mi base de datos de SMF, pero sin éxito; nadie puede iniciar sesión después. En el campo personalizado solo veo un «-» en lugar de algún hash.

Como otros usuarios han señalado antes, no estoy seguro de qué hacer con esto:

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

Agradezco cualquier orientación. ¿Este código va en el archivo del script de importación smf2.rb o qué?

Eso no funcionará. Pero no es necesario instalar el plugin durante la importación ni crear un campo personalizado manualmente. Eso ya debería ser manejado por el script de SMF2. Así que hay algo más ocurriendo.

El código está allí como un ejemplo para los autores de scripts. Ya está incluido en el script de SMF2.

3 Me gusta

Gracias. Eso es genial. ¿Quieres decir que, si elimino el campo personalizado creado manualmente y simplemente mantengo el plugin activado, debería funcionar por sí solo y capturar los hashes de contraseña cuando sea necesario?

¿Existe algún registro que podamos revisar para ver por qué el plugin no está haciendo lo que se supone que debe hacer?

El plugin se encarga de interpretar y utilizar los campos personalizados que ha establecido el importador. Si los campos personalizados están vacíos o no existen, entonces no es un problema del plugin, sino un problema del importador.

2 Me gusta

¿Debería instalarse el plugin antes o después de la migración? ¿O no cambia nada?

TL;DR: después.

Debes instalar el plugin en la instancia que realmente está ejecutando el foro migrado.

Hemos visto casos en los que el plugin causó problemas cuando se instaló en una instancia que en realidad estaba ejecutando el script de migración, por lo que recomendamos no instalarlo allí.

4 Me gusta

Hola,

¿Alguien ha probado con hashes de contraseñas de Auth0?

No puedo probarlo directamente, ya que la exportación de hashes de contraseñas es un servicio de pago para clientes. Solo quería saber si alguien lo ha intentado antes de que yo siga este camino.

Parece que sus contraseñas están hashadas con bcrypt y 10 rondas de sal.

Gracias.

2 Me gusta

Hola, ¿ha cambiado algo en cuanto al soporte de Drupal 7?

¡Vaya, pregunta de hace 2 años que me perdí!

bcrypt debería ser compatible independientemente del número de rondas, siempre que las rondas estén codificadas de la manera habitual ($2a$10$...)

No, ese código no se ha tocado en más de 3 años.

1 me gusta

Hemos migrado un foro a Discourse hace varios años utilizando el plugin migratepassword. ¿Existe alguna forma de verificar cuántos de nuestros usuarios aún están utilizando las contraseñas heredadas de nuestro antiguo foro?

Técnicamente, un usuario no está “utilizando” el hash de contraseña heredado.

Cuando un usuario inicia sesión por primera vez después de una migración y la contraseña no coincide con la contraseña de Discourse (que inicialmente será una cadena aleatoria de caracteres), el plugin realiza su función.

  • Verifica si la contraseña ingresada coincide con el campo personalizado import_pass utilizando todos los métodos de hash que conoce.
  • Si encuentra una coincidencia, guarda la contraseña del usuario y luego elimina el campo personalizado import_pass.

Por lo tanto, después de unos pocos años, solo los usuarios que no “utilizaron” la contraseña migrada para iniciar sesión todavía tendrán un campo personalizado import_pass.

a) Nunca iniciaron sesión (puedes verificarlo con la fecha de última visita).
b) No utilizaron la contraseña migrada, sino que iniciaron sesión mediante correo electrónico, un método de autenticación diferente, o han restablecido su contraseña.

:warning: Acabo de darme cuenta de que la situación b puede introducir un problema de seguridad. Si un usuario no recuerda su contraseña y la cambia, o si utiliza otro método de autenticación, el hash de contraseña migrado seguirá allí y aún podrá usarse junto con la nueva contraseña. Acabo de publicar una actualización del plugin para que limpie el campo personalizado import_pass en cada inicio de sesión exitoso.

Por lo tanto, a partir de ahora, el campo personalizado import_pass solo estará presente en los usuarios que nunca hayan iniciado sesión.

2 Me gusta