Problem mit der Passwortübergabe an SAP
Nach dem Update auf SAP-Netweaver 2004s und spätere Versionen funktioniert die Anmeldung des CPIC-Users nicht mehr
Symptom
Kennwortbasierte Anmeldeversuche (an ABAP-Systemen ab Release 7.00 / NetWeaver 2004s / mySAP ERP 2005) scheitern, obwohl der Benutzer ein vermeintlich korrektes Kennwort in einer Frontend-Komponente bzw. in einer Destination (eines anderen Systems) eingetragen hat. Eine (direkte) SAPGUI-Anmeldung mit dem gleichen Kennwort ist hingegen erfolgreich.
Grund
ABAP-Systeme ab NetWeaver 2004s (7.00) unterstützen Kennwörter, die aus bis zu 40 Zeichen bestehen können, wobei zwischen Groß- und Kleinbuchstaben unterschieden wird. In früheren ABAP-Releases (< 7.00) konnten Kennwörter nur aus maximal 8 Zeichen bestehen, wobei eingegebene Kleinbuchstaben automatisch in Großbuchstaben gewandelt wurden.
Wird nun in einem neueren ABAP-System (ab 7.00) (unbewusst) ein abwärtsinkompatibles Kennwort vergeben (siehe unten) und ist die Frontend-/Middleware-Komponente nicht in der Lage, solche Kennwörter korrekt zu verarbeiten, so kommt es zwangsläufig zu Anmeldeproblemen.
Die Ursache ist hierbei meistens die (unsichtbare) automatische Konvertierung von Klein- in Großbuchstaben. Das Problem besteht also darin, dass das vom Benutzer eingegebene Kennwort nicht in dieser Form beim Server ankommt, sondern entweder bereits bei der Eingabe oder bei der Übermittlung (an der mitunter viele Komponenten beteiligt sind) verändert wird.
Begriffsdefinitionen
- Kennwort: abwärtskompatibel / abwärtsinkompatibel
Ein (Klartext-)Kennwort ist abwärtskompatibel, wenn es aus maximal 8 Zeichen besteht und keine Kleinbuchstaben beinhaltet.
Ein (Klartext-)Kennwort ist abwärtsinkompatibel, wenn es entweder aus mehr als 8 Zeichen besteht oder mindestens einen Kleinbuchstaben beinhaltet.
Ältere ABAP-Systeme unterstützen ausschließlich abwärtskompatible Kennwörter. In neueren ABAP-Systemen (ab 7.00) können sowohl abwärtsinkompatible als auch abwärtskompatible Kennwörter vergeben werden. Da eingegebene Kleinbuchstaben nun aber nicht mehr in Großbuchstaben gewandelt werden, sind die in neueren ABAP-Systemen vergebenen Kennwörter normalerweise abwärtsinkompatibel
- Kennworthashverfahren / Code-Versionen
ABAP-Systeme speichern Kennwörter nicht im Klartext, sondern berechnen aus den eingegeben Daten einen Hashwert und speichern diesen zusammen mit der Metainformation über das verwendete Kennworthashverfahren ("Codeversion"). Diese Informationen werden im Benutzerstammsatz abgelegt und bei einer Kennwortprüfung ausgewertet: aus dem zu prüfenden Klartextkennwort wird anhand der Codeversion-Angabe (aus dem Benutzerstammsatz) ein Hashwert berechnet und mit dem Referenz-Hashwert (aus dem Benutzerstammsatz) verglichen.
Die Menge der unterstützten Kennworthashverfahren ist releaseabhängig, wobei neuere Releases stets alle Verfahren der Vorgängerreleases unterstützen. Auf diese Weise wird sichergestellt, dass eine Kennwortanmeldung auch nach einem Releasewechsel möglich ist.
Nur die ab Release 7.00 verfügbaren Kennworthashverfahren unterstützen (auch) die Verarbeitung abwärtsinkompatibler Kennwörter. Ältere Kennworthashverfahren unterstützen ausschliesslich abwärtskompatible Kennwörter.
Ob bei einer Kennwortanmeldung abwärtsinkompatible Kennwörter unterstützt bzw. erwartet werden, hängt also primär von den im Benutzerstammsatz abgespeicherten Angaben (Codeversion) ab.
Solution
- bei Verwendung technischer Benutzer (in RFC-Destinationen):
Hierbei wird dringend empfohlen, auf Serverseite den Benutzertyp SYSTEM (ggf. auch SERVICE, sofern eine SAPGUI-Fähigkeit benötigt wird) zu verwenden, weil nur bei diesem Benutzertypen das Kennwort eine unbegrenzte Gültigkeitsdauer besitzt (siehe SAP-Hinweis 622464). Sofern das Kennwort in eine RFC-Destination eines älteren Systems (= RFC-Client) eingetragen werden soll, muss es auf der Serverseite als abwärtskompatibles Kennwort vergeben werden. Dies ist bei Benutzern vom Typ SYSTEM bzw. SERVICE stets möglich; auch dann, wenn die Kennwortregeln des Systems normalerweise die Verwendung von abwärtsinkompatiblen Kennwörtern erzwingen (z.B. durch login/min_password_lng > 8 oder login/min_password_lowercase > 0).
- bei Verwendung älterer Frontend-/Middleware-Komponenten und Kennwortanmeldung "normaler" Benutzer (Typ DIALOG):
In diesem Fall ist es nicht zweckmäßig, die Kennwörter der (zahlreichen) betroffenen Benutzer zu ändern (wie im obigen Fall bei den technischen Benutzern). Statt dessen müssen hier die veralteten Frontend-/Middleware-Komponenten ausgetauscht werden. Im SAP-Hinweis 792850 ist beschrieben, ab welchen Versionsständen bestimmte Frontend-/Middleware-Komponenten den Umgang mit abwärtsinkompatiblen Kennwörtern unterstützen. Zusätzlich kann es erforderlich sein, weitere (auf diesen Komponenten aufsetzende) Software-Komponenten (u.U. auch von Fremdanbietern) zu aktualisieren; dies ist insbesondere dann der Fall, wenn diese Komponenten eigene Kennworteingabe-Dialoge führen und dabei nicht in der Lage sind, abwärtsinkompatible Kennwörter (gemäß obiger Begriffsdefinition) zu unterstützen.
Übergangsweise können Sie serverseitig den Profilparameter login/password_downwards_compatibility zu Testzwecken auf den Wert 2 oder 3 setzen. In diesem Fall prüft der Server, ob der Client ein zum erwarteten abwärtsinkompatiblen Kennwort passendes abwärtskompatibles (d.h. ein nach 8 Zeichen abgeschnittenes und in Großbuchstaben konvertiertes) Kennwort gesendet hat. Ist dies der Fall, wird dies im Syslog protokolliert (zwecks Fehleranalyse) und die Anmeldung als erfolgreich gewertet (bei Wert 3). Der Profilparameter kann mittels Transaktion RZ11 dynamisch, d.h. ohne Neustart des Systems, geändert werden.