Class TokenAuthenticationInvocationHandler
java.lang.Object
com.atlassian.confluence.rpc.auth.TokenAuthenticationInvocationHandler
- All Implemented Interfaces:
InvocationHandler
An interceptor to handle token based authentication and login/logout.
For login and logout method calls on the target object, invokes
TokenAuthenticationManager.login(String, String)
or
TokenAuthenticationManager.logout(String)
instead.
For all other methods, uses the first argument as a token to look up an authenticated user in the
TokenAuthenticationManager
and set the AuthenticatedUserThreadLocal
before
executing the method.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected ConfluenceUser
getAuthenticatedUser
(String token) Determines which user is performing the request.protected Object
invokeAuthenticatedMethod
(ConfluenceUser user, Method method, Object[] args) Sets the authenticated user to the provided user before calling the method and restores the original user afterwards.static Object
makeAuthenticatingProxy
(Object rpcService, Class publishedInterface) void
setEventPublisher
(com.atlassian.event.api.EventPublisher eventPublisher) void
setTokenAuthenticationManager
(TokenAuthenticationManager tokenAuthenticationManager) void
setWrappedObject
(Object wrappedObject)
-
Constructor Details
-
TokenAuthenticationInvocationHandler
public TokenAuthenticationInvocationHandler()
-
-
Method Details
-
makeAuthenticatingProxy
-
invoke
- Specified by:
invoke
in interfaceInvocationHandler
- Throws:
Throwable
-
invokeAuthenticatedMethod
protected Object invokeAuthenticatedMethod(ConfluenceUser user, Method method, Object[] args) throws Throwable Sets the authenticated user to the provided user before calling the method and restores the original user afterwards.- Parameters:
user
- the user who is executing the methodmethod
- the method to executeargs
- any arguments to the method- Returns:
- the result of executing the method
- Throws:
Throwable
- rethrows any exception thrown by the invoked method- See Also:
-
getAuthenticatedUser
protected ConfluenceUser getAuthenticatedUser(String token) throws InvalidSessionException, NotPermittedException Determines which user is performing the request. It attempts, in order:
- a non-anonymous user registered against provided token, if it is not blank
- a non-anonymous user authenticated by the normal security filters
- finally, the default is the anonymous user.
Returns the authenticated user.
- Parameters:
token
- the authentication token- Returns:
- an authenticated user
- Throws:
InvalidSessionException
- if the provided token is invalidNotPermittedException
- if we need to fall back to the anonymous user, but anonymous access to the remote API is disabled
-
setWrappedObject
-
setTokenAuthenticationManager
-
setEventPublisher
public void setEventPublisher(com.atlassian.event.api.EventPublisher eventPublisher)
-