In unterschiedlichen Applikation Zugriff auf eine gemeinsame Anwendung?

internet

Top Contributor
Hallo zusammen,

ich stehe gerade vor einem Problem und weiß nicht so genau, wie ich das löse...

Ich habe mehrere Applikationen. Als Beispiel:
  • ERP System
  • CRM System

Beide Systeme sollen wiederum weitere Systeme nutzen:
  • Forum
  • Ticketsystem

Forum und Ticketsystem sind mandantenfähig. Sodass ich sagen kann:
- Das CRM System kann Tickets erstellen, die dann eindeutig zum CRM System zugeordnet werden.

Nun kommt aber mein Hauptproblem:
Ich würde gerne innerhalb meinem CRM System Ticket erstellen können.
Hier speichere ich im CRM System einen API Token bspw. vom Ticketsystem.
Allerdings würde ich gerne die JSF / HTML Seiten vom Ticketsystem direkt in mein CRM System integrieren.
Also bestenfalls binde ich bspw. per Iframe innerhalb meiner CRM Anwendung das Ticketsystem ein.
  • Wie weiß nun aber mein Ticketsystem, dass es aktuell der CRM User ist?
  • Wenn ich im gleichen Browser das gleiche Prozedere innerhalb dem ERP System machen will, funktioniert das oder laufe ich in die Gefahr, dass die Session innerhalb dem Browser Fenster gespeichert wird und die Tickets für das ERP System dann aber für das CRM System gespeichert werden, da ich dort bereits eingeloggt bin?

Ich sehe aktuell nur die Möglichkeit die HTML Seiten im CRM System "nachzubauen" und die Aktionen dann über eine REST Api auf das Ticketsystem durchzuführen (Ticket erstellen, Alle Tickets laden..)
 
Es gab mal Portlets, habe ich aber nie verwendet und keine Ahnung, ob das noch "aktiv" ist, was man dafür braucht etc.
 
Du könntest Single Sign-on (SSO) verwenden - bedeutet, dass ein Nutzer mit, bei einem Identity Provider (IDP) zentral abgelegten Logindaten, an einem Arbeitsplatz auf alle Rechner und Dienste, für die er berechtigt ist, vom selben Arbeitsplatz aus zugreifen kann, ohne sich an den einzelnen Diensten zusätzlich erneut anmelden zu müssen. Somit gäbe es überhaupt kein Problem mit dem selben User in allen Systemen gleichzeitig zu arbeiten. Eine andere Möglichkeit wäre es, den Login am Proxy durchzuführen, alle weiteren Dienste verwenden dann ein gemeinsames User-Token, welches der Proxy in den HTML-Header einsetzt, um den Nutzer zu identifizieren. Das wird z.B. bei Micro-Service-Architekturen oft gemacht. Im Response werden die Token dann wieder vom Proxy aus dem Header entfernt.
 
SSO habe ich auch vor zu verwenden. Bspw. nehme ich Keycloak und melde mich dann an im CRM System an. Nun ist der User automatisch im Ticketsystem angemeldet. Soweit ist das kein Problem.

Aber mein Ticketsystem hat eben:
  • verschiedene Mandanten.
  • verschiedene User (eben Login über SSO)

Dass sich der User beim ERP und CRM System mit dem gleichen User gegen das Ticketsystem (eben SSO) anmeldet, ist ja ok.
Nun soll aber innerhalb dem ERP System Tickets für Mandant1 erstellt werden und im CRM System Ticket für Mandant2 erstellt werden.

Das Ganze per REST API zu machen ist ja kein Problem.
Mein Problem ist eher, dass ich eben die HTML Seiten vom Ticketsystem nutzen möchte innerhalb dem CRM System (keine neue Seite aufrufen) und eben innerhalb dem ERP System auch.
 
Das ist soweit OK, jetzt kopierst du einfach den Login-Header im Java-Script und rufst per Ajax eine Seite im Ticketsystem ab. Die Antwort bettest du dann einfach in die aktuelle Seite ein. Ich weiß ja nicht, welches Ticketsystem du verwendest. Ich würde bei uns einfach eine passende Seite im Ticketsystem anlegen, für den Fall, das man irgendetwas mehr oder weniger als in der Standardseite anzeigen oder vorausfüllen will.
 
Wenn das Ticketsystem eine eigene Web-Anwendung ist, dann sollte es ja kein Problem sein. Du erstellst dort die passende Seite für deinen Anwendungsfall. Dann lädst du diese Seite per JavaScript in der anderen Anwendung. Allerdings musst du mit Sicherheitsbeschränkungen rechnen, falls die Anwendungen unter Unterschiedlichen Domains erreichbar sind. Es muss natürlich auch sämtliches CSS vorhanden sein.
Möglicherweise reicht auch schon ein IFrame https://www.w3schools.com/tags/tag_iframe.ASP
 
Wenn das Ticketsystem eine eigene Web-Anwendung ist, dann sollte es ja kein Problem sein. Du erstellst dort die passende Seite für deinen Anwendungsfall. Dann lädst du diese Seite per JavaScript in der anderen Anwendung. Allerdings musst du mit Sicherheitsbeschränkungen rechnen, falls die Anwendungen unter Unterschiedlichen Domains erreichbar sind. Es muss natürlich auch sämtliches CSS vorhanden sein.
Möglicherweise reicht auch schon ein IFrame https://www.w3schools.com/tags/tag_iframe.ASP
Ja, per Iframe Einbindung war auch meine Idee.
Aber wie binde ich das genau ein? Ich muss ja irgendwie a) den User übergeben, damit er sich einloggen kann b) den Mandant

Bspw. ich habe in der Ticketsystem App eine URL, die mir alle Tickets anzeigen soll vom eingeloggten User im CRM System:
- mydomain.com/ticketsystem/showTickets.jsf
-> Die Seite ist so gestaltet, dass es keine Menü etc. und das gleiche Design wie mein CRM System hat,

Nun habe ich in meiner CRM App eben eine Seite: "showTickets":
Java:
<iframe src="mydomain.com/ticketsystem/showTickets.jsf"></iframe>

Wie übergebe ich nun aber die Informationen:
  • User, sodass man im Ticketsystem eingeloggt ist
  • Mandant, sodass das Ticketsystem weiß für welchen Mandant es die Ticket anzeigen soll?

Wenn mich nicht alles ist, dann ist der Iframe auch zustandslos?
 
Wie übergebe ich nun aber die Informationen:
  • User, sodass man im Ticketsystem eingeloggt ist
  • Mandant, sodass das Ticketsystem weiß für welchen Mandant es die Ticket anzeigen soll?
Den User musst du nicht übergeben, dass wäre eine Sicherheitslücke. Durch den Login(SSO) kennst du den User der zugreifen will.
Der Mandant kann einfach als URL-Parameter, wie bei GET-Requests üblich, übergeben werden. Natürlich müssen Parameter immer validiert werden - also User: XYZ hat Zugriff auf Mandant im Parameter - ansonsten stimmt da was nicht.
 

Zurück
Oben