public class ContextPropagatingRemoteInvocation extends RemoteInvocation
RemoteInvocation
that is passed from the client to the server.
The principal and credentials information will be extracted from the current security context and passed to the server as part of the invocation object.
To avoid potential serialization-based attacks, this implementation interprets the
values as String
s and creates a UsernamePasswordAuthenticationToken
on
the server side to hold them. If a different token type is required you can override
the createAuthenticationRequest
method.
Constructor and Description |
---|
ContextPropagatingRemoteInvocation(org.aopalliance.intercept.MethodInvocation methodInvocation)
Constructs the object, storing the principal and credentials extracted from the
client-side security context.
|
Modifier and Type | Method and Description |
---|---|
protected Authentication |
createAuthenticationRequest(String principal,
String credentials)
Creates the server-side authentication request object.
|
Object |
invoke(Object targetObject)
Invoked on the server-side.
|
addAttribute, getArguments, getAttribute, getAttributes, getMethodName, getParameterTypes, setArguments, setAttributes, setMethodName, setParameterTypes, toString
public ContextPropagatingRemoteInvocation(org.aopalliance.intercept.MethodInvocation methodInvocation)
methodInvocation
- the method to invokepublic Object invoke(Object targetObject) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException
The transmitted principal and credentials will be used to create an unauthenticated
Authentication
instance for processing by the AuthenticationManager
.
invoke
in class RemoteInvocation
targetObject
- the target object to apply the invocation toNoSuchMethodException
- if the method name could not be resolvedIllegalAccessException
- if the method could not be accessedInvocationTargetException
- if the method invocation resulted in an exceptionprotected Authentication createAuthenticationRequest(String principal, String credentials)