/* * Copyright (c) 2013 EMC Corporation * All Rights Reserved */ package com.emc.storageos.systemservices.impl.security; import javax.servlet.ServletRequest; import javax.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import com.emc.storageos.security.authentication.AbstractAuthenticationFilter; import com.emc.storageos.svcs.errorhandling.resources.APIException; import com.emc.storageos.systemservices.impl.upgrade.CoordinatorClientExt; /** * Filter class for for public APIs on non-control node. */ public class PublicAPIFilter extends AbstractAuthenticationFilter { private static final Logger _log = LoggerFactory.getLogger(PublicAPIFilter.class); @Autowired private CoordinatorClientExt _coordinatorclientext; // Unauthorizing public APIs for non-control nodes. @Override protected AbstractRequestWrapper authenticate(final ServletRequest servletRequest) { HttpServletRequest req = (HttpServletRequest) servletRequest; _log.debug("Is node control node? " + _coordinatorclientext.isControlNode()); if (!_coordinatorclientext.isControlNode()) { _log.info("URI is not allowed: " + req.getRequestURI()); throw APIException.unauthorized.methodNotAllowedOnThisNode(); } return null; } }