diff --git a/core/src/main/java/jenkins/security/ExceptionTranslationFilter.java b/core/src/main/java/jenkins/security/ExceptionTranslationFilter.java index a95e2e23fd..21c0502c03 100644 --- a/core/src/main/java/jenkins/security/ExceptionTranslationFilter.java +++ b/core/src/main/java/jenkins/security/ExceptionTranslationFilter.java @@ -126,9 +126,8 @@ public class ExceptionTranslationFilter implements Filter, InitializingBean { catch (AuthenticationException | AccessDeniedException ex) { handleException(request, response, chain, ex); } catch (ServletException ex) { - AcegiSecurityException securityException = containsAccessException(ex); - if (securityException != null) { - handleException(request, response, chain, (AcegiSecurityException) securityException); + if (ex.getRootCause() instanceof AuthenticationException || ex.getRootCause() instanceof AccessDeniedException) { + handleException(request, response, chain, (AcegiSecurityException) ex.getRootCause()); } else { throw ex; diff --git a/test/src/test/java/jenkins/security/StackTraceSuppressionTest.java b/test/src/test/java/jenkins/security/StackTraceSuppressionTest.java index b991ec009f..1d96da3956 100644 --- a/test/src/test/java/jenkins/security/StackTraceSuppressionTest.java +++ b/test/src/test/java/jenkins/security/StackTraceSuppressionTest.java @@ -80,22 +80,6 @@ public class StackTraceSuppressionTest { assertThat(content, not(containsString("Caused by"))); } - @Test - public void authenticationConfigureSecurityException() throws Exception { - j.jenkins.setSecurityRealm(j.createDummySecurityRealm()); - j.jenkins.setAuthorizationStrategy(new MockAuthorizationStrategy().grant(Jenkins.READ).everywhere().to("alice")); - User alice = User.getById("alice", true); - JenkinsRule.WebClient wc = j.createWebClient(); - wc.login(alice.getId()); - - wc.setThrowExceptionOnFailingStatusCode(false); - HtmlPage page = wc.goTo("configureSecurity"); - - String content = page.getWebResponse().getContentAsString(); - assertThat(content, containsString(alice.getId() + " is missing the Overall/Administer permission")); - assertThat(content, not(containsString("Caused by"))); - } - @Test public void nonexistentAdjunct() throws Exception { /* This test belongs in Stapler but it's easy to put it together here.