Je souhaite pouvoir utiliser les hachages de mots de passe stockés par Discourse dans un fichier htpassword pour une autre application.
Quel algorithme de hachage de mots de passe Discourse utilise-t-il ?
Je souhaite pouvoir utiliser les hachages de mots de passe stockés par Discourse dans un fichier htpassword pour une autre application.
Quel algorithme de hachage de mots de passe Discourse utilise-t-il ?
Désolé si je me méprends, mais est-ce que vous dites vouloir copier l’algorithme de hachage de Discourse dans votre propre application afin de comparer les hachages générés par votre application avec ceux stockés par Discourse ? Cela ne vous obligerait-il pas à synchroniser régulièrement les mots de passe depuis Discourse vers votre fichier htpasswd, à gérer les sels que Discourse peut avoir ou non actuellement ou à l’avenir, et à maintenir votre implémentation de l’algorithme de hachage synchronisée avec celle de Discourse indéfiniment ?
Encore une fois, désolé si je me méprends complètement, mais je devais demander des éclaircissements par simple curiosité.
Juste pour vérifier qu’un nom d’utilisateur et un mot de passe sont valides.
Un utilisateur fournit un nom d’utilisateur et un mot de passe. Nous vérifions que le mot de passe fourni est valide selon le hachage provenant de Discourse. Nous ne générerons aucun hachage.
Par « génère », je n’ai pas voulu dire stocker, mais valider que le mot de passe est correct.
Je me demande si Discourse propose un SSO dans le sens inverse, afin que les utilisateurs puissent se connecter à d’autres applications directement via Discourse.
Oui, Discourse peut servir d’autorité pour la connexion, et c’est bien le bon chemin @csmu. Tenter de dupliquer la méthode de hachage entraînerait la rupture de votre méthode de connexion à chaque modification.
De plus, cela ne tiendrait pas compte des utilisateurs qui n’ont pas de mot de passe local.
Si vous n’êtes pas disposé ou en mesure de lire le code source pour trouver la réponse à votre question, il serait peut-être préférable de faire un pas en arrière et de décrire le problème que vous essayez de résoudre.
Je parviens à lire la source une fois que je l’ai trouvée. J’ai cherché dans le code source - pour user.password - en me concentrant principalement sur le user_controller. Rien ne m’a sauté aux yeux. Je serais reconnaissant de tout indice sur l’endroit où chercher.
Ce qui m’arrangerait serait de pouvoir valider un utilisateur / mot de passe via Discourse sans ajouter de connexion / authentification SSO. Peut-être via l’API ou un appel direct à du code Ruby.
Oh. Oui. Rails n’a de sens que lorsque l’on sait où se trouvent les éléments. Voici ceci
Mais je recommande toujours de faire marche arrière et de décrire le problème plutôt que de commencer par votre solution.
Merci Jay —
Après avoir lu
def confirm_password?(password)
return false unless password_hash && salt
self.password_hash == hash_password(password, salt)
end
dans user.rb
ce qui suit fonctionne pour une validation Ruby pure
user = User.find_by_email('some.email.address')
user.confirm_password?('valid-password')
=> true
J’expérimentais avec un fichier .htaccess pour un serveur et je cherchais un moyen de valider un nom d’utilisateur / mot de passe via Discourse pour ce serveur, sans connaître les mots de passe pour générer le fichier .htaccess. L’approche SSO est meilleure, et savoir comment valider un nom d’utilisateur / mot de passe sans utiliser SSO me sera utile.
Bonjour,
Je souhaiterais connaître la fonction de hachage de mot de passe et les paramètres associés (longueur du hachage, sel, nom exact de la bibliothèque utilisée) employés pour la connexion locale. L’examen du fichier Ruby mentionné précédemment ne m’a pas aidé. J’ai besoin de ces informations pour des raisons de conformité : les bonnes pratiques en matière de RGPD (et plus généralement en matière de sécurité des systèmes) m’obligent à documenter ces éléments.
Édition : j’ai trouvé la réponse ici : Export password hashes in the PHC format → discourse/docs/SECURITY.md at main · discourse/discourse · GitHub