# Policy mit Signiertem Applet verteilen



## Sued_Faust (28. Jun 2010)

Moin,

habe vor ein Dokument welches auf dem lokalen Filesystem liegt, per html-Button und einem dahinter verborgenem Applet zu öffnen. Es funktioniert ja auch soweit, wenn ich die Permissions in die java.policy der JDK schreibe, wobei er dort auch irgendwie Probleme mit meiner Signatur zu haben scheint.
Meine Frage dazu wie genau muss ich die Policy der .Jar-Datei zuordnen? Zu meiner zweiten Frage, wie kann ich denn dann die Policy auf dem rechner ablegen, auf dem das Applet ausgeführt und auch das Zertifikat angenommen wurde?

Gruß


----------



## L-ectron-X (28. Jun 2010)

Wenn das Applet signiert wurde, kannst du quasi auch Dateien speichern. Aber wozu dann noch eine Policy kopieren, wenn du mit einem signierten Applet schon den Vollzugriff hast?


----------



## Sued_Faust (28. Jun 2010)

Die Runtime hatte mir trotz angenommener Zertifizierung immer eine Permission exception geworfen!

Heißt das, dass ich eigentlich nur die Zertifizierung machen muss und der Zugriff müsste laufen?

Noch eine Frage hab gerade gelesen das es auch über den java Web starter funktionieren würde.
Wäre das denn eine bessere Variante?

Gruß


----------



## L-ectron-X (28. Jun 2010)

Es ist die moderne Variante, Java-Anwendungen über Netzwerke zu laden und auszuführen.
Natürlich muss die Jar-Datei dort auch signiert und eine entsprechend vorbereitete JNLP-Datei angelegt sein.

Im Prinzip genügt die Signierung, um erweiterte Rechte vom Benutzer abzufragen.


----------



## Sued_Faust (28. Jun 2010)

Ok danke dir soweit,

also wenn ich es richtig verstehe, muss ich nur mein Applet Zertifizieren und insofern der benutzer diese an nimmt sollte ich auch alle Rechte haben?!

Gruß


----------



## Sued_Faust (28. Jun 2010)

Hier einfach mal mein Code,


```
package de.fme.fileopener;

import java.applet.Applet;
import java.awt.Desktop;
import java.io.File;
import java.io.IOException;

public class FileOpener extends Applet{
	private static final long serialVersionUID = 5686999787717563357L;	

	public void run() {		
		try {
			Desktop.getDesktop().open( new File("C:/TestData/Test.doc") );
		} catch (IOException e) {
			e.printStackTrace();
		} 
	}
}
```

html:

```
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>FileOpener</title>   
  </head>
  <body>
    <applet name="FileOpener" archive="FileOpener.jar" code="de.fme.fileopener.FileOpener" width=50 height=50 mayscript="true">
    </applet>
    <form>
      <input name="FileOpener" type="button" value="FileOpener" onclick="document.applets[0].run();">
    </form>
  <a href="filekey.crt">Installation des erforderlichen Zertifikats</a>
  </body>
</html>
```


----------



## L-ectron-X (28. Jun 2010)

Sued_Faust hat gesagt.:


> also wenn ich es richtig verstehe, muss ich nur mein Applet Zertifizieren und insofern der benutzer diese an nimmt sollte ich auch alle Rechte haben?!


Nur signieren, ganz genau.


----------



## Sued_Faust (28. Jun 2010)

Ah ok ich denke ich verstehe weshalb es bei mir nicht funktioniert.
Er schmeist mir immer trotz Zertifizierung eine AWTPermission!
Ich denke es liegt daran, das ich das Applet über ein HTML-Button aufruhfe.
Wie ist es möglich das ich meinen HTML-Button behalten kann und mein Applet aber trotzdem aufgerufen wird?

Gruß


----------



## Guest2 (28. Jun 2010)

Moin,

wie L-ectron-X schon schrieb, ist die Signierung einer Java Anwendung eine Alles-Oder-Nichts Sache. Ist die Anwendung signiert und vertraut der Nutzer der Signatur, hat die Anwendung / das Applet Vollzugriff auf das System.  Ein Installation des Zertifikates, wie oben in Deinem HTML Auszug angedeutet, per Link, ist dabei ebenfalls nicht notwendig (Java kümmert sich da schon drum).

Wenn trotzdem eine Zugriffsverletzung auftritt, ist das Applet vermutlich nicht richtig signiert.

Anzumerken wäre, dass Anwendungen die sich per Signatur Vollzugriff holen, obwohl dies technisch nicht notwendig wäre, immer einen etwas fahlen Beigeschmack haben. Und auch wenn es scheinbar kaum einer weis, um aus einem Applet heraus eine Datei zu öffnen, ist keine Signatur notwendig! Man kann sich beim Nutzer auch die Erlaubnis für genau diesen einen Dateizugriff holen.

Als Tutorial siehe z.B.: Accessing the Client Using JNLP API (The Java Tutorials > Deployment > Doing More With Rich Internet Applications)(Da ist ein Applet das genau das kann)

Gruß,
Fancy


----------



## Sued_Faust (28. Jun 2010)

Sowiet danke!

Also es liegt 100% an dem HTML-Button, denn ich habe nun ein Butten über das Applet direkt generieren lassen und dann die datei über den "Applet Button" Aufgerufen. So hat es mit Signatur Wunderbar funktioniert!
Woran kann das liegen?

Sonst werde ich mich auch noch mal um die Alternative Variante mittels java Web Start und JNLP kümmern.

Also nochmals danke!


----------

