Package org.alfresco.repo.webdav.auth
Class BaseSSOAuthenticationFilter
- java.lang.Object
-
- org.alfresco.repo.webdav.auth.BaseAuthenticationFilter
-
- org.alfresco.repo.webdav.auth.BaseSSOAuthenticationFilter
-
- All Implemented Interfaces:
org.alfresco.repo.management.subsystems.ActivateableBean,DependencyInjectedFilter,AuthenticationDriver,org.springframework.beans.factory.InitializingBean
- Direct Known Subclasses:
BaseKerberosAuthenticationFilter
public abstract class BaseSSOAuthenticationFilter extends BaseAuthenticationFilter implements DependencyInjectedFilter, AuthenticationDriver, org.alfresco.repo.management.subsystems.ActivateableBean, org.springframework.beans.factory.InitializingBean
Base class with common code and initialisation for single signon authentication filters.- Author:
- gkspencer, kroast
-
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.StringloginPageLinkprotected static java.lang.StringMIME_HTML_TEXT-
Fields inherited from class org.alfresco.repo.webdav.auth.BaseAuthenticationFilter
ARG_TICKET, AUTHENTICATION_USER, authenticationComponent, authenticationListener, authenticationService, NO_AUTH_REQUIRED, nodeService, personService, remoteUserMapper, transactionService
-
Fields inherited from interface org.alfresco.repo.webdav.auth.AuthenticationDriver
AUTHENTICATION_USER
-
-
Constructor Summary
Constructors Constructor Description BaseSSOAuthenticationFilter()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidafterPropertiesSet()protected booleanallowsTicketLogons()Check if ticket based logons are allowedprotected booleancheckForTicketParameter(javax.servlet.ServletContext servletContext, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)Check if the request has specified a ticket parameter to bypass the standard authentication.voiddoFilter(javax.servlet.ServletContext context, javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain chain)ThedoFiltermethod of the Filter is called by the container each time a request/response pair is passed through the chain due to a client request for a resource at the end of the chain.protected java.lang.StringgetLoginPage()Return the login page addressjava.lang.StringgetLoginPageLink()protected org.alfresco.jlan.server.config.SecurityConfigSectiongetSecurityConfigSection()protected java.lang.StringgetServerName()Because the file server configuration may change during the lifetime of this filter, this method checks against the last configured server name before returning a cached resultprotected booleanhasLoginPage()Determine if the login page is availableprotected voidincludeFallbackAuth(javax.servlet.ServletContext context, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)Include into response authentication method that is supported by fallback mechanismprotected voidinit()Initializes the filter.booleanisActive()booleanisFallbackEnabled()protected booleanisNTLMSSPBlob(byte[] byts, int offset)Check if a security blob starts with the NTLMSSP signatureprotected booleanonLoginComplete(javax.servlet.ServletContext sc, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res, boolean userInit)Callback executed on completion of NTLM loginprotected voidonValidate(javax.servlet.ServletContext sc, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res, WebCredentials credentials)Callback executed on successful ticket validation during Type3 Message processing.protected voidonValidateFailed(javax.servlet.ServletContext sc, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res, javax.servlet.http.HttpSession session, WebCredentials credentials)Callback executed on failed authentication of a user ticket during Type3 Message processingprotected booleanperformFallbackAuthentication(javax.servlet.ServletContext context, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)Delegate authentication to the fallback mechanismprotected voidredirectToLoginPage(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res)Redirect to the login pagevoidsetActive(boolean active)Activates or deactivates the beanvoidsetFallback(AuthenticationDriver delegate)Sets the fallback authentication support for this filtervoidsetFallbackEnabled(boolean fallbackEnabled)Activates or deactivates the fallback authentication support for this filterprotected voidsetLoginPage(java.lang.String loginPage)Set the login page addressvoidsetLoginPageLink(java.lang.String loginPageLink)voidsetServerConfiguration(org.alfresco.filesys.ExtendedServerConfigurationAccessor serverConfiguration)voidsetTicketLogons(boolean ticketsAllowed)Set the ticket based logons allowed flagprotected voidwriteLoginPageLink(javax.servlet.ServletContext context, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)Writes link to login page and refresh tag which cause user to be redirected to the login page.-
Methods inherited from class org.alfresco.repo.webdav.auth.BaseAuthenticationFilter
createUserEnvironment, createUserEnvironment, createUserObject, doInSystemTransaction, getLogger, getSessionUser, getUserAttributeName, handleLoginForm, invalidateSession, setAuthenticationComponent, setAuthenticationListener, setAuthenticationService, setNodeService, setPersonService, setRemoteUserMapper, setTransactionService, setUserAttributeName
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.alfresco.repo.webdav.auth.AuthenticationDriver
authenticateRequest, restartLoginChallenge
-
-
-
-
Field Detail
-
MIME_HTML_TEXT
protected static final java.lang.String MIME_HTML_TEXT
- See Also:
- Constant Field Values
-
loginPageLink
protected java.lang.String loginPageLink
-
-
Method Detail
-
getLoginPageLink
public java.lang.String getLoginPageLink()
- Returns:
- login page link, which is send back to the client if the login fails in the filter. Override to change the default behaviour.
-
setLoginPageLink
public void setLoginPageLink(java.lang.String loginPageLink)
-
setServerConfiguration
public void setServerConfiguration(org.alfresco.filesys.ExtendedServerConfigurationAccessor serverConfiguration)
- Parameters:
serverConfiguration- the serverConfiguration to set
-
setActive
public final void setActive(boolean active)
Activates or deactivates the bean- Parameters:
active-trueif the bean is active and initialization should complete
-
isActive
public final boolean isActive()
- Specified by:
isActivein interfaceorg.alfresco.repo.management.subsystems.ActivateableBean
-
setFallback
public final void setFallback(AuthenticationDriver delegate)
Sets the fallback authentication support for this filter- Parameters:
delegate- AuthenticationDriver
-
setFallbackEnabled
public final void setFallbackEnabled(boolean fallbackEnabled)
Activates or deactivates the fallback authentication support for this filter- Parameters:
fallbackEnabled-
-
isFallbackEnabled
public final boolean isFallbackEnabled()
- Returns:
trueif fallback authentication enabled
-
afterPropertiesSet
public final void afterPropertiesSet() throws javax.servlet.ServletException- Specified by:
afterPropertiesSetin interfaceorg.springframework.beans.factory.InitializingBean- Throws:
javax.servlet.ServletException
-
doFilter
public void doFilter(javax.servlet.ServletContext context, javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain chain) throws java.io.IOException, javax.servlet.ServletExceptionDescription copied from interface:DependencyInjectedFilterThedoFiltermethod of the Filter is called by the container each time a request/response pair is passed through the chain due to a client request for a resource at the end of the chain. The FilterChain passed in to this method allows the Filter to pass on the request and response to the next entity in the chain.A typical implementation of this method would follow the following pattern:-
1. Examine the request
2. Optionally wrap the request object with a custom implementation to filter content or headers for input filtering
3. Optionally wrap the response object with a custom implementation to filter content or headers for output filtering
4. a) Either invoke the next entity in the chain using the FilterChain object (chain.doFilter()),
4. b) or not pass on the request/response pair to the next entity in the filter chain to block the request processing
5. Directly set headers on the response after invocation of the next entity in the filter chain.- Specified by:
doFilterin interfaceDependencyInjectedFilter- Throws:
java.io.IOExceptionjavax.servlet.ServletException
-
init
protected void init() throws javax.servlet.ServletExceptionInitializes the filter. Only called if the filter is active, as indicated byisActive(). Subclasses should override.- Throws:
javax.servlet.ServletException
-
onValidate
protected void onValidate(javax.servlet.ServletContext sc, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res, WebCredentials credentials)Callback executed on successful ticket validation during Type3 Message processing.- Parameters:
sc- the servlet contextreq- the requestres- the response
-
onValidateFailed
protected void onValidateFailed(javax.servlet.ServletContext sc, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res, javax.servlet.http.HttpSession session, WebCredentials credentials) throws java.io.IOExceptionCallback executed on failed authentication of a user ticket during Type3 Message processing- Parameters:
sc- the servlet contextreq- HttpServletRequestres- HttpServletResponsesession- HttpSession- Throws:
java.io.IOException
-
onLoginComplete
protected boolean onLoginComplete(javax.servlet.ServletContext sc, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res, boolean userInit) throws java.io.IOExceptionCallback executed on completion of NTLM login- Parameters:
req- HttpServletRequestres- HttpServletResponse- Returns:
- true to continue filter chaining, false otherwise
- Throws:
java.io.IOException
-
checkForTicketParameter
protected boolean checkForTicketParameter(javax.servlet.ServletContext servletContext, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)Check if the request has specified a ticket parameter to bypass the standard authentication.- Parameters:
servletContext- the servlet contextreq- the requestresp- the response- Returns:
- boolean
-
redirectToLoginPage
protected void redirectToLoginPage(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res) throws java.io.IOExceptionRedirect to the login page- Parameters:
req- HttpServletRequestres- HttpServletResponse- Throws:
java.io.IOException
-
hasLoginPage
protected final boolean hasLoginPage()
Determine if the login page is available- Returns:
- boolean
-
getLoginPage
protected final java.lang.String getLoginPage()
Return the login page address- Returns:
- String
-
setLoginPage
protected final void setLoginPage(java.lang.String loginPage)
Set the login page address- Parameters:
loginPage- String
-
allowsTicketLogons
protected final boolean allowsTicketLogons()
Check if ticket based logons are allowed- Returns:
- boolean
-
setTicketLogons
public final void setTicketLogons(boolean ticketsAllowed)
Set the ticket based logons allowed flag- Parameters:
ticketsAllowed- boolean
-
isNTLMSSPBlob
protected final boolean isNTLMSSPBlob(byte[] byts, int offset)Check if a security blob starts with the NTLMSSP signature- Parameters:
byts- byte[]offset- int- Returns:
- boolean
-
getServerName
protected java.lang.String getServerName()
Because the file server configuration may change during the lifetime of this filter, this method checks against the last configured server name before returning a cached result- Returns:
- resolved local server name
-
getSecurityConfigSection
protected org.alfresco.jlan.server.config.SecurityConfigSection getSecurityConfigSection()
-
writeLoginPageLink
protected void writeLoginPageLink(javax.servlet.ServletContext context, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp) throws java.io.IOExceptionWrites link to login page and refresh tag which cause user to be redirected to the login page.- Parameters:
context- ServletContextreq- HttpServletRequestresp- HttpServletResponse- Throws:
java.io.IOException
-
includeFallbackAuth
protected void includeFallbackAuth(javax.servlet.ServletContext context, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp) throws java.io.IOExceptionInclude into response authentication method that is supported by fallback mechanism- Parameters:
context- ServletContextreq- HttpServletRequestresp- HttpServletResponse- Throws:
java.io.IOException
-
performFallbackAuthentication
protected boolean performFallbackAuthentication(javax.servlet.ServletContext context, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp) throws java.io.IOException, javax.servlet.ServletExceptionDelegate authentication to the fallback mechanism- Parameters:
context- ServletContextreq- HttpServletRequestresp- HttpServletResponse- Returns:
- boolean
- Throws:
java.io.IOExceptionjavax.servlet.ServletException
-
-