Search the FirstSpirit Knowledge Base
Hallo,
ich habe zZ das Problem, dass wenn ich eine "Executable JAR" baue, dass ich beim Verbindungsaufbau gegen den FirstSpirit Server eine "Not Trusted" Exception bekomme
java.lang.SecurityException: Not trusted
at de.espirit.firstspirit.server.io.handler.AuthResponse.handle(AuthResponse.java:68)
at de.espirit.firstspirit.server.io.ClientRequestHandler.service(ClientRequestHandler.java:408)
at de.espirit.firstspirit.server.io.ClientRequestHandler.read(ClientRequestHandler.java:296)
at de.espirit.firstspirit.client.io.AbstractMessageCaller.authorize(AbstractMessageCaller.java:125)
at de.espirit.firstspirit.client.io.AbstractMessageCaller.authorize(AbstractMessageCaller.java:103)
at de.espirit.firstspirit.client.io.HttpServerCaller.doConnect(HttpServerCaller.java:47)
at de.espirit.firstspirit.client.io.ServerCaller.connect(ServerCaller.java:156)
at de.espirit.firstspirit.client.io.ConnectionImpl.connect(ConnectionImpl.java:184)
at de.switt.ProjectComparer.FsUtil.createConnection(FsUtil.java:45)
at de.switt.ProjectComparer.Controller.createConnections(Controller.java:43)
at de.switt.ProjectComparer.Controller.startComparison(Controller.java:71)
Aus der IDE heraus funktioniert es tadellos. Das Problem habe ich mit verschieden 5.2 Versionen getestet. Ich habe auch das Sever Zertifikat in den lokalen Keystore gelegt, ohne erfolg. Für die Connection habe ich die Server.jar, Client.jar und Access.jar ausprobiert, alle mit dem gleichen Ergebnis. Auch ein Test gegen einen lokalen FirstSpirit Server (ohne Zertifikat) brachte keine Besserung.
Die Verbindung wird über folgenden Schnipsel aufgebaut:
Connection con = null;
try {con = ConnectionManager.getConnection(host, port, ConnectionManager.HTTP_MODE, login, password);
con.connect();
} catch (Exception e) {Logging.logError("Connection attempt failed.", e, getClass());
}
Danke schonaml im voraus
Hallo Sebastian,
dieselbe Fehlermeldung ist mir aus folgender Situation bekannt, wenn man versucht zur externen Nutzung der FS-API aus anderen Programmen heraus das fs-access.jar im -Xbootclasspath unterzubringen, um bequem den Parameter -jar statt -cp mit Klassenname nutzen zu können:
$ java -Xbootclasspath/a:fs-access.jar -jar myapp.jar
connection failed. Authorisation
error - java.lang.SecurityException: Not trusted
Der Grund ist hier das Entfernen der Codesign-Signatur durch den Bootclassloader. Die FirstSpirit-Klassen prüfen aber die Codesign-Signatur und verweigern dann den Betrieb mit der obigen Exception. Jede Modifikation des fs-access.jar verursacht ebenfalls diese Exception.
Das fs-access.jar darf also nur im normalen System-Classpath verwendet werden, somit:
$ java -cp fs-access.jar:myapp.jar com.myapp.Main
Hallo Sebastian,
dieselbe Fehlermeldung ist mir aus folgender Situation bekannt, wenn man versucht zur externen Nutzung der FS-API aus anderen Programmen heraus das fs-access.jar im -Xbootclasspath unterzubringen, um bequem den Parameter -jar statt -cp mit Klassenname nutzen zu können:
$ java -Xbootclasspath/a:fs-access.jar -jar myapp.jar
connection failed. Authorisation
error - java.lang.SecurityException: Not trusted
Der Grund ist hier das Entfernen der Codesign-Signatur durch den Bootclassloader. Die FirstSpirit-Klassen prüfen aber die Codesign-Signatur und verweigern dann den Betrieb mit der obigen Exception. Jede Modifikation des fs-access.jar verursacht ebenfalls diese Exception.
Das fs-access.jar darf also nur im normalen System-Classpath verwendet werden, somit:
$ java -cp fs-access.jar:myapp.jar com.myapp.Main
Danke Holger!
Geht einwandfrei.