# Appletviewer Sicherheitszugriff



## Fuu (1. Jul 2010)

Hey, 

bisschen Codegeschnipsel, welches von einem Applet in einem Appletviewer des Clients aufgerufen wird. 


```
//Client ... Socketaufbau / Lesen-Schreiben

            socket = new Socket();
            socket.setReuseAddress(true);
            socket.connect(new InetSocketAddress(addr, port));

            OutputStream os = socket.getOutputStream();
            OutputStreamWriter osw = new OutputStreamWriter(os);
            BufferedWriter bw = new BufferedWriter(osw);

            InputStream is = socket.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            bw.write(request);
            bw.newLine();
            bw.flush();
            answer = br.readLine();
```

befinden sich Server und Client auf dem localhost, funktioniert alles einwandfrei, sobald ich aber versuche den server und client auf 2 verschiedenen Systemen laufen zu lassen, bekomme ich auf dem Client eine Fehlermeldung. Aufgrund der Fehlermeldung schließe ich darauf, dass der Client eine Verbindung aufbauen wollte, dann aber keine antwort vom Server aufgrund fehlender Sicherheitsbestimmungen bekommen hat und daher null zurückliefert, was zu einer Exception führt.

Hab versucht wie bei einem anderem Projekt von mir die .jar datei zu signieren, was aber im Appletviewer nicht zu dem gewünschten Ziel führt. Das andere Projekt, welches auch ClientServer Zugriffe über den Browser realisiert, funktioniert einwandfrei, also nehme ich auch an, dass es am Appletviewer + Signatur liegt? ^^

was ich noch versucht habe ... SocketPermissions setzen, wobei ich da einfach mal versucht habe allen sockets diese permission zu geben, aber anscheinend geht es dadurch auch nicht ... kann aber auch sein dass ich das falsch verwende

new SocketPermission(addr.getHostAddress(),"accept,connect,listen,resolve");

Fehlermeldung:

SCHWERWIEGEND: null
java.net.ConnectException: Connection refused: connect

...
at java.security.AccessController.doPrivileged(Native Method)
...



Bitte um Hilfe bzw. freue mich auf Feedback

lg Fuu


----------



## L-ectron-X (1. Jul 2010)

FAQ: http://www.java-forum.org/applets/16717-applets-webstart-anwendungen-signieren.html


----------



## Fuu (1. Jul 2010)

L-ectron-X hat gesagt.:


> FAQ: http://www.java-forum.org/applets/16717-applets-webstart-anwendungen-signieren.html



funktioniert bei mir nicht wenn ich das applet über den appletviewer aufrufe
(signaturfenster scheint NICHT auf)

mein anderes projekt, wo das applet im browser eingebunden ist, funktioniert mit der signatur (signaturfenster scheint auf)


----------



## L-ectron-X (1. Jul 2010)

Hast du dein Applet in einer Jar-Datei?
Wie sieht deine HTML-Datei aus?
Wie rufst du den AppletViewer auf?
Wie ist der genaue Wortlaut der Fehlermeldung?


----------



## Fuu (1. Jul 2010)

L-ectron-X hat gesagt.:


> Hast du dein Applet in einemr Jar-Datei? Wie sieht deine HTML-Datei aus? Wie rufst du den AppletViewer auf?
> Wie ist der genaue Wortlaut der Fehlermeldung?



danke für deine raschen Antworten^^

das applet ist Teil der jar-datei, ja
das applet wird nicht über html eingebunden, sondern direkt im quellcode gestartet


```
//Applet
pf = new PingFuu(jlGetServerip.getText(), Integer.parseInt(jlGetPort.getText()), playerName, xSize, ySize);

//anzeigen
            JFrame jf = new JFrame("Applet");
            jf.getContentPane().add(pf);
            jf.setSize(xSize,ySize);
            pf.init();
            pf.start();
```





Spoiler



- ???gibts sowas hier???
SCHWERWIEGEND: null
java.net.ConnectException: Connection refused: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
        at java.net.Socket.connect(Socket.java:525)
        at java.net.Socket.connect(Socket.java:475)
        at PingFuu.PingFuuClientCommunication.<init>(PingFuuClientCommunication.java:54)
        at PingFuu.PingFuu.<init>(PingFuu.java:62)
        at SeraphyTools.ServerInformationDialog.jButton1ActionPerformed(ServerInformationDialog.java:220)
        at SeraphyTools.ServerInformationDialog.access$200(ServerInformationDialog.java:27)
        at SeraphyTools.ServerInformationDialog$2.actionPerformed(ServerInformationDialog.java:151)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6263)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6028)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2475)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
        at java.awt.Dialog$1.run(Dialog.java:1045)
        at java.awt.Dialog$3.run(Dialog.java:1097)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.awt.Dialog.show(Dialog.java:1095)
        at SeraphyTools.ServerInformationDialog.setInit(ServerInformationDialog.java:74)
        at SeraphyTools.ServerTable.mouseClicked(ServerTable.java:35)
        at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
        at java.awt.Component.processMouseEvent(Component.java:6266)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6028)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4247)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2475)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Exception occurred during event dispatching:
java.lang.NullPointerException
        at java.awt.Container.addImpl(Container.java:1041)
        at java.awt.Container.add(Container.java:365)
        at SeraphyTools.ServerInformationDialog.jButton1ActionPerformed(ServerInformationDialog.java:227)
        at SeraphyTools.ServerInformationDialog.access$200(ServerInformationDialog.java:27)
        at SeraphyTools.ServerInformationDialog$2.actionPerformed(ServerInformationDialog.java:151)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6263)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6028)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2475)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
        at java.awt.Dialog$1.run(Dialog.java:1045)
        at java.awt.Dialog$3.run(Dialog.java:1097)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.awt.Dialog.show(Dialog.java:1095)
        at SeraphyTools.ServerInformationDialog.setInit(ServerInformationDialog.java:74)
        at SeraphyTools.ServerTable.mouseClicked(ServerTable.java:35)
        at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
        at java.awt.Component.processMouseEvent(Component.java:6266)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6028)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4247)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2475)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)


----------



## L-ectron-X (1. Jul 2010)

Fuu hat gesagt.:


> das applet wird nicht über html eingebunden, sondern direkt im quellcode gestartet


Applets leben nun aber mal in Webseiten, daher werden sie auch in diese mittels Applet-Tag eingebunden.
Was genau willst du eigentlich schreiben? Ein Applet, oder eine Applikation?


----------



## Fuu (1. Jul 2010)

L-ectron-X hat gesagt.:


> Applets leben nun aber mal in Webseiten, daher werden sie auch in diese mittels Applet-Tag eingebunden.
> Was genau willst du eigentlich schreiben? Ein Applet, oder eine Applikation?



Zurzeit existiert eine Liste, in der von mir geschriebenen Server von einem Netzwerkbereich automatisch gesucht und auch gefunden werden. Diese kann man dann auswählen, und "Verbinden" wählen.

1: Wenn es auf localhost läuft, startet sich dann das Applet (Zurzeit ein Testspiel), welches auch ohne Probleme läuft.

2: Wenn man es auf 2 verschiedenen Systemen startet, startet das Applet eben nicht ^^

Den einzigen Work-around, der mir da einfallen würde, wäre dass ich bei "Verbinden" einen Browser mit dem Applet aufrufe, was mir aber nicht wirklich gefallen würde 

Später soll dann entweder über "Verbinden" das Applet lokal gestartet werden oder auch über einen Browser angesurft werden können.


----------



## L-ectron-X (1. Jul 2010)

Vielleicht ist Webstart besser für dich geeignet als Applet. Deine Vorgehensweise bringt offenbar Probleme mit sich.
Mir stellt sich die Frage, wieso du das Applet instanziierst? Hybrid-Anwendungen werden anders geschrieben...

Wie dem auch sei. Mit den bisher gelieferten Informationen kann ich dir nicht weiter helfen.


----------



## Fuu (1. Jul 2010)

L-ectron-X hat gesagt.:


> Vielleicht ist Webstart besser für dich geeignet als Applet. Deine Vorgehensweise bringt offenbar Probleme mit sich.
> Mir stellt sich die Frage, wieso du das Applet instanziierst? Hybrid-Anwendungen werden anders geschrieben...
> 
> Wie dem auch sei. Mit den bisher gelieferten Informationen kann ich dir nicht weiter helfen.



bzgl. dem Aufbau ... danke für die Info, werd ich mir mal genauer anschauen ... wobei das aber wohl nicht die Ursache für das Problem sein wird *annehme*, da es ja lokal ohne probleme startet ^^

das einzige, was nicht klappt, ist die Socketverbindung ohne Browser, da dann kein "Unsichere Signatur etc" erscheint, wo ich den Fehler sehe


----------

