diff --git a/src/main/java/org/codelibs/fess/filter/SpnegoFilter.java b/src/main/java/org/codelibs/fess/filter/SpnegoFilter.java index 2b774e696..56bc0d7c8 100644 --- a/src/main/java/org/codelibs/fess/filter/SpnegoFilter.java +++ b/src/main/java/org/codelibs/fess/filter/SpnegoFilter.java @@ -15,6 +15,7 @@ */ package org.codelibs.fess.filter; +import java.io.File; import java.io.IOException; import java.util.Enumeration; @@ -27,6 +28,7 @@ import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import org.codelibs.core.exception.IORuntimeException; +import org.codelibs.core.io.ResourceUtil; import org.codelibs.core.lang.StringUtil; import org.codelibs.fess.exception.FessSystemException; import org.codelibs.fess.exception.ServletRuntimeException; @@ -34,6 +36,8 @@ import org.codelibs.fess.mylasta.action.FessUserBean; import org.codelibs.fess.util.ComponentUtil; import org.codelibs.spnego.SpnegoHttpFilter; import org.codelibs.spnego.SpnegoHttpServletRequest; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * SpnegoFilter supports Integrated Windows Authentication(SSO). @@ -42,6 +46,8 @@ import org.codelibs.spnego.SpnegoHttpServletRequest; */ public class SpnegoFilter extends SpnegoHttpFilter { + private static final Logger logger = LoggerFactory.getLogger(SpnegoFilter.class); + @Override public void init(final FilterConfig filterConfig) throws ServletException { ComponentUtil.processAfterContainerInit(() -> { @@ -70,12 +76,16 @@ public class SpnegoFilter extends SpnegoHttpFilter { if (Constants.KRB5_CONF.equals(name)) { final String krb5Conf = ComponentUtil.getFessConfig().getSpnegoKrb5Conf(); if (StringUtil.isNotBlank(krb5Conf)) { - return krb5Conf; + final File file = ResourceUtil.getResourceAsFileNoException(krb5Conf); + if (file != null) { + return file.getAbsolutePath(); + } } } else if (Constants.LOGIN_CONF.equals(name)) { final String loginConf = ComponentUtil.getFessConfig().getSpnegoLoginConf(); - if (StringUtil.isNotBlank(loginConf)) { - return loginConf; + final File file = ResourceUtil.getResourceAsFileNoException(loginConf); + if (file != null) { + return file.getAbsolutePath(); } } else if (Constants.PREAUTH_USERNAME.equals(name)) { final String username = ComponentUtil.getFessConfig().getSpnegoPreauthUsername(); @@ -106,9 +116,15 @@ public class SpnegoFilter extends SpnegoHttpFilter { ServletException { try { ComponentUtil.getRequestManager().findUserBean(FessUserBean.class).ifPresent(u -> { + if (logger.isDebugEnabled()) { + logger.debug("process your request as " + u.getUserId()); + } doFilter(() -> chain.doFilter(request, response)); }).orElse(() -> { if (ComponentUtil.getFessConfig().isSsoEnabled()) { + if (logger.isDebugEnabled()) { + logger.debug("process authentication"); + } doFilter(() -> SpnegoFilter.super.doFilter(request, response, chain)); } else { doFilter(() -> chain.doFilter(request, response)); @@ -125,10 +141,16 @@ public class SpnegoFilter extends SpnegoHttpFilter { protected void processRequest(final SpnegoHttpServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException { if (StringUtil.isNotBlank(request.getRemoteUser())) { + if (logger.isDebugEnabled()) { + logger.debug("log in as " + request.getRemoteUser()); + } // TODO save path and parameters into session final RequestDispatcher dispatcher = request.getRequestDispatcher(ComponentUtil.getFessConfig().getSsoLoginPath()); dispatcher.forward(request, response); } else { + if (logger.isDebugEnabled()) { + logger.debug("this request is not logged in."); + } chain.doFilter(request, response); } }