Ich möchte die gespeicherten Passwort-Hashes aus Discourse in einer htpasswd-Datei für eine andere Anwendung verwenden können.
Welchen Passwort-Hashing-Algorithmus verwendet Discourse?
Ich möchte die gespeicherten Passwort-Hashes aus Discourse in einer htpasswd-Datei für eine andere Anwendung verwenden können.
Welchen Passwort-Hashing-Algorithmus verwendet Discourse?
Entschuldigung, falls ich etwas falsch verstehe, aber meinst du, dass du den Hashing-Algorithmus von Discourse effektiv in deine eigene Anwendung kopieren möchtest, damit du die von deiner App generierten Hashes mit den in Discourse gespeicherten abgleichen kannst? Würde das nicht bedeuten, dass du regelmäßig Passwörter von Discourse in deine htpasswd-Datei synchronisieren musst, Salt-Werte berücksichtigst, die Discourse möglicherweise jetzt oder in Zukunft verwendet, und deine Implementierung des Hashing-Algorithmus dauerhaft mit dem Algorithmus von Discourse synchron hält?
Noch einmal: Entschuldigung, falls ich etwas völlig falsch verstehe, aber ich musste zur Klärung für meine eigene Neugier nachfragen.
Nur zur Überprüfung, ob ein Benutzername und ein Passwort gültig sind.
Ein Benutzer liefert einen Benutzernamen und ein Passwort. Wir prüfen, ob das gelieferte Passwort gemäß dem Hash von Discourse gültig ist. Wir werden keine Hashes generieren.
Mit „generieren
Ja, Discourse kann für die Anmeldung autoritativ sein, und dies ist der korrekte Weg, @csmu. Der Versuch, das Hashing-Verfahren zu duplizieren, würde bedeuten, dass Ihre Anmeldemethode jedes Mal, wenn sich das Verfahren ändert, nicht mehr funktioniert.
Außerdem würde dies keine Berücksichtigung von Benutzern finden, die kein lokales Passwort haben.
Wenn du nicht bereit oder in der Lage bist, den Quellcode zu lesen, um die Antwort auf deine gestellte Frage zu finden, ist es vielleicht am besten, einen Schritt zurückzutreten und zu beschreiben, welches Problem du lösen möchtest.
Ich kann die Quelle lesen, sobald ich sie finde. Ich habe im Quellcode nach user.password gesucht und mich dabei hauptsächlich auf den user_controller konzentriert. Mir ist nichts Auffälliges aufgefallen. Ich wäre dankbar für Hinweise, wo ich suchen sollte.
Was mir helfen würde, ist die Möglichkeit, einen Benutzer/Passwort über Discourse zu validieren, ohne ein SSO-Anmelden/Anmelden hinzuzufügen. Vielleicht über die API oder einen direkten Aufruf von Ruby-Code.
Ah, ja. Rails ergibt erst Sinn, wenn man weiß, wo die Dinge zu finden sind. Hier ist das:
Ich empfehle jedoch immer noch, einen Schritt zurückzutreten und das Problem zu beschreiben, anstatt direkt mit deiner Lösung zu beginnen.
Danke, Jay –
Nachdem ich folgendes in user.rb gelesen habe:
def confirm_password?(password)
return false unless password_hash && salt
self.password_hash == hash_password(password, salt)
end
funktioniert das für eine reine Ruby-Validierung:
user = User.find_by_email('some.email.address')
user.confirm_password?'valid-password'
=> true
Ich habe mit einer .htaccess-Datei für einen Server experimentiert und suchte nach einer Möglichkeit, einen Benutzernamen/das Passwort über Discourse für diesen Server zu validieren, ohne die Passwörter zu kennen, um die .htaccess-Datei zu generieren. Der SSO-Ansatz ist besser, und zu wissen, wie man einen Benutzernamen/das Passwort ohne SSO validiert, wird für mich nützlich sein.
Hallo,
ich würde gerne wissen, welche Passwort-Hash-Funktion und welche damit verbundenen Parameter (Hash-Länge, Salt, welche konkrete Bibliothek verwendet wird) für die lokale Anmeldung genutzt werden. Der Blick auf die zuvor erwähnte Ruby-Datei hat mir nicht weitergeholfen. Ich benötige diese Informationen aus Compliance-Gründen: Best Practices rund um die DSGVO (und allgemein im Bereich Systemsicherheit) verlangen von mir, diese Informationen zu dokumentieren.
Edit: Die Antwort habe ich hier gefunden: Export password hashes in the PHC format → discourse/docs/SECURITY.md at main · discourse/discourse · GitHub