AccessControlException bei Signiertem Applet

Michimitsu

Bekanntes Mitglied
Hallo liebes Java-Team,

es geht um folgendes, ich nutzte ein Applet welches ich über den JBoss in einer Internet Seite laufen lassen möchte. Ich weiß das man ein Applet signieren muss damit das funktioniert, was ich auch getan habe. leider bekomme ich trotzdem noch eine AccessControlException, wobei das Applet doch signiert ist. Das hier sind die ausgegeben fehler :

Code:
Exception occurred during event dispatching:
java.security.AccessControlException: access denied (java.net.SocketPermission WS-WAWROWSKI resolve)
	at java.security.AccessControlContext.checkPermission(Unknown Source)
	at java.security.AccessController.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkConnect(Unknown Source)
	at sun.plugin2.applet.Applet2SecurityManager.checkConnect(Unknown Source)
	at java.net.InetAddress.getAllByName0(Unknown Source)
	at java.net.InetAddress.getAllByName(Unknown Source)
	at java.net.InetAddress.getAllByName(Unknown Source)
	at java.net.InetAddress.getByName(Unknown Source)
	at java.net.InetSocketAddress.<init>(Unknown Source)
	at java.net.Socket.<init>(Unknown Source)
	at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(Unknown Source)
	at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(Unknown Source)
	at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)
	at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
	at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
	at sun.rmi.server.UnicastRef.invoke(Unknown Source)
	at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)
	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:528)
	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:507)
	at javax.naming.InitialContext.lookup(Unknown Source)

Weiß vielleicht jemand von euch woran das liegen kann ??
 
Ja natürlich nur welche stelle würdest du denn gerne sehen ?? dort wo der fehler auftritt oder wie ?? weil das applet signieren hab ich in meine POM.xml gelegt
 
Code:
<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-jarsigner-plugin</artifactId>
	<version>1.2</version>
	<executions>
		<execution>
			<id>sign-applet</id>
			<goals>
				<goal>sign</goal>
			</goals>
		</execution>
		<execution>
			<id>verify-applet</id>
			<goals>
				<goal>verify</goal>
			</goals>
		</execution>
	</executions>
	<configuration>
		<keystore>${basedir}/src/main/resources/keystore/ata.keystore</keystore>
		<alias>ata-jar-signer</alias>
		<storepass>****</storepass>
		<verbose>true</verbose>
		<checkCerts>true</checkCerts>
		<errorWhenNotSigned>true</errorWhenNotSigned>
		<keypass>****</keypass>
	</configuration>
</plugin>

Der Fehler an sich tritt in meinem JackRabbitConnector auf, in Zeile 14 wäre das :

Java:
private Repository findRepository() {

		// die Argumente ggf. durch Standardwerte ersetzen
		String validHost = StringUtils.defaultIfEmpty(repoHost, "localhost");
		String validPort = StringUtils.defaultIfEmpty(repoPort, "1099");

		// falls noch kein Repository bekannt, eine neue Verbindung zum
		// Repo aufbauen
		if (rabbitRepository == null) {

			try {
				InitialContext ctx = new InitialContext(getDefaultRepositoryParams());
				ClientAdapterFactory adapter = new ClientAdapterFactory();
				RemoteRepository rr = (RemoteRepository) ctx.lookup("jnp://" + validHost + ":" + validPort + "/jcrServer");
				rabbitRepository = adapter.getRepository(rr);
			} catch (NamingException ex) {
				ex.printStackTrace();
			}
		}

		// die Referenz auf das Repo zurück geben
		return rabbitRepository;
	}
 
Zuletzt bearbeitet:
HTML:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
		<title>Dokument-Importer</title>
	</head>
	
	
	<body>
		<table cellpadding="0" cellspacing="0" width="100%" style="height:100%">
			<tr>
				<td style="background-color: red">
					<applet codebase="../applets"  code="de.atacama.docimport.util.DocImportApplet" name="DocImport-Applet" archive="docbind.jar,log4j-1.2.14.jar,commons-lang-2.4.jar,commons-httpclient-3.1.jar,commons-logging-1.0.4.jar,commons-codec-1.2.jar,morena.jar,morena_license.zip,morena_windows.jar,jarjackrabbit-jca-2.2.0.rar,jackrabbit-jcr-rmi-2.1.2.jar,jcr-2.0.jar,jnpserver.jar,jbossall-client.jar" width="100%" height="100%" alt="DocImport-Applet" >
						<!-- 
						Hier koennen Parameter an das Applet uebergeben werden
						 -->
						<!--<param name="bla1" value="blawert1"/>-->
						     <param name="docOpentyp" value="kfo.invoice.sauber"/>
							 <param name="docID" value="234"/>
					</applet>
				</td>
			</tr>
		</table>			
	</body>
</html>

Das ist halt die html seite wo es eingebunden wurde.
 
Zuletzt bearbeitet von einem Moderator:
OK, das sieht doch schon mal gut aus!
Was man hier jetzt nicht erkennen kann ist, ob du die Jar-Datei, in welchem dein Applet steckt, auch im archive-Attribut des applet-Tags aufgeführt hast.

Wenn ja, musst du als nächstes heraus bekommen, ob das Applet wirklich signiert wurde.
Dazu öffnest du mal deine Jar-Datei mit einem Packprogramm, bspw. WinRar, Winzip oder 7Zip.
Navigiere innerhalb der Jar-Datei in das Verzeichnis META-INF und sieh nach, ob es Dateien mit der Endung .DSA und .SF gibt.

Wenn ja, öffnest du die Manifest-Datei per Doppelklick mit einem Texteditor, um mal einen Blick dort hinein zu werfen.
Da müssten nun alle Klassen, die sich in der Jar-Datei befinden aufgelistet werden mit einem SHA1-Schlüssel.
Das sieht dann so in etwa aus:
Code:
Name: TreeListEntry.class
SHA1-Digest: MyVB65tsYbmKQY3Yi7XfpMSwe0w=

Wenn das alles so ist, wie beschrieben, wurde das Applet erfolgreich signiert.
Wenn nicht, sieh mal in die FAQ, da gibts eine kleine Batchdatei, die dein Applet signieren kann.

Wenn es nun trotz signiertem Applet eine AccessControllException gibt, liegt es daran, dass du alle beteiligten Jar-Dateien, die du im archive-Attribut aufführst, u.U. auch noch signieren musst.
 
Also die SF und DSA datein sind vorhanden und in der Manifest sind die Klassen so wie du beschrieben hast vorzufinden, einige kommen mehrmals vor, denke ich ist aber nicht so schlimm oder ??

Ich habe erst kürzlich 2 jar datein hinzugefügt , die jnpserver.jar und die jbossall-client.jar

Und du meinst ich muss jetzt alle extern angebunden jar datein signieren ???

Vielen Dank für die Hilfe
 
Ich bedanke mich dafür 🙂

Obwohl ich durch deine datei noch nicht ganz durchsteige ... Naja, werde mich noch damit befassen und mal gucken vielleicht hab ichs dann morgen drin. 🙂
 

Zurück
Oben