|
Spring Security Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.security.ui.portlet.PortletProcessingInterceptor
public class PortletProcessingInterceptor
This interceptor is responsible for processing portlet authentication requests. This
is the portlet equivalent of the AuthenticationProcessingFilter
used for
traditional servlet-based web applications. It is applied to both ActionRequest
s
and RenderRequest
s alike. If authentication is successful, the resulting
Authentication
object will be placed into the SecurityContext
, which
is guaranteed to have already been created by an earlier interceptor. If authentication
fails, the AuthenticationException
will be placed into the
APPLICATION_SCOPE
of the PortletSession
with the attribute defined
by AbstractProcessingFilter.SPRING_SECURITY_LAST_EXCEPTION_KEY
.
Some portals do not properly provide the identity of the current user via the
getRemoteUser()
or getUserPrincipal()
methods of the
PortletRequest
. In these cases they sometimes make it available in the
USER_INFO
map provided as one of the attributes of the request. If this is
the case in your portal, you can specify a list of USER_INFO
attributes
to check for the username via the userNameAttributes
property of this bean.
You can also completely override the getPrincipalFromRequest(PortletRequest)
and getCredentialsFromRequest(PortletRequest)
methods to suit the particular
behavior of your portal.
This interceptor will put the PortletRequest
object into the
details
property of the
Authentication
object that is sent
as a request to the AuthenticationManager
. This is done so that the request
is available to classes like ContainerPortletAuthoritiesPopulator
that need
access to information from the portlet container. The PortletAuthenticationProvider
will replace this with the USER_INFO
map in the resulting Authentication
object.
AbstractProcessingFilter
,
AuthenticationProcessingFilter
Constructor Summary | |
---|---|
PortletProcessingInterceptor()
|
Method Summary | |
---|---|
void |
afterActionCompletion(javax.portlet.ActionRequest request,
javax.portlet.ActionResponse response,
Object handler,
Exception ex)
|
void |
afterPropertiesSet()
|
void |
afterRenderCompletion(javax.portlet.RenderRequest request,
javax.portlet.RenderResponse response,
Object handler,
Exception ex)
|
protected Object |
getCredentialsFromRequest(javax.portlet.PortletRequest request)
This method attempts to extract a credentials from the portlet request. |
protected Object |
getPrincipalFromRequest(javax.portlet.PortletRequest request)
This method attempts to extract a principal from the portlet request. |
protected void |
onPreAuthentication(javax.portlet.PortletRequest request,
javax.portlet.PortletResponse response)
Callback for custom processing prior to the authentication attempt. |
protected void |
onSuccessfulAuthentication(javax.portlet.PortletRequest request,
javax.portlet.PortletResponse response,
Authentication authResult)
Callback for custom processing after a successful authentication attempt. |
protected void |
onUnsuccessfulAuthentication(javax.portlet.PortletRequest request,
javax.portlet.PortletResponse response,
AuthenticationException failed)
Callback for custom processing after an unsuccessful authentication attempt. |
void |
postHandleRender(javax.portlet.RenderRequest request,
javax.portlet.RenderResponse response,
Object handler,
ModelAndView modelAndView)
|
boolean |
preHandleAction(javax.portlet.ActionRequest request,
javax.portlet.ActionResponse response,
Object handler)
|
boolean |
preHandleRender(javax.portlet.RenderRequest request,
javax.portlet.RenderResponse response,
Object handler)
|
void |
setAuthenticationDetailsSource(AuthenticationDetailsSource authenticationDetailsSource)
|
void |
setAuthenticationManager(AuthenticationManager authenticationManager)
|
void |
setUseAuthTypeAsCredentials(boolean useAuthTypeAsCredentials)
It true, the "authType" proerty of the PortletRequest will be used as the credentials. |
void |
setUserNameAttributes(List userNameAttributes)
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public PortletProcessingInterceptor()
Method Detail |
---|
public void afterPropertiesSet() throws Exception
afterPropertiesSet
in interface InitializingBean
Exception
public boolean preHandleAction(javax.portlet.ActionRequest request, javax.portlet.ActionResponse response, Object handler) throws Exception
preHandleAction
in interface HandlerInterceptor
Exception
public boolean preHandleRender(javax.portlet.RenderRequest request, javax.portlet.RenderResponse response, Object handler) throws Exception
preHandleRender
in interface HandlerInterceptor
Exception
public void postHandleRender(javax.portlet.RenderRequest request, javax.portlet.RenderResponse response, Object handler, ModelAndView modelAndView) throws Exception
postHandleRender
in interface HandlerInterceptor
Exception
public void afterActionCompletion(javax.portlet.ActionRequest request, javax.portlet.ActionResponse response, Object handler, Exception ex) throws Exception
afterActionCompletion
in interface HandlerInterceptor
Exception
public void afterRenderCompletion(javax.portlet.RenderRequest request, javax.portlet.RenderResponse response, Object handler, Exception ex) throws Exception
afterRenderCompletion
in interface HandlerInterceptor
Exception
protected Object getPrincipalFromRequest(javax.portlet.PortletRequest request)
PortletRequest should return the name
of the user in the getRemoteUser()
method. It should also provide a
java.security.Principal
object from the getUserPrincipal()
method. We will first try these to come up with a valid username.
Unfortunately, some portals do not properly return these values for authenticated
users. So, if neither of those succeeds and if the userNameAttributes
property has been populated, then we will search through the USER_INFO
map from the request to see if we can find a valid username.
This method can be overridden by subclasses to provide special handling
for portals with weak support for the JSR 168 spec.
- Parameters:
request
- the portlet request object
- Returns:
- the determined principal object, or null if none found
protected Object getCredentialsFromRequest(javax.portlet.PortletRequest request)
This method can be overridden by subclasses to provide special handling for portals with weak support for the JSR 168 spec. If that is done, be sure the value is non-null for authenticated users and null for non-authenticated users.
request
- the portlet request object
protected void onPreAuthentication(javax.portlet.PortletRequest request, javax.portlet.PortletResponse response) throws AuthenticationException, IOException
request
- the portlet request to be authenticatedresponse
- the portlet response to be authenticated
AuthenticationException
- to indicate that authentication attempt is not valid and should be terminated
IOException
protected void onSuccessfulAuthentication(javax.portlet.PortletRequest request, javax.portlet.PortletResponse response, Authentication authResult) throws IOException
request
- the portlet request that was authenticatedresponse
- the portlet response that was authenticatedauthResult
- the resulting Authentication object
IOException
protected void onUnsuccessfulAuthentication(javax.portlet.PortletRequest request, javax.portlet.PortletResponse response, AuthenticationException failed) throws IOException
request
- the portlet request that failed authenticationresponse
- the portlet response that failed authenticationfailed
- the AuthenticationException that occurred
IOException
public void setAuthenticationManager(AuthenticationManager authenticationManager)
public void setUserNameAttributes(List userNameAttributes)
public void setAuthenticationDetailsSource(AuthenticationDetailsSource authenticationDetailsSource)
public void setUseAuthTypeAsCredentials(boolean useAuthTypeAsCredentials)
useAuthTypeAsCredentials
-
|
Spring Security Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |