Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe zwei Applets, eines signiert, das andere nicht. Grundsätzlich haben beide Applets die gleichen Funktionen. Das signierte Applet jedoch hat ein paar Bonus-Features die eben nur durch die Signatur funktionieren.
Ich würde dem Benutzer jetzt gerne zunächst das signierte Applet anbieten. Dann geht ein Fenster beim Benutzer auf wollen Sie der Signatur vertrauen?
Ich würde jetzt gerne prüfen ob der Benutzer ja bzw. nein ausgewählt hat. Wenn nein ausgewählt wurde will ich auf die andere Seite mit dem unsignierten Applet und ein paar Infos warum das andere besser wäre umleiten.
Aber wie führe ich diese Prüfung "Signatur akzeptiert?" durch?
Wenn das Zertifikat nicht akteptiert wurde, wird eine AccessControlException geworfen. In der Exception-Behandlung kannst du dann eine andere Webseite laden.
Nein, du packst die Codestücke, die potenziell unsicheren Code ausführen - also Dinge, die für ein Applet normalerweise verboten sind, in einen try-catch-Block und fängst die AccessControlException.
Codebeispiel:
Code:
import java.applet.*;
import java.awt.*;
/**
* Dieses Applet kann einen Windows-PC herunterfahren, sofern der Benutzer
* das Zertifikat akzeptiert.
* Dazu muss das Applet signiert sein.
*/
public class SystemShutdownApplet extends Applet {
private String message;
/**
* Methode aus dem Applet-Lebenszyklus
* Wird vom Browser direkt nach dem Laden des Applets ausgeführt und
* initialisiert das Applet.
* Der Rechner würde also direkt nach Laden des Applets herunterfahren.
*/
public void init() {
message = "Rechner wird heruntergefahren!";
shutdown();
}
//Methode für die Ausgabe einer Meldung.
public void paint(Graphics g) {
g.drawString(message, 0, 10);
}
//Methode, die den Rechner herunterfährt.
private void shutdown() {
try {
Runtime.getRuntime().exec("cmd.exe /c shutdown -s -t 0");
}
catch(java.io.IOException ie) {
message = "Befehl unbekannt oder nicht ausführbar!";
repaint();
}
catch(java.security.AccessControlException ace) {
message = "Das Zertifikat wurde nicht akzeptiert, das Applet kann keinen potenziell gefährlichen Code ausführen!";
repaint();
}
}
}