212 * @return the login Configuration. If a Configuration object was set 213 * via the {@code Configuration.setConfiguration} method, 214 * then that object is returned. Otherwise, a default 215 * Configuration object is returned. 216 * 217 * @exception SecurityException if the caller does not have permission 218 * to retrieve the Configuration. 219 * 220 * @see #setConfiguration 221 */ 222 public static Configuration getConfiguration() { 223 224 SecurityManager sm = System.getSecurityManager(); 225 if (sm != null) 226 sm.checkPermission(new AuthPermission("getLoginConfiguration")); 227 228 synchronized (Configuration.class) { 229 if (configuration == null) { 230 String config_class = null; 231 config_class = AccessController.doPrivileged 232 (new PrivilegedAction<String>() { 233 public String run() { 234 return java.security.Security.getProperty 235 ("login.configuration.provider"); 236 } 237 }); 238 if (config_class == null) { 239 config_class = "sun.security.provider.ConfigFile"; 240 } 241 242 try { 243 final String finalClass = config_class; 244 Configuration untrustedImpl = AccessController.doPrivileged( 245 new PrivilegedExceptionAction<Configuration>() { 246 public Configuration run() throws ClassNotFoundException, 247 InstantiationException, 248 IllegalAccessException { 249 Class<? extends Configuration> implClass = Class.forName( 250 finalClass, false, 251 Thread.currentThread().getContextClassLoader() 252 ).asSubclass(Configuration.class); 253 return implClass.newInstance(); 254 } 255 }); 256 AccessController.doPrivileged( 257 new PrivilegedExceptionAction<Void>() { 258 public Void run() { 259 setConfiguration(untrustedImpl); 260 return null; 261 } 262 }, Objects.requireNonNull(untrustedImpl.acc) 263 ); 264 } catch (PrivilegedActionException e) { 265 Exception ee = e.getException(); 266 if (ee instanceof InstantiationException) { 267 throw (SecurityException) new 268 SecurityException 269 ("Configuration error:" + 270 ee.getCause().getMessage() + 271 "\n").initCause(ee.getCause()); 272 } else { 273 throw (SecurityException) new 274 SecurityException 275 ("Configuration error: " + 276 ee.toString() + 277 "\n").initCause(ee); | 212 * @return the login Configuration. If a Configuration object was set 213 * via the {@code Configuration.setConfiguration} method, 214 * then that object is returned. Otherwise, a default 215 * Configuration object is returned. 216 * 217 * @exception SecurityException if the caller does not have permission 218 * to retrieve the Configuration. 219 * 220 * @see #setConfiguration 221 */ 222 public static Configuration getConfiguration() { 223 224 SecurityManager sm = System.getSecurityManager(); 225 if (sm != null) 226 sm.checkPermission(new AuthPermission("getLoginConfiguration")); 227 228 synchronized (Configuration.class) { 229 if (configuration == null) { 230 String config_class = null; 231 config_class = AccessController.doPrivileged 232 (new PrivilegedAction<>() { 233 public String run() { 234 return java.security.Security.getProperty 235 ("login.configuration.provider"); 236 } 237 }); 238 if (config_class == null) { 239 config_class = "sun.security.provider.ConfigFile"; 240 } 241 242 try { 243 final String finalClass = config_class; 244 Configuration untrustedImpl = AccessController.doPrivileged( 245 new PrivilegedExceptionAction<>() { 246 public Configuration run() throws ClassNotFoundException, 247 InstantiationException, 248 IllegalAccessException { 249 Class<? extends Configuration> implClass = Class.forName( 250 finalClass, false, 251 Thread.currentThread().getContextClassLoader() 252 ).asSubclass(Configuration.class); 253 return implClass.newInstance(); 254 } 255 }); 256 AccessController.doPrivileged( 257 new PrivilegedExceptionAction<>() { 258 public Void run() { 259 setConfiguration(untrustedImpl); 260 return null; 261 } 262 }, Objects.requireNonNull(untrustedImpl.acc) 263 ); 264 } catch (PrivilegedActionException e) { 265 Exception ee = e.getException(); 266 if (ee instanceof InstantiationException) { 267 throw (SecurityException) new 268 SecurityException 269 ("Configuration error:" + 270 ee.getCause().getMessage() + 271 "\n").initCause(ee.getCause()); 272 } else { 273 throw (SecurityException) new 274 SecurityException 275 ("Configuration error: " + 276 ee.toString() + 277 "\n").initCause(ee); |