Java (Spring MVC)
Requirements
Installation & Configuration
1
Install Zen Firewall by Aikido
curl -L https://github.com/AikidoSec/firewall-java/releases/latest/download/zen.zip -o zen.zip
unzip zen.zipcurl -L https://github.com/AikidoSec/firewall-java/releases/latest/download/zen.tar.gz -o zen.tar.gz
tar -xzf zen.tar.gz-javaagent:/opt/zen/agent.jardependencies {
implementation files('/opt/zen/agent_api.jar')
}<dependency>
<groupId>dev.aikido</groupId>
<artifactId>agent_api</artifactId>
<version>1.0</version>
<systemPath>/opt/zen/agent_api.jar</systemPath>
</dependency>2
4
Enable Rate limiting and User blocking
@Component
@Order(2)
public class RateLimitingFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
ShouldBlockRequest.ShouldBlockRequestResult result = ShouldBlockRequest.shouldBlockRequest();
if (result.block()) {
if (result.data().type().equals("ratelimited")) {
String message = "You are rate limited by Zen.";
if (result.data().trigger().equals("ip")) {
message = message + " (Your IP: " + result.data().ip() + ")";
}
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setStatus(429);
httpResponse.getWriter().write(message);
return;
}
if (result.data().type().equals("blocked")) {
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setStatus(403);
httpResponse.getWriter().write("You are blocked by Zen.");
return;
}
}
chain.doFilter(request, response);
}
}import dev.aikido.agent_api.SetUser;
@Component
@Order(0)
public class SetUserFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
SetUser.setUser(new SetUser.UserObject("123", "John Doe"));
chain.doFilter(request, response);
}
}5
Setup rate limiting in the dashboard



You are rate limited by Aikido firewall. (Your IP: 1.2.3.4)Last updated
Was this helpful?
