evcc icon indicating copy to clipboard operation
evcc copied to clipboard

Config UI: Add authentication

Open naltatis opened this issue 5 months ago • 11 comments

Add password authentication to secure sensitive configuration data. Limited scope to one "admin" user.

  • 🔐 admin password can be set via api once(!)
  • 🎟️ using JWT tokens via httpOnly cookie (90d validity)
  • 🔮 using bcrypt to store encrypted admin pw hash in db

addresses #6029

TODOs

  • [x] login UI
  • [x] pw reset via CLI -> evcc password [set|reset]
  • [x] secure all /config routes
  • [x] e2e test: login, existing flow
  • [x] e2e test: set password, logout

Next steps (other PRs)

  • Add pw change function

Ideas for some time in the future

  • Option to require auth for all evcc UI/APIs
  • Support for multiple users or integration tokens

Video

https://github.com/evcc-io/evcc/assets/152287/3bb456b0-2130-4ab6-b25e-e2c9ba243347

naltatis avatar Jan 17 '24 10:01 naltatis

ist das dann Zwang, oder geht es auch ohne?

VolkerK62 avatar Jan 17 '24 13:01 VolkerK62

Für alles, was Config-UI ist, würde ich das als "Pflicht" sehen. Das offen im Netzwerk stehen zu haben (auch im eigenen) ist keine gute Idee. Da wird ja später auch so etwas wie Scripting/Plugins drüber möglich sein.

naltatis avatar Jan 17 '24 13:01 naltatis

Ah, also nur, wenn die Config betroffen ist. Nicht beim normalen Zugriff aufs UI.

VolkerK62 avatar Jan 17 '24 13:01 VolkerK62

admin password can be set via api once(!)

I don't think thats a good idea. First user could run any script. We should either do this during

evcc configure

or/plus add a cli command.

andig avatar Jan 18 '24 13:01 andig

I don't think thats a good idea. First user could run any script. We should either do this during evcc configure

Ja, wir müssen noch über den Flow sprechen, wie das initiale Setzen des Passworts passiert. Vmtl. müssen wir das bei der Einrichtung durch die UI erzwingen. Das Passwort in die Umgebungsvariable oder evcc.yaml (via evcc configure) zu schreiben ist keine Lösung. Unser Ziel ist es ja eine 100% via Webbrowser-Einrichtung zu ermöglichen.

naltatis avatar Jan 18 '24 15:01 naltatis

Moin, da immer mehr über die UI zu konfigurieren ist wird dieses Thema immer aktueller. Da sich seit einem Monat nichts getan hat wollte ich mal vorsichtig nachfragen wie weit die Implementierung ist?

AnBo83 avatar Feb 14 '24 07:02 AnBo83

Ongoing. Mehrere Baustellen, die hier zusammenführen.

naltatis avatar Feb 14 '24 07:02 naltatis

Die Rückfragen halten uns offen gesagt nur von der Arbeit ab. Wenn sich etwas tut wird es hier sichtbar...

andig avatar Feb 14 '24 08:02 andig

Mandatory "Set Password" Modal (wip)

matching

empty

naltatis avatar Mar 14 '24 22:03 naltatis

Set initial password flow.

https://github.com/evcc-io/evcc/assets/152287/ceda525e-244e-429b-856a-eca9b6d82582

naltatis avatar Mar 15 '24 16:03 naltatis

Video

https://github.com/evcc-io/evcc/assets/152287/3bb456b0-2130-4ab6-b25e-e2c9ba243347

naltatis avatar Mar 19 '24 21:03 naltatis

Schick, ich hab nur Kleinigkeiten.

andig avatar Mar 26 '24 21:03 andig

@andig Ich hab jetzt erstmal alle UI relevanten Stellen (Passwort anlegen/aktualisieren, Login) abgeklemmt. Damit können wir diesen PR in den Master mergen. Auch die entsprechenden Tests sind erstmal geskippt. Alle Stellen sind mit einem entsprechenden TODO versehen (... once auth is released).

Zusammen mit dem ersten echten Use-Case (https://github.com/evcc-io/evcc/pull/11739) würden wir das Feature dann komplett aktivieren.

Einzige offene Frage: jetzt rein oder kurz nach dem nächsten Release?

naltatis avatar Apr 03 '24 08:04 naltatis

eine Frage, ist dieses Feature schon aktiviert da schon im Master?

StevieC121176 avatar Apr 05 '24 14:04 StevieC121176

Das Feature ist im Master aber aktuell noch Code-seitig auskommentiert. Wir werden es vmtl. zusammen mit dem YAML Editor aktiv schalten.

naltatis avatar Apr 05 '24 17:04 naltatis