public interface SecurityContext
getContext
method of the Security
class, which in turn may obtain them from a security manager or
policy provider implementing the
SecurityContextSource
interface.
Each SecurityContext
contains an AccessControlContext
instance representing the access control context in place when the security
context was snapshotted; this instance can be passed to one of the
doPrivileged
methods of the AccessController
class to restore the
AccessControlContext
portion of the overall security context.
Additional state (if any) carried by the security context can be restored
for the duration of a PrivilegedAction
or PrivilegedExceptionAction
by passing that action to the appropriate wrap
method of the SecurityContext
instance, and then executing the
returned "wrapper" action. These two operations--restoring the access
control context, and restoring any additional context encapsulated by the
SecurityContext
instance--should be performed in conjunction
with a single AccessController.doPrivileged
call, as
illustrated below:
// snapshot context SecurityContext ctx = Security.getContext(); // restore context AccessController.doPrivileged( ctx.wrap(action), ctx.getAccessControlContext());
Modifier and Type | Method and Description |
---|---|
AccessControlContext |
getAccessControlContext()
Returns access control context portion of snapshotted security context.
|
PrivilegedAction |
wrap(PrivilegedAction action)
Returns a security context-restoring
PrivilegedAction that
wraps the given action, or returns the action itself if the security
context does not include any non-AccessControlContext state
to restore. |
PrivilegedExceptionAction |
wrap(PrivilegedExceptionAction action)
Returns a security context-restoring
PrivilegedExceptionAction that wraps the given action, or
returns the action itself if the security context does not include any
non-AccessControlContext state to restore. |
PrivilegedAction wrap(PrivilegedAction action)
PrivilegedAction
that
wraps the given action, or returns the action itself if the security
context does not include any non-AccessControlContext
state
to restore. The run
method of the "wrapper" action (if
any) restores the non-AccessControlContext
state of the
security context before invoking the run
method of the
wrapped action, and unrestores that state after the wrapped action's
run
method has completed (normally or otherwise). The
value returned or exception thrown by the wrapped action's
run
method is propagated through the run
method of the wrapper action.action
- the action to be wrappedaction
,
or action
if no wrapping is necessaryNullPointerException
- if action
is null
PrivilegedExceptionAction wrap(PrivilegedExceptionAction action)
PrivilegedExceptionAction
that wraps the given action, or
returns the action itself if the security context does not include any
non-AccessControlContext
state to restore. The
run
method of the "wrapper" action (if any) restores the
non-AccessControlContext
state of the security context
before invoking the run
method of the wrapped action, and
unrestores that state after the wrapped action's run
method
has completed (normally or otherwise). The value returned or exception
thrown by the wrapped action's run
method is propagated
through the run
method of the wrapper action.action
- the action to be wrappedaction
,
or action
if no wrapping is necessaryNullPointerException
- if action
is null
AccessControlContext getAccessControlContext()