charly20 Geschrieben 9. September 2002 Geschrieben 9. September 2002 Eine ganz kurze Frage nur - ich hoffe es läßt sich auch mit einer ebensokurzen antwort lösen ) Wie kann ich den Security Manager ausschalten oder in ihm erlauben das mein Applet auf eine JAR Datei zugreift und diese ließt? Fehler im Moment: java.security.AccessControlException: access denied (java.io.FilePermission c:\t estapplet.txt write) at java.security.AccessControlContext.checkPermission(AccessControlConte xt.java:267) at java.security.AccessController.checkPermission(AccessController.java: 394) at java.lang.SecurityManager.checkPermission(SecurityManager.java:540) USW.... Zitieren
wir4undbilbo Geschrieben 9. September 2002 Geschrieben 9. September 2002 Indem du ein Policy-File schreibst: grant { permission java.util.PropertyPermission "user.home", "read"; permission java.io.FilePermission "${user.home}/text.txt", "read,write"; }; grant { permission java.awt.AWTPermission "accessEventQueue"; permission java.awt.AWTPermission "showWindowWithoutWarningBanner"; permission java.lang.RuntimePermission "accessClassInPackage.sun.jdbc.odbc"; permission java.util.PropertyPermission "file.encoding", "read"; permission java.net.SocketPermission "developer", "resolve"; permission java.net.SocketPermission "129.144.176.176:1521", "connect,resolve"; }; Dieses File speicherst du dann unter .java.policy direkt in deinem Home-Verzeichnis ab. Dann kannst du auf deine Daten zugreifen... Zitieren
charly20 Geschrieben 9. September 2002 Autor Geschrieben 9. September 2002 Gut das hab ich gemacht - er läßt mich jetzt auch mein Zertifikat bestätigen, doch jetzt sagt er das Applet sei nicht initialisiert... WIESO ??? :confused: public class SimTest_Hallo_e extends Applet { public void init() { System.out.println ("----------------------------------------------"); System.out.println ("----------------------------------------------"); System.out.println ("Test of OCF with a SIM card"); System.out.println (""); try { // Initialize the framework SmartCard.start (); CardRequest cr = new CardRequest (); cr.setWaitBehavior (CardRequest.ANYCARD); SmartCard sm = SmartCard.waitForCard (cr); // print the ATR (from demos.samples.GetCardID) if (sm != null) { CardID cardID = sm.getCardID (); printCardID (cardID); } else { System.out.println ("did not get a SmartCard object!"); } // Get a PassThru card service and perform a 'STATUS' command PassThruCardService cs = (PassThruCardService) sm.getCardService(PassThruCardService.class, true); CommandAPDU cmd = new CommandAPDU(22); cmd.setLength(0); cmd.append((byte) 0x80); cmd.append((byte) 0xF6); cmd.append((byte) 0x00); cmd.append((byte) 0x00); cmd.append((byte) 0x08); System.out.println("Command 'STATUS':"); System.out.println(cmd.toString()); System.out.println("Sending a 'STATUS' command to the card..."); ResponseAPDU resp = cs.sendCommandAPDU(cmd); System.out.println("Response to 'STATUS' command:"); System.out.println(resp.toString()); // Shutdown the framework SmartCard.shutdown (); } catch(Exception e){ System.out.println ("Alles ******e..:\t"); System.out.println (e.getMessage () ); } System.out.println (""); System.out.println ("----------------------------------------------"); } Zitieren
wir4undbilbo Geschrieben 9. September 2002 Geschrieben 9. September 2002 Wie ist denn genau die Fehlermeldung? Zitieren
charly20 Geschrieben 9. September 2002 Autor Geschrieben 9. September 2002 Also ich bin jetzt doch noch mal auf Appletviewer umgestiegen und bekomme diese Fehlermeldung. access denied (java.util.PropertyPermission OpenCard.loaderClassName read) Ich würde es ja in die .java.policy einbinden, doch ich weiß nciht wie. Ich habe kein Verzeichnis bzw Class datei mit loaderClassName.. und wenn ich es einfach so übernehme bleibt der Fehler.. Zitieren
wir4undbilbo Geschrieben 10. September 2002 Geschrieben 10. September 2002 Sehr merkwürdig. Bei mir funktioniert das und ich lade sogar Daten aus einer Datenbank und lasse sie vom Applet anzeigen. Schreib doch mal genau was du vorhast. Vielleicht fällt dann noch was besseres ein... Zitieren
charly20 Geschrieben 10. September 2002 Autor Geschrieben 10. September 2002 Was ich vor habe?! Nun ich will ein Java - Programm so umschreiben/ neu schreiben (dachte das ich es schon hätte) das es als Applet funktioniert. Das Applet selbst soll dann durch ein Serverseitiges Zertifikat authentifiziert werden. (Was auch schon ansatzweise geht - er sagt zumindest schon mal das Applet wurde mit einem Zertifikat versehen und fragt mich ob ich es akzeptieren will) Ich muß es Zertifizieren damit ich aus der Sandbox rauskomme, um auf einen Chipkartenleser zuzugreifen. (mit Applet hab ich das bißher ncoh überhauptnicht geschafft - mit Javaprog. selbst schon). Ist damit deine Frage beantwortet? Oder hab ich am Thema vorbeigeschrieben? Zitieren
wir4undbilbo Geschrieben 10. September 2002 Geschrieben 10. September 2002 Musst du dann nicht irgendeien Treiber laden,der dich auf den Chipkartenleser zugreifen lässt? Wie stellst du denn die Verbindung her? Ich habe wie gesagt gerade ein ähnliches Problem gehabt.Nur das ich auf eine ACCESS-DB zugreifen wollte.Das lies sich mit einem RMI-JDBC Treiber lösen. Deshalb beschreib doch mal genau wie du vorgehst.Ich dachte Anfangs auch,das ich mein Applet zertifizieren muss,doch das war dann doch nicht notwendig. Zitieren
charly20 Geschrieben 10. September 2002 Autor Geschrieben 10. September 2002 Also im Nachstehenden mein Applet. Es läßt sich kompilieren aber das wars dann auch schon.. Und das ist die Ausgabe die ich bekomme. Also er macht noch etwas aber nicht sehr viel... ---------------------------------------------- ---------------------------------------------- Test of OCF with a SIM card Alles Schei▀e..: access denied (java.util.PropertyPermission OpenCard.loaderClassName read) ---------------------------------------------- import java.applet.*; import java.awt.Graphics; import java.awt.Font; import opencard.core.terminal.*; import opencard.core.util.*; import opencard.core.service.*; import opencard.opt.util.*; import opencard.opt.security.*; import com.ibm.opencard.service.*; import opencard.core.util.SystemAccess; //import opencard.opt.ms.MicrosoftSystemAccess; //import opencard.opt.netscape.NetscapeSystemAccess; //import opencard.opt.ms.*; //import opencard.opt.netscape.*; public class SimTest_Hallo_e extends Applet { public void init() { //siehe auf Eckrechner //opencard.core.util.SystemAccess sys = opencard.opt.vendorX.VendorXSystemAccess(); //opencard.core.util.SystemAccess.setSystemAccess(sys); System.out.println ("----------------------------------------------"); System.out.println ("----------------------------------------------"); System.out.println ("Test of OCF with a SIM card"); System.out.println (""); try { // Initialize the framework SmartCard.start (); CardRequest cr = new CardRequest (); cr.setWaitBehavior (CardRequest.ANYCARD); SmartCard sm = SmartCard.waitForCard (cr); // print the ATR (from demos.samples.GetCardID) if (sm != null) { CardID cardID = sm.getCardID (); printCardID (cardID); } else { System.out.println ("did not get a SmartCard object!"); } // Get a PassThru card service and perform a 'STATUS' command PassThruCardService cs = (PassThruCardService) sm.getCardService(PassThruCardService.class, true); CommandAPDU cmd = new CommandAPDU(22); cmd.setLength(0); cmd.append((byte) 0x80); cmd.append((byte) 0xF6); cmd.append((byte) 0x00); cmd.append((byte) 0x00); cmd.append((byte) 0x08); System.out.println("Command 'STATUS':"); System.out.println(cmd.toString()); System.out.println("Sending a 'STATUS' command to the card..."); ResponseAPDU resp = cs.sendCommandAPDU(cmd); System.out.println("Response to 'STATUS' command:"); System.out.println(resp.toString()); // Shutdown the framework SmartCard.shutdown (); } catch(Exception e){ System.out.println ("Alles ******e..:\t"); System.out.println (e.getMessage () ); } System.out.println (""); System.out.println ("----------------------------------------------"); } /** * Prints out the information of the <tt>CardID</tt> object passed. */ public static void printCardID (CardID cardID) { StringBuffer sb = new StringBuffer("Obtained the following CardID:\n\n"); byte [] atr = cardID.getATR (); sb.append (HexString.hexify (atr) ).append ('\n'); appendHistoricals (sb, cardID); System.out.println(sb); } private static void appendHistoricals(StringBuffer sb, CardID cardID) { byte[] hist = cardID.getHistoricals(); sb.append("Historicals: "); if (hist == null) { sb.append("none\n"); } else { sb.append(HexString.hexify(hist)).append('\n'); sb.append("as a string: "); for(int i=0; i<hist.length; i++) sb.append((hist[i]<32)? // signed byte extension! ' ' : (char)hist[i]); sb.append('\n'); } } private static void appendTS(StringBuffer sb, byte ts) { sb.append("TS = ").append(HexString.hexify(ts)).append(" "); sb.append((ts==(byte)0x3b) ? "direct" : "inverse").append(" convention\n"); } private static void appendT0(StringBuffer sb, byte t0) { sb.append("TS = ").append(HexString.hexify(t0)).append(" "); binify(sb, t0); sb.append('\n'); } private static void appendClockrate(StringBuffer sb, byte cr) { double[] mhz = { -1.0, 5.0, 6.0, 8.0, 12.0, 16.0, 20.0, -1.0, 5.0, 7.5, 10.0, 15.0, 20.0, -1.0, -1.0, -1.0 }; int[] factors = { -2, 372, 558, 744, 1116, 1488, 1860, -1, 512, 768, 1024, 1536, 2048, -1, -1, -1 }; int fi = (cr >> 4) & 0xf; double speed = mhz [fi]; int factor = factors[fi]; sb.append("Clock speed "); if (speed < 0) sb.append("???"); else sb.append(speed); sb.append(" MHz, divided by "); if (factor < 0) sb.append("???"); else sb.append(factor); sb.append('\n'); } private static void appendBitAdjust(StringBuffer sb, byte { double[] bra = { -1.0, 1.0, 2.0, 4.0, 8.0, 16.0, 32.0, -1.0, 12.0, 20.0, 1.0/2, 1.0/4, 1.0/8, 1.0/16, 1.0/32, 1.0/64 }; int di = b & 0xf; sb.append("bit rate adjustment "); if (bra[di] < 0) sb.append("???"); else sb.append(bra[di]); sb.append('\n'); } private static void appendProgCurr(StringBuffer sb, byte { int[] mpg = { 25, 50, 100, -1 }; int ii = (b >> 5) & 3; sb.append("max prog current "); if (b < 0) sb.append("???"); else sb.append(mpg[ii]).append(" mA"); sb.append('\n'); } private static void binify(StringBuffer sb, byte { for(int i=0; i<8; i++) { sb.append((b<0) ? '1' : '0'); b <<= 1; } } } [/code] Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.