#571 : add logger, modify conf path

This commit is contained in:
Shinsuke Sugaya 2016-07-12 23:24:25 +09:00
parent 723c9a2c83
commit b4d31da4f1

View file

@ -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);
}
}