package com.sungardas.enhancedsnapshots.security; import org.springframework.security.authentication.InsufficientAuthenticationException; import org.springframework.security.core.AuthenticationException; import org.springframework.security.saml.SAMLEntryPoint; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class XhrSAMLEntryPoint extends SAMLEntryPoint { @Override public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException e) throws IOException, ServletException { if (isXmlHttpRequest(request) && e instanceof InsufficientAuthenticationException) { response.setContentType("application/json;charset=UTF-8"); response.setStatus(401); response.getWriter().write("{\"loginMode\":\"SSO\"}"); return; } super.commence(request, response, e); } private boolean isXmlHttpRequest(HttpServletRequest request) { return "XMLHttpRequest".equalsIgnoreCase(request.getHeader("X-Requested-With")); } }