/* The contents of this file are subject to the license and copyright terms
* detailed in the license directory at the root of the source tree (also
* available online at http://fedora-commons.org/license/).
*/
package org.fcrepo.server.security.servletfilters;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author Bill Niebel
* @deprecated
*/
@Deprecated
public class FilterEnforceAuthn
extends FilterSetup {
private static final Logger logger =
LoggerFactory.getLogger(FilterEnforceAuthn.class);
@Override
public boolean doThisSubclass(ExtendedHttpServletRequest request,
HttpServletResponse response)
throws Throwable {
String method = "doThisSubclass() ";
if (logger.isDebugEnabled()) {
logger.debug(enter(method));
}
super.doThisSubclass(request, response);
request.lockWrapper();
boolean terminateServletFilterChain =
request.getUserPrincipal() == null;
if (terminateServletFilterChain) {
if (logger.isDebugEnabled()) {
logger.debug(format(method, "no principal found, sending 401"));
}
String realm = "fedora";
String value = "BASIC realm=\"" + realm + "\"";
String name = "WWW-Authenticate";
int sc = HttpServletResponse.SC_UNAUTHORIZED;
response.reset();
if (response.containsHeader(name)) {
response.setHeader(name, value);
} else {
response.addHeader(name, value);
}
try {
response.sendError(sc, "supply credentials");
} catch (IOException e1) {
logger.error("Error sending error response", e1);
}
response.setContentType("text/plain");
try {
response.flushBuffer();
} catch (IOException e) {
logger.error("Error flushing response", e);
}
}
return terminateServletFilterChain;
}
@Override
public void destroy() {
String method = "destroy()";
if (logger.isDebugEnabled()) {
logger.debug(enter(method));
}
super.destroy();
if (logger.isDebugEnabled()) {
logger.debug(exit(method));
}
}
}