
BTP - Basic Authentication & Principal Propagation
In diesem Artikel schauen wir uns die Anmeldemöglichkeiten vom ABAP Environment Richtung On-Premise an und wie sie Einfluss auf deine Entwicklung haben.
Inhaltsverzeichnis
In diesem Artikel schauen wir uns verschiedene Methoden an, um uns an einem On-Premise System anzumelden und auf Daten zuzugreifen. Dabei stehen uns verschiedene Szenarien für unterschiedliche Dinge zur Verfügung. Dazu mehr in den folgenden Kapiteln.
Einleitung
Solange du auf dem ABAP Environment arbeitest, verhält sich das System wie ein Cloud oder On-Premise System und alle Funktionen können normal verwendet werden. Möchtest du allerdings einen Service aufrufen, um On-Premise Daten zu lesen, dann wirst du vielleicht ein paar Schwierigkeiten haben oder an Stellen kommen, wo es nicht mehr weiter geht. Dann könnte vielleicht die Art des Users das entscheidende Kriterium sein.
Arten
Schauen wir uns dazu einmal die gängigsten Arten von Anmeldungen an und welche Vor- und Nachteile diese mit sich bringen.
Basic Authentication
Bei der Basic Authentication oder kurz BA, verwenden wir einen technischen User mit eigenen Berechtigungen, um uns am Backend System anzumelden. Damit muss nicht jeder User, der die Verbindung zu diesem System nutzen möchte, einen eigenen User auf dem System haben. In diesem Fall hinterlegen wir die Logindaten zum Beispiel in einer Verbindung im Subaccount in der BTP und jeder mit Zugriff auf die Verbindung kann auf das konfigurierte System zugreifen.
Principal Propagation
Bei der Principal Propagation oder kurz PP, melden wir uns über einen Identity Provider am System an, dieser stellt uns ein Ticket aus, womit wir am System angemeldet werden, solange das Ticket gültig ist. Bauen wir die Verbindung Richtung On-Premise auf, dann wird dieses Ticket an das System weitergeleitet. Besteht dann zwischen Subaccount -> Cloud Connector -> On-Premise eine Vertrauensbeziehung (Konfiguration und Zertifikat), dann werden wir am Ende im On-Premise System angemeldet und arbeiten dann mit unserem persönlichen User weiter. Damit weiß das System wer wir sind und es gelten unsere individuellen Berechtigungen.
Weitere Verfahren
Grundsätzlich gibt es weitere Anmeldeverfahren, wie OAuth, SAML und Zertifikate. In diesem Artikel gehen wir auf die beiden gängien Verfahren ein, wenn es um die Anbindung mit dem ABAP Environment geht. Möchtest du SAP Build Process Automation nutzen, wirst du meist auf den Destination Service mit OAuth zurückgreifen.
Verwendung
Schauen wir uns in diesem Kapitel einmal an, was wir mit den beiden Arten nun genau machen können und wir du sie effektiv für dich nutzen kannst.
Jobs
Möchten wir in einem Application Job auf On-Premise Daten zugreifen, dann benötigen wir hier eine Verbindung vom Typ BA. Grundsätzlich wird der Job unter dem User ausgeführt, der ihn auch eingeplant hat. Da der User sich aber vorher nicht angemeldet hat, besitzt er damit kein valides "Ticket", um sich am On-Premise System anzumelden.
ABAP Development Tools
Möchtest du eine Schnittstelle in einer ausführbaren Klasse testen, dann kannst du das aktuell nur über eine BA Verbindung machen. Ähnlich wie beim Application Job, fehlt hier in den ABAP Development Tools ein valides Ticket zur Anmeldung am On-Premise System.
HTTP Service
Den HTTP Service rufen wir von außen über den Browser auf. Wenn wir den Service das erste Mal aufrufen, verlangt das System von uns eine Anmeldung. In diesem Fall wird nach erfolgreicher Anmeldung ein gültiges Ticket ausgestellt, damit haben wir die Möglichkeit eine Verbindung vom Typ PP zu verwenden und uns mit unserem eigenen User am Backend System anzumelden. Grundsätzlich kann auch eine technische Verbindung über BA verwendet werden.
Fiori App
Arbeiten wir in einer Fiori App und haben zum Beispiel eine Custom Entity über die wir Daten für unsere Wertehilfe nachlesen, dann können wir auch hier beide Arten von Verbindungen nutzen. Der Vorteil beim angemeldeten User liegt darin, dass er nur die Werte angeboten bekommt, für die er auch berechtigt ist. Auf der anderen Seite, wenn du sicherstellen willst, dass immer alle Werte angezeigt werden, solltest du einen technischen User verwenden und ihm die nötigen Berechtigungen geben.
Zusammenfassung
Was können wir nun aus den verschiedenen Verbindungen für uns mitnehmen? Zuerst einmal funktioniert in allen Fällen eine technische Verbindung über eine Basic Authentication, da bereits User und Passwort in der Verbindung hinterlegt sind und eine Anmeldung auf dem Zielsystem erfolgen kann.
Bei der Principal Propagation musst du dich zuvor angemeldet haben, bevor du auf ein Backend System zugreifen kannst. Dafür werden die Berechtigungen individuell gezogen, was sicherstellt, dass der angemeldete Benutzer nicht mehr sieht, als er eigentlich sollte. Dafür sind Verbindungen mit PP nicht überall verwendbar, wie zum Beispiel in einem Job oder direkt aus den ADTs zum Testen von Zugriffen.
Fazit
Solltest du im nächsten Test über die ABAP Development Tools mal Probleme mit der Anmeldung am On-Premise System haben, dann verwendest du wahrscheinlich eine Verbindung von Typ Principal Propagation. In diesem Fall auf Basic Authentication wechseln und der Zugriff sollte funktionieren.