Self-Service funktioniert nur zum Teil mit AD

Guten Tag allerseits,

hat mich erfreut zu lesen, dass mit UCS 4.2-1 AD-Konten beim Passwort-Reset mit der Self-Service-APP nun funktionieren sollten. So habe ich diese APP installiert und probiert. Bei mir funktioniert…

  • Passwort ändern
  • Kontozugang schützen, um alternative Emailadresse zu hinterlegen.

Was nicht funktioniert ist…

  • Passwort vergessen

Es wird eine Email an die bei “Kontozugang schützen” eingegebene Emailadresse versendet. Wenn ich auf den enthaltenen Link klicke, z.B:
https://srvucs01.firma.de/univention/self-service/#page=newpassword&token=fJnicFcQNFhfqibonL4gQW89aUTsFyqP9NxLLz4hZxSPdjAak9BgkoTqYwojVhrm&username=D.Meier

wird folgenden Fehlermeldung angezeigt

Die Ausführung des Kommandos passwordreset/set_password ist fehlgeschlagen:

Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.7/univention/management/console/base.py", line 249, in execute
    function.__func__(self, request, *args, **kwargs)
  File "/usr/lib/pymodules/python2.7/univention/management/console/modules/passwordreset/__init__.py", line 83, in _decorator
    return func(self, request, *args, **kwargs)
  File "/usr/lib/pymodules/python2.7/univention/management/console/modules/passwordreset/__init__.py", line 160, in _decorated
    return func(self, *args, **kwargs)
  File "/usr/lib/pymodules/python2.7/univention/management/console/modules/decorators.py", line 192, in _response
    return function(self, request)
  File "/usr/lib/pymodules/python2.7/univention/management/console/modules/decorators.py", line 318, in _response
    result = _multi_response(self, request)
  File "/usr/lib/pymodules/python2.7/univention/management/console/modules/decorators.py", line 192, in _response
    return function(self, request)
  File "/usr/lib/pymodules/python2.7/univention/management/console/modules/decorators.py", line 440, in _response
    return list(function(self, iterator, *nones))
  File "/usr/lib/pymodules/python2.7/univention/management/console/modules/decorators.py", line 286, in _fake_func
    yield function(self, *args)
  File "/usr/lib/pymodules/python2.7/univention/management/console/modules/passwordreset/__init__.py", line 375, in set_password
    ret = self.udm_set_password(username, password)
  File "/usr/lib/pymodules/python2.7/univention/management/console/modules/passwordreset/__init__.py", line 463, in udm_set_password
    user.modify()
  File "/usr/lib/pymodules/python2.7/univention/admin/handlers/users/user.py", line 1592, in modify
    return super(object, self).modify(*args, **kwargs)
  File "/usr/lib/pymodules/python2.7/univention/admin/handlers/__init__.py", line 318, in modify
    return self._modify(modify_childs, ignore_license=ignore_license)
  File "/usr/lib/pymodules/python2.7/univention/admin/handlers/__init__.py", line 791, in _modify
    self.__prevent_ad_property_change()
  File "/usr/lib/pymodules/python2.7/univention/admin/handlers/__init__.py", line 1099, in __prevent_ad_property_change
    raise univention.admin.uexceptions.valueMayNotChange(_('key=%(key)s old=%(old)s new=%(new)s') % {'key': key, 'old': oldval, 'new': value})
valueMayNotChange: Attribut=password alter Wert={KINIT} neuer Wert=NichtGeheim-123

Nun gibt es ja noch die Möglichkeit, den Token manuell einzugeben…
https://srvucs01.firma.de/univention/self-service/#page=newpassword

Das wird mit dieser Meldung beendet:

Ein Fehler ist aufgetreten:
Die Anfrage konnte nicht ausgeführt werden.
Fehlernachricht des Servers:

Der Token (Sicherheitsschlüssel) den Sie angegeben haben ist entweder abgelaufen oder ungültig. Bitte fordern Sie einen neuen an.

Weitere Infos zur Umgebung:
univention-app info
UCS: 4.2-1 errata52
App Center compatibility: 4
Installed: adconnector=11.0 mailserver=11 samba-memberserver=4.6 self-service=2.0 4.1/horde=5.2.7-3
Upgradable:

Auf Microsoftseite sind 2 Domain Controller mit Windows 2012 R2 im Server 2008 R2 Funktionslevel.

Wie kann ich noch tun?

Wenn das UCS System Teil einer Microsoft Active Directory Domäne ist werden Änderungen nur von AD zu UCS Seite synchronisiert. Daher kann eine Passwortänderung nicht per UCS geschehen sondern nur am Active Directory. Das Passwort-Vergessen Modul vom Self-Service schreibt einfach das userPasswort LDAP-Attribut ins UCS-LDAP, was in diesem Fall nicht funktioniert. Ein neues Passwort setzen würde nur per kerberos funktionieren, wenn das alte Passwort bekannt ist. Ich habe dafür einen Bug Report erstellt:
https://forge.univention.org/bugzilla/show_bug.cgi?id=44867

Danke für die Antwort. In meinem jugendlichen Leichtsinn dachte ich, wenn Passwort ändern funktioniert, geht das andere bestimmt auch. Aber es sind doch unterschiedliche Situationen.
Früher oder später wird es wohl auf ein AD-Takeover hinauslaufen. Aber es wäre schon ein Zuckerl, wenn die AD-Nutzer ihr vergessenes Passwort über ein Opensource Portal ändern könnten :slight_smile:

Mastodon