|
Blocks :
|
|
|
Blocks :
|
|
|
Relates :
|
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.