Wie kann ich ein signiertes Java-Applet erhalten, um privilegierte Operationen auszuführen, wenn es von nicht signiertem Javascript aufgerufen wird?

Signierte Java-Applets haben dieselbe Sicherheitsstufe wie eine normale Java-Anwendung, die auf dem Client ausgeführt wird. Für ein bestimmtes Projekt habe ichbrauchen diese Berechtigungen und ichbrauchen um privilegierte Operationen als Ergebnis eines JavaScript-Aufrufs auszuführen.

Das Problem ist nun, dass zumindest für Firefox 3 in Ubuntu (Zielbrowser und Plattform), wenn eine Applet-Methode über nicht signiertes JavaScript aufgerufen wird, die speziellen Berechtigungen verloren gehen. Da das Signieren von JavaScript keine Option ist, muss diese Einschränkung umgangen werden.

Eine Möglichkeit, dies zu erreichen, besteht darin, einen Thread zu erstellen, wenn das Applet gestartet wird, und Methoden für diesen Thread aufzurufen, wenn der Haupt-Thread die JavaScript-Aufrufe empfängt. Ich habe einen funktionierenden Prototyp dieser Idee implementiert, fand ihn jedoch etwas ungeschickt, da er zu stark reflektiert und nicht so leicht wiederverwendbar ist, wie ich es mir gewünscht hätte.

Gibt es eine übliche Methode, um das zu tun, was ich versuche? Und wenn meine Idee der richtige Weg ist, wie würden Sie sie dann wiederverwendbar umsetzen? Was ich versuche zu erreichen, ist ein Framework, das es ermöglicht, dass dieses "running-methods-in-a-privileg-thread" -Ding für eine Vielzahl von Objekten verwendet wird. Die ideale, utopische Lösung wäre etwa:

<code>// when the applet starts-up
PrivilegedExecuter priv = new PrivilegedExecuter(myObject); //or MyClass.class
// ...
// inside a JavaScript-called method (myObject has myMethod)
priv.myMethod(); // myMethod is run synchronously in a privileged thread
</code>

Antworten auf die Frage(2)

Ihre Antwort auf die Frage