Файл политики Java и менеджер безопасности в Eclipse - PullRequest
0 голосов
/ 23 сентября 2018

Я пишу примеры файлов политики безопасности java с менеджером безопасности. Я использую eclipse и windows 10

Я хочу запустить свой код в Eclipse, чтобы проверить его, поэтому я не имею дело с файлами jar.Мой каталог проекта - E: \ Training-Projects \ JAVA \ ws_security \ 00610_folder_accesscontrol_policy

Я хочу реализовать файл политики безопасности следующим образом: -

1 / Ограничить доступ ко всем файлам, кромедля файлов в 3 каталогах, т. е. если код обращается к файлам из этих 3 каталогов, он должен быть разрешен, но доступ к файлам для любого другого каталога ограничен.2 / Предоставьте все остальные разрешения для базы кода.

То же, что и это

Блокируйте некоторые разрешения и предоставьте другие разрешения в политике безопасности java

длятест, я создал 4 папки в папке Eclipse src: папки / папки 1, папки / папки 2 ... папки / папки 4

Если мой код работает, я должен разрешить доступ к папкам / папкам1, папкам / папкам2, папкам / папкам3и заблокировать доступ к папкам / folder4

Мой код

    package code.secure;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class SecureFolderAccess {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        // Get project codeBase
        System.out.println("***");
        System.out.println("codeBase");
        System.out.println("Present Project Directory : "+ System.getProperty("user.dir"));
        System.out.println("***");

        // define 4 paths to 4 files        
//      Path file1 = Paths.get("src","access.policy");
        Path file1 = Paths.get("src/folders/folder1/", "file1.txt");
        Path file2 = Paths.get("src/folders/folder2/", "file2.txt");
        Path file3 = Paths.get("src/folders/folder3/", "file3.txt");
        Path file4 = Paths.get("src/folders/folder4/", "file4.txt");


        System.out.println(file1.toAbsolutePath());


        //      E:\\Training-Projects\\JAVA\\ws_security\\00610_folder_accesscontrol_policy\\src\\access.policy

        // Enable the security manager
        try {

            System.out.println("***");
            System.out.println("Setting policy file");
            System.out.println("Setting Security manager");
            System.out.println("***");

            // Must place any System.setProperty(...)
            // before SecurityManager securityManager = new SecurityManager();
//          System.setProperty("java.security.policy", "file:/E:\\Training-Projects\\JAVA\\ws_security\\00610_folder_accesscontrol_policy\\src\\access.policy");
            System.setProperty("java.security.policy", "file:///E:/Training-Projects/JAVA/ws_security/00610_folder_accesscontrol_policy/src/access.policy");
            SecurityManager securityManager = new SecurityManager();

            System.setSecurityManager(securityManager);
        } catch (SecurityException se) {

            // SecurityManager already set
        }


        // Create 4 files
        // in 4 different folders
        try {
            OutputStream os1 = new FileOutputStream(file1.toFile());
            OutputStream os2 = new FileOutputStream(file2.toFile());
            OutputStream os3 = new FileOutputStream(file3.toFile());
            OutputStream os4 = new FileOutputStream(file4.toFile());


             os1 = new FileOutputStream(file1.toFile());
             os2 = new FileOutputStream(file2.toFile());
             os3 = new FileOutputStream(file3.toFile());
             os4 = new FileOutputStream(file4.toFile());

            os1.write("Hello file1".getBytes()); ;
            os2.write("Hello file2".getBytes()); ;
            os3.write("Hello file3".getBytes()); ;
            os4.write("Hello file4".getBytes()); ;

        } catch (IOException e) {
          System.err.println(e);
        }

        readFile(file1);
        readFile(file2);
        readFile(file3);
        readFile(file4);


    }

      public static void readFile(Path path) {

            try {

              Files.lines(path)
//                 .filter(line -> line.startsWith("Love"))
                  .forEach(System.out::println);//print each line

            } catch (IOException ex) {
              ex.printStackTrace();//handle exception here
            }
      }


}

Мой файл политики также находится в папке src, здесь он

grant codeBase "file:/E:/Training-Projects/JAVA/ws_security/00610_folder_accesscontrol_policy/-" {
    permission java.io.FilePermission "E:\Training-Projects\JAVA\ws_security\00610_folder_accesscontrol_policy\src\folders\folder1/*", "read, write"; 
    permission java.io.FilePermission "E:\Training-Projects\JAVA\ws_security\00610_folder_accesscontrol_policy\src\folders\folder2/*", "read, write"; 
    permission java.io.FilePermission "E:\Training-Projects\JAVA\ws_security\00610_folder_accesscontrol_policy\src\folders\folder3/*", "read, write"; 
};

Этоне работает должным образом, все папки заблокированы.

Я подозреваю, что проблема в значении codeBase в файле политики, но может быть, что-то еще.

спасибо за вашу помощь

...