Nextcloud Gültigkeitsdauer – Password vergessen und Aktivierungsmail

Nextcloud Logo

Nachfolgend für alle ein paar Infos wie man die Zeit bis die Willkommensmail oder auch die Mail für das Passwort vergessen abläuft. Im Vergleich zur Nextcloud 13, ist der Token nicht mehr nur 12h sondern 24h gültig, aber man möge mich hier korrigieren, falls ich falsch liege.

  • Passwort vergessen / Lost Password
  • Aktivierungsmail für den Zugang mit Passwort setzen Link / Willkommensmail

Nextcloud 23

Eine weitere Änderung ist wohl ab Nextcloud 23 eingeflossen. Der Code in in der Datei “lib/private/Security/VerificationToken/VerificationToken.php” wurde nun durch eine Konstante geändert:

protected const TOKEN_LIFETIME = 60 * 60 * 24 * 7;

Merge pull request #28422 from nextcloud/enh/27465/notification-email · 78d62063ff – nextcloud-server – PhorGitea (packden.us)

Nextcloud 22

Die alte Möglichkeit, die Zeit bis der Token für Passwort vergessen und der Willkommensmail, wurde von der Datei “core/Controller/LostController.php”

if ($splittedToken[0] < ($this->timeFactory->getTime() - 60 * 60 * 24 * 7) ||

in die Datei “lib/private/Security/VerificationToken/VerificationToken.php”

if ($splitToken[0] < ($this->timeFactory->getTime() - 60 * 60 * 24 * 7) ||

verschoben.

Quelle: move verification token logic out of lost password controller · 19cc757531 – nextcloud-server – PhorGitea (packden.us)

Nextcloud 13

Es ist für 12h gültig. D.h. nach Ablauf von 12 Stunden, kann der Link nicht mehr benutzt werden und das Passwort nicht geändert werden. Als Fehlermeldung ist dann folgendes zu lesen:

Das Passwort konnte aufgrund eines ungültigen Tokens nicht zurückgesetzt werden.

Leider kann man die Aktivierungs bzw. Passwort vergessen Mail so nicht nochmal senden (ab ca Nextcloud 20 ist dies in den Optionen des Users nun möglich). Man müsste somit als Administrator ein Passwort vergeben und mitteilen, was dann vom jeweiligen geändert werden sollte. Eine andere Möglichkeit ist es die Zeit von 12 Stunden zu erhöhen, was wie folgt passiert:

  1.  öffnen der Datei # /core/Controller/LostController.php
  2. dort den folgenden Eintrag suchen:
    if ($splittedToken[0] < ($this->timeFactory->getTime() – 60*60*12)
  3. und nun die 12 am Ende der Formel in z.B. 24, was für 24 Stunden steht, ändern:
    if ($splittedToken[0] < ($this->timeFactory->getTime() – 60*60*24)

Thats it – Have Fun ..

6 thoughts on “Nextcloud Gültigkeitsdauer – Password vergessen und Aktivierungsmail

  1. DAH

    In meiner Nextcloud Version 22.2.3 ist die Gültigkeitsdauer nicht mehr in der LostController.php

    Ich habe jetzt die Token-Lifetime unter lib/private/Security/VerificationToken/VerificationToken.php gefunden.

    Reply
    1. JARVIS Post author

      Hi DAH,
      und danke für die Info. Ich habe mich nochmal an das Thema gesetzt und den Artikel überarbeitet. Es gibt sogar noch eine Änderung ab NC23!

      Reply
  2. Markus

    Hallo Jarvis,
    nun steht in meiner aktuellen Nextcloud Version in dieser Datei folgende Zeile:

    if ($splittedToken[0] timeFactory->getTime() – 60*60*24*7)

    Was bedeutet denn die “7” am Ende? Ich nehme an 7 Tage, richtig?
    Wie lange ist denn dann der Link gültig? Eine Woche? Kann ich aus der 7 dann eine 14 machen um den Link zwei Wochen lang gültig zu lassen?
    Danke
    Markus

    Reply
    1. JARVIS Post author

      Hallo Markus,
      ich kann es leider aktuell nicht 100%ig sagen, aber ich würde sagen, dass ist eine Multiplikation der 24 Mal 7, also gleich den Tagen zu setzen. Dementsprechend kannst du für 14 Tage dann die 14 eintragen.

      Reply
  3. Tom

    Hi,
    genau was ich gerade gesucht habe 😉
    Ist ja easy, kurze Frage:
    ‘/core/…’ wird wahrscheinlich bei Updates überbügelt, oder? Hab mich noch nicht so intensiv mit der own/nextcloud beschäftigt.
    Die Änderung müsste also nach jedem Update wieder neu gemacht werden, wenn ich will, dass der token dauerhaft länger als 12h gültig ist. Gibt es eine Möglichkeit das persistent hinzubekommen?
    Lg vom Tom

    Reply

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.