Path: blob/master/test/jdk/sun/security/provider/PolicyFile/Modules.java
41153 views
/*1* Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223/*24* @test25* @bug 804777126* @summary check permissions and principals from various modules27* @modules java.desktop28* java.logging29* java.management30* java.security.jgss31* java.smartcardio32* java.sql33* java.xml34* jdk.attach35* jdk.jdi36* jdk.net37* jdk.security.auth38* jdk.security.jgss39* @run main/othervm/java.security.policy==modules.policy Modules40*/4142import java.security.AccessController;43import java.security.Permission;44import java.security.Principal;45import java.security.PrivilegedAction;46import java.util.Arrays;47import java.util.Collections;48import java.util.HashSet;49import java.util.Set;50import javax.security.auth.Subject;5152public class Modules {5354private final static Permission[] perms = new Permission[] {55// java.base module56new java.io.SerializablePermission("enableSubstitution"),57new java.lang.reflect.ReflectPermission("suppressAccessChecks"),58new java.nio.file.LinkPermission("hard"),59new javax.net.ssl.SSLPermission("getSSLSessionContext"),60new javax.security.auth.AuthPermission("doAsPrivileged"),61new javax.security.auth.PrivateCredentialPermission("* * \"*\"",62"read"),63// java.desktop module64new java.awt.AWTPermission("createRobot"),65new javax.sound.sampled.AudioPermission("play"),66// java.logging module67new java.util.logging.LoggingPermission("control", ""),68// java.management module69new java.lang.management.ManagementPermission("control"),70new javax.management.MBeanPermission("*", "getAttribute"),71new javax.management.MBeanServerPermission("createMBeanServer"),72new javax.management.MBeanTrustPermission("register"),73new javax.management.remote.SubjectDelegationPermission("*"),74// java.security.jgss module75new javax.security.auth.kerberos.DelegationPermission("\"*\" \"*\""),76new javax.security.auth.kerberos.ServicePermission("*", "accept"),77// java.sql module78new java.sql.SQLPermission("setLog"),79// java.smartcardio module80new javax.smartcardio.CardPermission("*", "*"),81// jdk.attach module (@jdk.Exported Permissions)82new com.sun.tools.attach.AttachPermission("attachVirtualMachine"),83// jdk.jdi module (@jdk.Exported Permissions)84new com.sun.jdi.JDIPermission("virtualMachineManager"),85// jdk.security.jgss module (@jdk.Exported Permissions)86new com.sun.security.jgss.InquireSecContextPermission("*"),87};8889private final static Principal[] princs = new Principal[] {90// java.base module91new javax.security.auth.x500.X500Principal("CN=Duke"),92// java.management module93new javax.management.remote.JMXPrincipal("Duke"),94// java.security.jgss module95new javax.security.auth.kerberos.KerberosPrincipal("[email protected]"),96new com.sun.security.auth.UserPrincipal("Duke"),97new com.sun.security.auth.NTDomainPrincipal("openjdk.org"),98new com.sun.security.auth.NTSid(99"S-1-5-21-3623811015-3361044348-30300820-1013"),100new com.sun.security.auth.NTUserPrincipal("Duke"),101new com.sun.security.auth.UnixNumericUserPrincipal("0"),102new com.sun.security.auth.UnixPrincipal("duke"),103};104105public static void main(String[] args) throws Exception {106107for (Permission perm : perms) {108AccessController.checkPermission(perm);109}110111Permission princPerm = new java.util.PropertyPermission("user.home",112"read");113Set<Principal> princSet = new HashSet<>(Arrays.asList(princs));114Subject subject = new Subject(true, princSet, Collections.emptySet(),115Collections.emptySet());116PrivilegedAction<Void> pa = () -> {117AccessController.checkPermission(princPerm);118return null;119};120Subject.doAsPrivileged(subject, pa, null);121}122}123124125