Busco poder utilizar los hashes de contraseñas almacenados en Discourse en un archivo htpassword para otra aplicación.
¿Qué algoritmo de hash de contraseñas utiliza Discourse?
Busco poder utilizar los hashes de contraseñas almacenados en Discourse en un archivo htpassword para otra aplicación.
¿Qué algoritmo de hash de contraseñas utiliza Discourse?
Perdona si lo estoy entendiendo mal, pero ¿estás diciendo que quieres copiar efectivamente el algoritmo de hash de Discourse a tu propia aplicación para poder comparar los hashes que genera tu aplicación con los almacenados por Discourse? ¿Esto no requeriría que sincronices regularmente las contraseñas de Discourse con tu archivo htpasswd, manejes las sales que Discourse pueda tener ahora o en el futuro, y mantengas tu implementación del algoritmo de hash sincronizada con el de Discourse para siempre?
De nuevo, perdona si lo estoy entendiendo completamente mal, pero tenía que pedir aclaraciones por mi propia curiosidad.
Solo para verificar que un nombre de usuario y contraseña sean válidos.
Un usuario proporciona un nombre de usuario y una contraseña. Verificamos que la contraseña proporcionada sea válida según el hash de Discourse. No generaremos ningún hash.
Con “generar” no me refería a almacenar, sino a validar que la contraseña sea correcta.
Me pregunto si Discourse tiene SSO en la dirección opuesta, para que las personas puedan iniciar sesión en otras aplicaciones directamente desde Discourse.
Sí, Discourse puede ser autoritativo para el inicio de sesión y este es el camino correcto @csmu: intentar duplicar el método de hashing haría que tu método de inicio de sesión se rompa cada vez que cambie.
Además, no tendría en cuenta a los usuarios que no tienen una contraseña local.
Si no estás dispuesto o no puedes leer el código fuente para encontrar la respuesta a tu pregunta, quizás sea mejor que te detengas un momento y describas qué problema estás intentando resolver.
Puedo leer el código fuente una vez que lo encuentro. Estuve buscando en el código fuente, específicamente en user.password, y me concentré principalmente en el user_controller. Nada llamó mi atención. Agradecería cualquier indicación sobre dónde buscar.
Lo que me vendría bien sería poder validar un usuario y contraseña a través de Discourse sin tener que agregar un inicio de sesión SSO. Quizás a través de la API o una llamada directa a algún código Ruby.
Ah, sí. Rails solo tiene sentido cuando ya sabes dónde está todo. Aquí está esto:
Pero aun así, recomiendo dar un paso atrás y describir el problema en lugar de empezar directamente con tu solución.
Gracias, Jay -
Después de leer
def confirm_password?(password)
return false unless password_hash && salt
self.password_hash == hash_password(password, salt)
end
en user.rb
lo siguiente funciona para una validación directa en Ruby:
user = User.find_by_email('some.email.address')
user.confirm_password?('valid-password')
=> true
Estaba experimentando con un archivo .htaccess para un servidor y buscaba una forma de validar un nombre de usuario y contraseña a través de Discourse para ese servidor sin conocer las contraseñas para generar el archivo .htaccess. El enfoque SSO es mejor, y saber cómo validar un nombre de usuario y contraseña sin usar SSO me será útil.
Hola,
Me gustaría saber qué función de hash de contraseñas y parámetros asociados (longitud del hash, salt, nombre real de la biblioteca utilizada) se emplean para el inicio de sesión local. Revisar el archivo de Ruby mencionado anteriormente no me ayudó. Necesito esta información por motivos de cumplimiento: las mejores prácticas en torno al RGPD (y en el ámbito general de la seguridad de los sistemas, realmente) me exigen documentar estos datos.
Edición: encontré la respuesta aquí: Export password hashes in the PHC format → discourse/docs/SECURITY.md at main · discourse/discourse · GitHub