test/javax/security/auth/Subject/doAs/NestedActions.java

Print this page




  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 import java.io.BufferedOutputStream;
  25 import java.io.File;
  26 import java.io.FileInputStream;
  27 import java.io.FileOutputStream;
  28 import java.io.IOException;
  29 import java.security.AccessControlContext;
  30 import java.security.AccessControlException;
  31 import java.security.AccessController;
  32 import java.security.PrivilegedAction;
  33 import java.security.PrivilegedActionException;
  34 import java.security.PrivilegedExceptionAction;
  35 import java.util.ArrayList;
  36 import java.util.Arrays;

  37 import java.util.List;
  38 import java.util.jar.JarEntry;
  39 import java.util.jar.JarOutputStream;
  40 import java.util.jar.Manifest;
  41 import javax.security.auth.Subject;
  42 import javax.security.auth.x500.X500Principal;
  43 import jdk.testlibrary.ProcessTools;
  44 
  45 /**
  46  * @test
  47  * @bug 8048147
  48  * @summary Check if proper AccessControlException is thrown
  49  *          in case of nested Subject.doAs() invocations
  50  *          when one of protection domains doesn't have permissions
  51  *
  52  * @library /lib/testlibrary
  53  *
  54  * @run main NestedActions jar NestedActionsACE.jar
  55  *              NestedActionsACE.class Utils.class
  56  * @run main NestedActions jar NestedActionsPAE.jar


 127                     fis.transferTo(jos);
 128                 }
 129             }
 130         }
 131     }
 132 
 133     static void runJava(String[] args) {
 134         if (args == null || args.length < 3) {
 135             throw new IllegalArgumentException("wrong parameters");
 136         }
 137 
 138         List<String> cmds = new ArrayList<>();
 139         cmds.add(JAVA);
 140         StringBuilder sb = new StringBuilder();
 141         cmds.add("-classpath");
 142         for (int i=2; i<args.length; i++) {
 143             sb.append(args[i]).append(PS);
 144         }
 145         cmds.add(sb.toString());
 146         if (JAVA_OPTS != null && !JAVA_OPTS.isEmpty()) {
 147             cmds.add(JAVA_OPTS);
 148         }
 149         cmds.add("-Djava.security.manager");
 150         cmds.add("-Djava.security.policy=" + TEST_SOURCES + FS + args[1]);
 151         cmds.add(args[0]);
 152         try {
 153             ProcessTools.executeCommand(cmds.toArray(new String[cmds.size()]))
 154                     .shouldHaveExitValue(0);
 155         } catch (Throwable e) {
 156             throw new RuntimeException(e);
 157         }
 158     }
 159 }
 160 
 161 /**
 162  * Test for nested Subject.doAs() invocation:
 163  *
 164  * WriteToFileAction (CN=Duke principal) ->
 165  *      ReadFromFileAction (CN=Duke principal) ->
 166  *          ReadPropertyAction (CN=Duke principal)
 167  *




  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 import java.io.BufferedOutputStream;
  25 import java.io.File;
  26 import java.io.FileInputStream;
  27 import java.io.FileOutputStream;
  28 import java.io.IOException;
  29 import java.security.AccessControlContext;
  30 import java.security.AccessControlException;
  31 import java.security.AccessController;
  32 import java.security.PrivilegedAction;
  33 import java.security.PrivilegedActionException;
  34 import java.security.PrivilegedExceptionAction;
  35 import java.util.ArrayList;
  36 import java.util.Arrays;
  37 import java.util.Collections;
  38 import java.util.List;
  39 import java.util.jar.JarEntry;
  40 import java.util.jar.JarOutputStream;
  41 import java.util.jar.Manifest;
  42 import javax.security.auth.Subject;
  43 import javax.security.auth.x500.X500Principal;
  44 import jdk.testlibrary.ProcessTools;
  45 
  46 /**
  47  * @test
  48  * @bug 8048147
  49  * @summary Check if proper AccessControlException is thrown
  50  *          in case of nested Subject.doAs() invocations
  51  *          when one of protection domains doesn't have permissions
  52  *
  53  * @library /lib/testlibrary
  54  *
  55  * @run main NestedActions jar NestedActionsACE.jar
  56  *              NestedActionsACE.class Utils.class
  57  * @run main NestedActions jar NestedActionsPAE.jar


 128                     fis.transferTo(jos);
 129                 }
 130             }
 131         }
 132     }
 133 
 134     static void runJava(String[] args) {
 135         if (args == null || args.length < 3) {
 136             throw new IllegalArgumentException("wrong parameters");
 137         }
 138 
 139         List<String> cmds = new ArrayList<>();
 140         cmds.add(JAVA);
 141         StringBuilder sb = new StringBuilder();
 142         cmds.add("-classpath");
 143         for (int i=2; i<args.length; i++) {
 144             sb.append(args[i]).append(PS);
 145         }
 146         cmds.add(sb.toString());
 147         if (JAVA_OPTS != null && !JAVA_OPTS.isEmpty()) {
 148             Collections.addAll(cmds, JAVA_OPTS.split("\\s+"));
 149         }
 150         cmds.add("-Djava.security.manager");
 151         cmds.add("-Djava.security.policy=" + TEST_SOURCES + FS + args[1]);
 152         cmds.add(args[0]);
 153         try {
 154             ProcessTools.executeCommand(cmds.toArray(new String[cmds.size()]))
 155                     .shouldHaveExitValue(0);
 156         } catch (Throwable e) {
 157             throw new RuntimeException(e);
 158         }
 159     }
 160 }
 161 
 162 /**
 163  * Test for nested Subject.doAs() invocation:
 164  *
 165  * WriteToFileAction (CN=Duke principal) ->
 166  *      ReadFromFileAction (CN=Duke principal) ->
 167  *          ReadPropertyAction (CN=Duke principal)
 168  *