Difference between revisions of "Releasenotes 2026 OS.Softwarefactory"

From OS.bee documentation
Jump to: navigation, search
Line 2: Line 2:
  
 
== [[Releasenotes | --> zurück zu Releasenotes ]] ==
 
== [[Releasenotes | --> zurück zu Releasenotes ]] ==
 +
 +
== Version 5.3.0.20261006 ==
 +
 +
* OSBP Framework (Allgemein):
 +
** Einführung der http://<host>:<port>/restartService Seite. Damit können entweder Sessions gekillt oder der Service der Anwendung neu gestartet werden.
 +
** Bei Nichterreichbarkeit der Datenbank wird die Anwendung beendet und der Fehlerstatus auf der Statusseite angezeigt.
 +
** Das eingebettete <code>shiro-all-1.2.3.jar</code> wurde durch <code>shiro-core</code> und <code>shiro-web</code> in Version 1.13.0 ersetzt. Damit sind CVE-2016-4437 (Remote Code Execution über das RememberMe-Cookie mit festem Schlüssel) und CVE-2019-12422 geschlossen. <code>encoder-1.2.3.jar</code> kommt hinzu, weil <code>shiro-web</code> 1.13 <code>org.owasp.encoder</code> zwingend importiert.
 +
** Anmeldung:
 +
*** Fix: <code>LDAPRealm</code> löst den Anmeldenamen vor jeder Abfrage in einen Distinguished Name auf. Active Directory akzeptiert für den Bind auch einen User Principal Name, beantwortet Abfragen damit aber mit LDAP-Fehler 34 (<code>invalidDNSyntax</code>), sodass ein <code>userDnTemplate</code> von <code>{0}</code> zwar anmeldete, dann aber an den Attributen scheiterte. <code>resolveUserDn</code> sucht nun über <code>userPrincipalName</code>, <code>sAMAccountName</code> oder <code>mail</code>; die Suchbasis stammt aus dem RootDSE. Bestehende Vorlagen der Form <code>cn={0},ou=...</code> verhalten sich unverändert. Zugleich behoben: eine <code>StringIndexOutOfBoundsException</code> im E-Mail-Zweig und das Einsetzen des Benutzernamens in den Suchfilter per Verkettung (jetzt als <code>{0}</code>, von JNDI maskiert)
 +
*** Fix: <code>LDAPRealm.getUserDn</code> maskierte nur das Komma. <code>escapeDnValue</code> deckt nun alle Zeichen nach RFC 4514 Abschnitt 2.4 ab, sodass ein Benutzername die Bedeutung des DN nicht mehr verändern kann
 +
*** Die Funktionalität „Angemeldet bleiben“ arbeitet nun mit einem signierten Token statt mit verschlüsselten Zugangsdaten. Das Cookie ist eine mit HMAC-SHA256 signierte Aussage über Benutzer, Mandant, Geltungsbereich, Ablaufdatum und Version und enthält keine Zugangsdaten. Es ist zustandslos, sodass beliebig viele Geräte und Browser gleichzeitig eines halten können.
 +
*** Das „Angemeldet bleiben“-Cookie gilt je Anwendungsinstanz und Browser. Der Cookie-Name trägt einen Kurzhash über Schema, Host, Port, erstes Pfadsegment und Portal-ID, sodass zwei Anwendungen auf demselben Host nicht mehr das Cookie der jeweils anderen lesen. Die selbstgebaute Verschlüsselung entfällt vollständig. Das Cookie wird mit expliziter Lebensdauer, <code>SameSite=Lax</code> und unter https mit <code>Secure</code> geschrieben. Die Anmeldung aus einem Cookie wartet fünf Sekunden mit einem Hinweis auf der Anmeldemaske und lässt sich in dieser Zeit abbrechen; ein entferntes Häkchen löscht das Cookie nun in jedem Fall. Die Betrugsmeldung samt Kontosperre bei nicht passendem Cookie entfällt
 +
*** Fix: Kennwörter erscheinen nicht mehr im Log – weder bei der Anmeldung in <code>AuthenticationProvider.check()</code> (bisher im Klartext auf DEBUG) noch beim Zurücksetzen, wo der Nachrichtentext mit dem neuen Kennwort dreimal geschrieben wurde
 +
*** Die Anzeige des neuen Kennworts auf der Anmeldemaske, wenn keine E-Mail versendet werden kann, ist nun eine konfigurierte Betriebsart: <code>Userinterface/showResetPasswordOnScreen</code>, standardmäßig aus, mit Protokollierung auf WARN. '''Installationen ohne Mailserver müssen den Parameter einmalig setzen'''
 +
*** Fix: <code>doResetPassword</code> hebt weder eine Sperre noch die Deaktivierung eines Kontos auf und setzt den Fehlversuchszähler nicht mehr zurück. Das Zurücksetzen kann jeder auslösen, der einen Benutzernamen eingibt; aufgehoben werden Sperre und Deaktivierung nur noch durch einen Administrator über <code>doUnlock</code>
 +
** System Configuration:
 +
*** Parameter <code>RememberMeSecret</code> in <code>IConfigurationService</code> ergänzt (<code>GLOBAL_PARAMETERS/RememberMeSecret</code>). Der Schlüssel wird je Installation bei der ersten Benutzung der "RememberMe" Funktionalität einmal aus gezogen und von allen Anmeldungen geteilt; das Löschen des Eintrags macht alle „Angemeldet bleiben“-Cookies auf einmal ungültig.
 +
*** Fix: Die Einstellungen füllten sich mit Platzhaltern „not set“. <code>ConfigurationService.getConfigurationString</code> speicherte bei leerem Vorgabewert den Platzhalter und lieferte ihn als leere Zeichenkette zurück, sodass <code>addConfiguration</code> stets eine weitere Zeile anhängte. <code>addConfiguration</code> entfernt nun die Platzhalterzeilen des Schlüssels vor dem Schreiben, und ein gespeicherter Platzhalter gilt als „kein Wert“. <code>deleteConfigurations</code> setzt zusätzlich den Cache zurück; gelöschte Einträge kamen bisher beim nächsten Lesen wieder
 +
 +
* Build & Infrastruktur:
 +
** Fix: org.eclipse.osbp.dependencies-mbp: Das Bundle <code>org.eclipse.osbp.dependencies.bundle.activemq.all.osgi</code> enthält kein Log4j und kein eingebettetes slf4j mehr. <code>activemq-all</code> brachte eine vollständige Kopie von Apache Log4j 1.2.17 mit (359 Klassen, darunter <code>JDBCAppender</code>, <code>JMSAppender</code>, <code>JMSSink</code> und chainsaw – betroffen von CVE-2021-4104, CVE-2022-23302, CVE-2022-23305 und CVE-2022-23307) sowie slf4j-api 1.7.13 und <code>slf4j-log4j12</code>. <code>Include-Resource</code> bindet das Hersteller-Jar nun ohne <code>org.apache.log4j</code>, <code>org.slf4j</code>, deren Maven-Koordinaten, die <code>log4j.properties</code> und Springs <code>Log4jConfigurer</code> ein. ActiveMQ bezieht slf4j stattdessen aus dem Produkt (<code>org.slf4j.api</code> 1.7.36)
 +
 +
* UI & Themes:
 +
** Neue Dienststeuerungsseite unter <code>/restartService</code>.
 +
*** Ein Bediener kann darüber – autorisiert durch eine reguläre Anwendungsanmeldung – hängende Sitzungen beenden oder den Dienst neu starten, ohne Zugriff auf den Serverrechner zu benötigen. Drei Stufen: Sitzungen des aufrufenden Arbeitsplatzes, alle Sitzungen, Neustart. Die Seite ist am Root-HTTP-Service registriert und bleibt damit erreichbar, wenn der Anwendungskontext selbst gestört ist; Markup, Stil, Skript und Texte (deutsch, englisch, französisch) sind deshalb in der Seite enthalten. Sitzungen werden über das Invalidieren der HTTP-Sitzung beendet. Der Neustart läuft über die Befehlswarteschlange der Anwendung; die Seite fragt anschließend die Anwendung ab und führt den Bediener über die Unterbrechung hinweg
 +
*** Alle Aktionen der Dienststeuerungsseite werden im <code>MonitoringService</code> unter denselben Koordinaten wie die Anmeldemaske protokolliert (fehlgeschlagene Anmeldung und Neustart als WARNING, gesperrtes Konto als ERROR, beendete Sitzungen als INFO). Eine abgelehnte Anmeldung sperrt das Formular für die Dauer der Wartezeit mit Countdown; der Zähler ist derselbe wie an der Anmeldemaske, sodass sich Fehlversuche auf beiden Wegen zur Kontosperre summieren
 +
 +
  
 
== Version 5.3.0.20260907 ==
 
== Version 5.3.0.20260907 ==

Revision as of 12:37, 6 October 2026

--> zurück zu Releasenotes

Version 5.3.0.20261006

  • OSBP Framework (Allgemein):
    • Einführung der http://<host>:<port>/restartService Seite. Damit können entweder Sessions gekillt oder der Service der Anwendung neu gestartet werden.
    • Bei Nichterreichbarkeit der Datenbank wird die Anwendung beendet und der Fehlerstatus auf der Statusseite angezeigt.
    • Das eingebettete shiro-all-1.2.3.jar wurde durch shiro-core und shiro-web in Version 1.13.0 ersetzt. Damit sind CVE-2016-4437 (Remote Code Execution über das RememberMe-Cookie mit festem Schlüssel) und CVE-2019-12422 geschlossen. encoder-1.2.3.jar kommt hinzu, weil shiro-web 1.13 org.owasp.encoder zwingend importiert.
    • Anmeldung:
      • Fix: LDAPRealm löst den Anmeldenamen vor jeder Abfrage in einen Distinguished Name auf. Active Directory akzeptiert für den Bind auch einen User Principal Name, beantwortet Abfragen damit aber mit LDAP-Fehler 34 (invalidDNSyntax), sodass ein userDnTemplate von {0} zwar anmeldete, dann aber an den Attributen scheiterte. resolveUserDn sucht nun über userPrincipalName, sAMAccountName oder mail; die Suchbasis stammt aus dem RootDSE. Bestehende Vorlagen der Form cn={0},ou=... verhalten sich unverändert. Zugleich behoben: eine StringIndexOutOfBoundsException im E-Mail-Zweig und das Einsetzen des Benutzernamens in den Suchfilter per Verkettung (jetzt als {0}, von JNDI maskiert)
      • Fix: LDAPRealm.getUserDn maskierte nur das Komma. escapeDnValue deckt nun alle Zeichen nach RFC 4514 Abschnitt 2.4 ab, sodass ein Benutzername die Bedeutung des DN nicht mehr verändern kann
      • Die Funktionalität „Angemeldet bleiben“ arbeitet nun mit einem signierten Token statt mit verschlüsselten Zugangsdaten. Das Cookie ist eine mit HMAC-SHA256 signierte Aussage über Benutzer, Mandant, Geltungsbereich, Ablaufdatum und Version und enthält keine Zugangsdaten. Es ist zustandslos, sodass beliebig viele Geräte und Browser gleichzeitig eines halten können.
      • Das „Angemeldet bleiben“-Cookie gilt je Anwendungsinstanz und Browser. Der Cookie-Name trägt einen Kurzhash über Schema, Host, Port, erstes Pfadsegment und Portal-ID, sodass zwei Anwendungen auf demselben Host nicht mehr das Cookie der jeweils anderen lesen. Die selbstgebaute Verschlüsselung entfällt vollständig. Das Cookie wird mit expliziter Lebensdauer, SameSite=Lax und unter https mit Secure geschrieben. Die Anmeldung aus einem Cookie wartet fünf Sekunden mit einem Hinweis auf der Anmeldemaske und lässt sich in dieser Zeit abbrechen; ein entferntes Häkchen löscht das Cookie nun in jedem Fall. Die Betrugsmeldung samt Kontosperre bei nicht passendem Cookie entfällt
      • Fix: Kennwörter erscheinen nicht mehr im Log – weder bei der Anmeldung in AuthenticationProvider.check() (bisher im Klartext auf DEBUG) noch beim Zurücksetzen, wo der Nachrichtentext mit dem neuen Kennwort dreimal geschrieben wurde
      • Die Anzeige des neuen Kennworts auf der Anmeldemaske, wenn keine E-Mail versendet werden kann, ist nun eine konfigurierte Betriebsart: Userinterface/showResetPasswordOnScreen, standardmäßig aus, mit Protokollierung auf WARN. Installationen ohne Mailserver müssen den Parameter einmalig setzen
      • Fix: doResetPassword hebt weder eine Sperre noch die Deaktivierung eines Kontos auf und setzt den Fehlversuchszähler nicht mehr zurück. Das Zurücksetzen kann jeder auslösen, der einen Benutzernamen eingibt; aufgehoben werden Sperre und Deaktivierung nur noch durch einen Administrator über doUnlock
    • System Configuration:
      • Parameter RememberMeSecret in IConfigurationService ergänzt (GLOBAL_PARAMETERS/RememberMeSecret). Der Schlüssel wird je Installation bei der ersten Benutzung der "RememberMe" Funktionalität einmal aus gezogen und von allen Anmeldungen geteilt; das Löschen des Eintrags macht alle „Angemeldet bleiben“-Cookies auf einmal ungültig.
      • Fix: Die Einstellungen füllten sich mit Platzhaltern „not set“. ConfigurationService.getConfigurationString speicherte bei leerem Vorgabewert den Platzhalter und lieferte ihn als leere Zeichenkette zurück, sodass addConfiguration stets eine weitere Zeile anhängte. addConfiguration entfernt nun die Platzhalterzeilen des Schlüssels vor dem Schreiben, und ein gespeicherter Platzhalter gilt als „kein Wert“. deleteConfigurations setzt zusätzlich den Cache zurück; gelöschte Einträge kamen bisher beim nächsten Lesen wieder
  • Build & Infrastruktur:
    • Fix: org.eclipse.osbp.dependencies-mbp: Das Bundle org.eclipse.osbp.dependencies.bundle.activemq.all.osgi enthält kein Log4j und kein eingebettetes slf4j mehr. activemq-all brachte eine vollständige Kopie von Apache Log4j 1.2.17 mit (359 Klassen, darunter JDBCAppender, JMSAppender, JMSSink und chainsaw – betroffen von CVE-2021-4104, CVE-2022-23302, CVE-2022-23305 und CVE-2022-23307) sowie slf4j-api 1.7.13 und slf4j-log4j12. Include-Resource bindet das Hersteller-Jar nun ohne org.apache.log4j, org.slf4j, deren Maven-Koordinaten, die log4j.properties und Springs Log4jConfigurer ein. ActiveMQ bezieht slf4j stattdessen aus dem Produkt (org.slf4j.api 1.7.36)
  • UI & Themes:
    • Neue Dienststeuerungsseite unter /restartService.
      • Ein Bediener kann darüber – autorisiert durch eine reguläre Anwendungsanmeldung – hängende Sitzungen beenden oder den Dienst neu starten, ohne Zugriff auf den Serverrechner zu benötigen. Drei Stufen: Sitzungen des aufrufenden Arbeitsplatzes, alle Sitzungen, Neustart. Die Seite ist am Root-HTTP-Service registriert und bleibt damit erreichbar, wenn der Anwendungskontext selbst gestört ist; Markup, Stil, Skript und Texte (deutsch, englisch, französisch) sind deshalb in der Seite enthalten. Sitzungen werden über das Invalidieren der HTTP-Sitzung beendet. Der Neustart läuft über die Befehlswarteschlange der Anwendung; die Seite fragt anschließend die Anwendung ab und führt den Bediener über die Unterbrechung hinweg
      • Alle Aktionen der Dienststeuerungsseite werden im MonitoringService unter denselben Koordinaten wie die Anmeldemaske protokolliert (fehlgeschlagene Anmeldung und Neustart als WARNING, gesperrtes Konto als ERROR, beendete Sitzungen als INFO). Eine abgelehnte Anmeldung sperrt das Formular für die Dauer der Wartezeit mit Countdown; der Zähler ist derselbe wie an der Anmeldemaske, sodass sich Fehlversuche auf beiden Wegen zur Kontosperre summieren


Version 5.3.0.20260907

  • OSBP Framework (Allgemein):
    • Überarbeitung der Codebasis zur Entfernung veralteter und nicht benötigter Bundles
    • Überarbeitung des Loginvorgangs / der Cookiespeicherung bei "remember me". Es werden keine kritischen Daten mehr im Cookie gespeichert.
    • Verbesserung der Übersetzungen
    • Anpassungen für frz. Fiskalanforderungen

Version 5.3.0.20260707

  • OSBP Framework (Allgemein):
    • Laden der Übersetzungen in die interne Tabelle beim Systemstart deutlich beschleunigt. Dadurch verbessertes Startverhalten der Anwendungen.
    • Verbesserungen bei der frz. Tastaturunterstützung
    • Verbesserungen der Übersetzungen

Version 5.3.0.20260618

  • OSBP Framework (Allgemein):
    • Blockieren durch das Laden von Diensten während des Starts vermieden, dadurch schnellerer Anwendungsstart. Anderes Verhalten beim Start an der Benutzeroberfläche.
    • Französische Tastaturunterstützung (AZERTY) im Keymapper der Statemachine ergänzt
    • Login bezieht Build-Version und Hersteller nun aus den BundleUtilities (einheitliche Quelle)
    • Neue gemeinsame Hilfsmethoden getBuildVersion()/getVendor() in BundleUtilities zur Ermittlung der Build-Identität
    • MonitoringService setzt die Zeitstempel von lastError und lastWarning nicht mehr zurück
    • Fix: NPE in org.eclipse.osbp.xtext.dialog.AutowireUiFactory behoben
    • Version von 5.2.0 auf 5.3.0 angehoben
  • UI & Themes:
    • Neues Icon action-reverify (16px/32px) für die NF525-Schaltfläche zur erneuten Archivintegritätsprüfung
    • Neues Icon action-refresh.png ergänzt
    • Grid – horizontale Bildlaufleiste wiederhergestellt
    • Grid - Flex-Layout für Kassen-/POS-Grids wiederhergestellt (kollabierte Spalten behoben)
    • französische Übersetzungen überarbeitet
  • Grammatiken/Generierung:
    • org.eclipse.osbp.dsl: Benutzerdefinierte @PreRemove-Hooks werden in der generierten preRemove()-Methode zusammengeführt
    • org.eclipse.osbp.xtext.i18n: i18n-Generator erzeugt nun das byte-genaue Eclipse-Babel-Format
  • POS Framework für franz. Fiskalanforderungen eingeführt

Version 5.2.0.20260410

  • POS Framework:
    • Performanceverbesserung beim Kassieren
    • Multi-Protokoll Unterstützung für Paymentterminal
      • frz. Protokolle "Concert", "Protocol E"
      • "Mock" für Tests
      • Statemachine DSL erweitert: protocol Parameter für Paymentterminal
      • "Shared Payment Terminal"
        • locking im PaymentTerminalService implementiert
        • pro Terminal über ConfigService einstellbar

Version 5.2.0.20260402

Die Version verbessert das Startverhalten einer Anwendung und bringt mehr Informationen über den Status des Starts auf den Bildschirm

  • OSBP Framework:
    • Anzeige des Persistenzservice-Status auf dem Login-Bildschirm
    • Information über den Persistenzservice auf der Fehlerseite hinzugefügt
    • Beim Start wird nun überall auf den Persistenzservice statt nur auf den ConfigurationService gewartet
  • BPM:
    • Fix: net.osbee.bpm: Deadlock beim Anwendungsstart behoben
  • POS Framework:
    • Fix: net.osbee.pos.epay: Deadlock beim Anwendungsstart behoben

Version 5.2.0.20260305

Report Anzeige

Diese Version konzentriert sich auf Stabilitätsverbesserungen für das Report-Rendering-System, insbesondere auf die Behebung von Race Conditions und Anzeigeproblemen, die bei schnellen Benutzerinteraktionen auftraten.

  • Race Condition beim Report-Rendering
    • Behoben: Schnelles Auswählen/Abwählen führte dazu, dass Reports mit ungültigen oder fehlenden Filtern gerendert wurden
      • Reports verarbeiten nun korrekt wenn Benutzer schnell Elemente auswählen und wieder abwählen
      • Filteränderungen werden blockiert, während ein Render-Vorgang läuft
      • Ausstehende Filteränderungen werden nachverfolgt und nach Abschluss des Renderings erneut ausgewertet
      • Reports mit selectById werden nun korrekt ausgeblendet, wenn nichts ausgewählt ist
  • PDF-Anzeigeskalierungsproblem
    • Behoben: PDF-Skalierungsprobleme durch Neuerstellung des BrowserFrames bei jedem Rendering

Anmeldebildschirm

Der Anmeldebildschirm zeigt nun während der Initialisierung des Persistence-Services einen Statustext an.

  • Lauftext-Anzeige (Marquee) mit dem aktuellen Status des Persistence-Services
  • Deaktivierung aller Anmeldesteuerelemente während der Wartezeit

Start der Anwendung

  • Blockierungen der Initialisierungsvorgänge durch Warten auf Serviceregistrierung während des Anwendungsstarts reduziert.
    Dadurch verändert sich das Startverhalten, insbesondere die Reihenfolge der Anwendung. Insgesamt schnelleres Laden der Bundles.