Zum Inhalt springen

JAVA Applet - SecurityManager


Empfohlene Beiträge

Geschrieben

Eine ganz kurze Frage nur - ich hoffe es läßt sich auch mit einer ebensokurzen antwort lösen :o)

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....

Geschrieben

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...

Geschrieben

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 ("----------------------------------------------");

     }

Geschrieben

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..

Geschrieben

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?

Geschrieben

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.

Geschrieben

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]

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...