Merge e2d182440b
into d074573de0
commit
a0c1bf7220
|
@ -0,0 +1,49 @@
|
||||||
|
package org.mitre.openid.connect;
|
||||||
|
|
||||||
|
import javax.servlet.RequestDispatcher;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.security.oauth2.common.exceptions.OAuth2Exception;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
public class ErrorController {
|
||||||
|
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(ErrorController.class);
|
||||||
|
|
||||||
|
@RequestMapping("/error")
|
||||||
|
public String handle(HttpServletRequest req) {
|
||||||
|
Throwable errorException = (Throwable) req.getAttribute(RequestDispatcher.ERROR_EXCEPTION);
|
||||||
|
String message = (String) req.getAttribute(RequestDispatcher.ERROR_MESSAGE);
|
||||||
|
String requestUri = (String) req.getAttribute(RequestDispatcher.ERROR_REQUEST_URI);
|
||||||
|
|
||||||
|
logger.error("request {} failed with {}", requestUri, message);
|
||||||
|
logger.error("exception", errorException);
|
||||||
|
|
||||||
|
processError(req);
|
||||||
|
return "/error-view";
|
||||||
|
}
|
||||||
|
|
||||||
|
private void processError(HttpServletRequest request) {
|
||||||
|
if (request.getAttribute("error") instanceof OAuth2Exception) {
|
||||||
|
request.setAttribute("errorCode", ((OAuth2Exception)request.getAttribute("error")).getOAuth2ErrorCode());
|
||||||
|
request.setAttribute("message", ((OAuth2Exception)request.getAttribute("error")).getMessage());
|
||||||
|
} else if (request.getAttribute(RequestDispatcher.ERROR_EXCEPTION) != null) {
|
||||||
|
Throwable t = (Throwable)request.getAttribute(RequestDispatcher.ERROR_EXCEPTION);
|
||||||
|
request.setAttribute("errorCode", t.getClass().getSimpleName() + " (" + request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE) + ")");
|
||||||
|
request.setAttribute("message", t.getMessage());
|
||||||
|
} else if (request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE) != null) {
|
||||||
|
Integer code = (Integer)request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
|
||||||
|
HttpStatus status = HttpStatus.valueOf(code);
|
||||||
|
request.setAttribute("errorCode", status.toString() + " " + status.getReasonPhrase());
|
||||||
|
request.setAttribute("message", request.getAttribute(RequestDispatcher.ERROR_MESSAGE));
|
||||||
|
} else {
|
||||||
|
request.setAttribute("errorCode", "Server error");
|
||||||
|
request.setAttribute("message", "See the logs for details");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -55,6 +55,6 @@
|
||||||
<bean id="oauthRequestValidator" class="org.mitre.oauth2.token.ScopeServiceAwareOAuth2RequestValidator" />
|
<bean id="oauthRequestValidator" class="org.mitre.oauth2.token.ScopeServiceAwareOAuth2RequestValidator" />
|
||||||
|
|
||||||
<!-- Error page handler. -->
|
<!-- Error page handler. -->
|
||||||
<mvc:view-controller path="/error" view-name="error" />
|
<mvc:view-controller path="/errorview" view-name="error-view" />
|
||||||
|
|
||||||
</beans>
|
</beans>
|
|
@ -4,27 +4,7 @@
|
||||||
<%@ taglib prefix="o" tagdir="/WEB-INF/tags"%>
|
<%@ taglib prefix="o" tagdir="/WEB-INF/tags"%>
|
||||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||||
<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags"%>
|
<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags"%>
|
||||||
<%@page import="org.springframework.security.oauth2.common.exceptions.OAuth2Exception"%>
|
|
||||||
<%
|
|
||||||
|
|
||||||
if (request.getAttribute("error") != null && request.getAttribute("error") instanceof OAuth2Exception) {
|
|
||||||
request.setAttribute("errorCode", ((OAuth2Exception)request.getAttribute("error")).getOAuth2ErrorCode());
|
|
||||||
request.setAttribute("message", ((OAuth2Exception)request.getAttribute("error")).getMessage());
|
|
||||||
} else if (request.getAttribute("javax.servlet.error.exception") != null) {
|
|
||||||
Throwable t = (Throwable)request.getAttribute("javax.servlet.error.exception");
|
|
||||||
request.setAttribute("errorCode", t.getClass().getSimpleName() + " (" + request.getAttribute("javax.servlet.error.status_code") + ")");
|
|
||||||
request.setAttribute("message", t.getMessage());
|
|
||||||
} else if (request.getAttribute("javax.servlet.error.status_code") != null) {
|
|
||||||
Integer code = (Integer)request.getAttribute("javax.servlet.error.status_code");
|
|
||||||
HttpStatus status = HttpStatus.valueOf(code);
|
|
||||||
request.setAttribute("errorCode", status.toString() + " " + status.getReasonPhrase());
|
|
||||||
request.setAttribute("message", request.getAttribute("javax.servlet.error.message"));
|
|
||||||
} else {
|
|
||||||
request.setAttribute("errorCode", "Server error");
|
|
||||||
request.setAttribute("message", "See the logs for details");
|
|
||||||
}
|
|
||||||
|
|
||||||
%>
|
|
||||||
<spring:message code="error.title" var="title"/>
|
<spring:message code="error.title" var="title"/>
|
||||||
<o:header title="${title}" />
|
<o:header title="${title}" />
|
||||||
<o:topbar pageName="Error" />
|
<o:topbar pageName="Error" />
|
||||||
|
@ -38,11 +18,9 @@ if (request.getAttribute("error") != null && request.getAttribute("error") insta
|
||||||
<p>
|
<p>
|
||||||
<spring:message code="error.message"/>
|
<spring:message code="error.message"/>
|
||||||
<blockquote class="text-error"><b><c:out value="${ message }" /></b></blockquote>
|
<blockquote class="text-error"><b><c:out value="${ message }" /></b></blockquote>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<o:footer />
|
<o:footer/>
|
||||||
|
|
|
@ -73,7 +73,7 @@
|
||||||
</jsp-config>
|
</jsp-config>
|
||||||
|
|
||||||
<error-page>
|
<error-page>
|
||||||
<location>/error</location>
|
<location>/errorController</location>
|
||||||
</error-page>
|
</error-page>
|
||||||
|
|
||||||
</web-app>
|
</web-app>
|
||||||
|
|
6
pom.xml
6
pom.xml
|
@ -404,8 +404,8 @@
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>javax.servlet</groupId>
|
<groupId>javax.servlet</groupId>
|
||||||
<artifactId>servlet-api</artifactId>
|
<artifactId>javax.servlet-api</artifactId>
|
||||||
<version>2.5</version>
|
<version>3.0.1</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -671,7 +671,7 @@
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>javax.servlet</groupId>
|
<groupId>javax.servlet</groupId>
|
||||||
<artifactId>servlet-api</artifactId>
|
<artifactId>javax.servlet-api</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>javax.servlet.jsp</groupId>
|
<groupId>javax.servlet.jsp</groupId>
|
||||||
|
|
Loading…
Reference in New Issue