JDK-8046130 : JEP 140: Limited doPrivileged
  • Type: JEP
  • Component: security-libs
  • Priority: P4
  • Status: Closed
  • Resolution: Delivered
  • Fix Versions: 8
  • Submitted: 2011-08-25
  • Updated: 2014-07-10
  • Resolved: 2014-07-10
Related Reports
Blocks :  
Blocks :  
Relates :  
Description
Summary
-------

Enable code to assert a subset of its privileges without otherwise preventing
the full access-control stack walk to check for other permissions.


Motivation
----------

This is very useful when you need to enable some permissions while allowing
others to continue the stack walk.


Description
-----------

Add a `java.security.AccessController.doPrivileged` method that takes a
permission argument.

For example, some bootstrap JRE code could assert a privilege to GET a
configuration file via http:

    AccessController.doPrivileged(anon class...,
                                  new URLPermission(url,
                                                    request props ...,
                                                    "GET") ...

A `checkPermission()` for a matching `URLPermission` (done by the `http`
handler) would stop walking the access-control context (acc) stack at that
`doPrivileged()` invocation and succeed.  A check for a non-matching
`URLPermission` or some other permission, however, would match the JRE class's
generally assigned privileges and continue walking the full acc stack as if the
limited `doPrivileged()` had not been invoked.

These limited privileges are also captured by `getAccessControlContext()` and
by thread inheritance.