PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Java] - Prinzipielle frage zum Sicherheitskontext



MyKron
20.09.2004, 15:29
Hi Forum!

Ich habe gerade die Aufgabe bekommen, ein Applet zu schreiben, welches ein Programm auf einem Server steuern soll.

Wahrscheinlich soll ich mit dem Applet eine Datei an eine *.exe uebergeben, das Programm macht dann was mit der Datei und das Ergebnis wird vom Applet angezeigt. Also alles soll auf dem Server passieren, das Applet soll nur den Vorgang ausloesen und das Ergebnis zeigen.

Meine Frage:
Ist soetwas moeglich? Ich habe gehoert, dass Java-Applets in speziellen Sicherheitskontexten laufen und somit voellig abgekapselt sind? Wenn das der Fall ist, wie koennte ich das Problem dann angehen??

Danke euch!

PeterBond
20.09.2004, 15:39
Ja geht.

Für sowas gibt es die Möglichkeit einer Applet-Servlet Kommunikation (Servlets sind Java Programme, die serverseitig laufen und dort z.B. HTML erzeugen).

Wenn du nicht die Möglichkeit hast Servlets zu verwenden (ich kenne fast keine Web Hoster, die eine Servlet Engine anbieten), kannst du eine Kommunikation über ein Applet bauen, das mit einer PHP Seite kommuniziert.

Prinzipiell kann aber ein Applet, das nur mit Standard Rechten läuft nur mit dem Host kommunizieren, von dem es geladen wurde.
Dies beinhaltet sogar das Protokoll. D.h. wenn ein Applet über HTTPS geladen wurde, kann es auch nur mit dem gleichen Server über HTTPS kommunizieren.
Alles andere (wie auch der File Zugriff) wird von der Java Sandbox verhindert, in der das Applet läuft.

Wenn das Applet aber auch lokal auf die Platte des Benutzers(bzw. des Clients) zugreifen soll, musst du eh das Applet eh signieren. Dann kann es auch mit anderen Servern kommunizieren.

Tipp für die Suche mit google:

Suchbegriffe sind z.B. "Applet Servlet Communication", "Applet Policies"

Oder auch mal das Java Tutorial von Sun reinziehn. Sollte ein eigenes für Applets geben.

MyKron
20.09.2004, 17:01
Servlets sind kein Problem, das ganze laeuft auf einem Apache Tomcat Server.

Zugegriffen werden soll aber eigetlich von ueberall in der Welt direkt auf diesen Server, auf dem sowohl das Applet als auch die aufzurufende Software ligt. Aber wenn ich dich richtig verstanden haben, sollte das gehen?

PeterBond
20.09.2004, 18:13
Ja genau.

Einfach das Applet in die WebApp von Tomcat legen und über eine Seite, die der Tomcat zur Verfügung stellt laden. Dann gehts.

Hab ich selbst mal mit einem Login Applet gebaut. Ist keine große Sache, da Java das meiste für die Verbindung schon selbst erledigt.

Mir hatte damals diese Seite viel geholfen:
Link (http://www.j-nine.com/pubs/applet2servlet/Applet2Servlet.html)
Je nachdem was du machen willst musst dich entscheiden, ob du die Object Connection oder die mit Text(z.B. XML) benutzt.
Ich hatte in meinem Projekt an der Uni XML hin und her geschickt.

Ach ja, wenn du mit dieser Methode über HTTP die Daten schickst kommst du auch durch die meisten Firewalls.
Mit Corba z.B. hättest du ein Problem.
Andere Mölichkeit wäre auch noch, dass du einen WebService baust für den Server, der dann über SOAP mit dem Applet kommuniziert. Wäre dann reines XML und würde auch durch Firewalls gehn.
Allerdings weiß ich nicht, ob sich der Aufwand lohnt.

MyKron
20.09.2004, 20:18
Na das klingt ja schonmal sehr vielversprechen, das Projekt wird aber erst in ein paar Wochen in Angriff genommen. Im Moment hab ich genug mit nem anderen Projekt zu tun. Ich brauchen unbedingt mehr Zeit!! :-)