2012-09-25 6 views
6

Ich richte eine Flask-App mit der flaschen-login-Erweiterung ein. Die Flask-Login-Dokumentation empfiehlt, einen alternativen Token-Generator einzurichten, der nicht einfach die Benutzer-ID und das App-Geheimnis verwendet, um das Sitzungstoken zu erstellen (was die Standardmethode ist). Aber es gibt keine klaren Empfehlungen, wie dies zu tun ist.Flask-Login Token Loader

Also, für User.get_auth_token(), verwende ich die make_secure_token Funktion mit dem Benutzer E-Mail und Passwort als Parameter (so bekomme ich einen Hash dieser Parameter + App Geheimnis).

Als nächstes muss ich in der Lage sein, den Benutzer aus dem Token mit dem token_loader Rückruf zu bekommen. Die Standardmethode zum Generieren von Tokens in flask-login besteht darin, sowohl die rohe Benutzer-ID als auch einen Hash der Benutzer-ID + App-Secret anzugeben. Das macht es sehr einfach, den Benutzer aus dem Token zu finden - nehmen Sie einfach die ID und suchen Sie den Benutzer.

Aber sollte ich die Benutzer-ID im Session-Token überhaupt offen legen? Wenn nicht, sollte ich das Sitzungstoken in der Datenbank oder woanders mit der Benutzer-ID speichern, um eine Suche zu ermöglichen?

Kurz gesagt: weiß jemand, was die beste Praxis für das Erstellen eines sicheren Token ist & entsprechenden token_loader Rückruf?

Antwort

3

Auf der Flask-Mailing-Liste wies mich Matt Wright auf his implementation in der Kolben-Sicherheitserweiterung. Er verwendet itsdangerous, um ein signiertes Token zu erstellen, das eine serialisierte (über URLSafeTimedSerializer()) Liste codiert, die aus der Benutzer-ID und dem Passwort-Hash besteht. Das Token kann dann decodiert werden, um die Benutzer-ID zu erfassen.