Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
LinuxSuRen
jenkins
提交
b56a3806
J
jenkins
项目概览
LinuxSuRen
/
jenkins
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jenkins
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b56a3806
编写于
1月 21, 2020
作者:
J
Jeff Thompson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Catch embedded security exceptions.
上级
86382897
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
41 addition
and
5 deletion
+41
-5
core/src/main/java/jenkins/security/ExceptionTranslationFilter.java
...ain/java/jenkins/security/ExceptionTranslationFilter.java
+24
-4
test/src/test/java/jenkins/security/StackTraceSuppressionFilterTest.java
...ava/jenkins/security/StackTraceSuppressionFilterTest.java
+17
-1
未找到文件。
core/src/main/java/jenkins/security/ExceptionTranslationFilter.java
浏览文件 @
b56a3806
/* Copyright 2004, 2005, 2006 Acegi Technology Pty Limited
* Copyright (c) 2020 CloudBees, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
...
...
@@ -41,6 +42,9 @@ import javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpSession
;
import
java.io.IOException
;
import
java.util.Collections
;
import
java.util.IdentityHashMap
;
import
java.util.Set
;
import
java.util.logging.Level
;
import
java.util.logging.Logger
;
...
...
@@ -122,9 +126,9 @@ public class ExceptionTranslationFilter implements Filter, InitializingBean {
catch
(
AuthenticationException
|
AccessDeniedException
ex
)
{
handleException
(
request
,
response
,
chain
,
ex
);
}
catch
(
ServletException
ex
)
{
if
(
ex
.
getRootCause
()
instanceof
AuthenticationException
||
ex
.
getRootCause
()
instanceof
AccessDeniedException
)
{
handleException
(
request
,
response
,
chain
,
(
AcegiSecurityException
)
ex
.
getRootCause
()
);
AcegiSecurityException
securityException
=
containsAccessException
(
ex
);
if
(
securityException
!=
null
)
{
handleException
(
request
,
response
,
chain
,
(
AcegiSecurityException
)
securityException
);
}
else
{
throw
ex
;
...
...
@@ -235,4 +239,20 @@ public class ExceptionTranslationFilter implements Filter, InitializingBean {
public
void
destroy
()
{
}
}
\ No newline at end of file
private
AcegiSecurityException
containsAccessException
(
Exception
exception
)
{
// Guard against malicious overrides of Throwable.equals by
// using a Set with identity equality semantics.
Set
<
Throwable
>
dejaVu
=
Collections
.
newSetFromMap
(
new
IdentityHashMap
<>());
Throwable
currentException
=
exception
;
do
{
dejaVu
.
add
(
currentException
);
if
(
currentException
instanceof
AcegiSecurityException
)
{
return
(
AcegiSecurityException
)
currentException
;
}
currentException
=
currentException
.
getCause
();
}
while
(
currentException
!=
null
&&
!
dejaVu
.
contains
(
currentException
));
return
null
;
}
}
test/src/test/java/jenkins/security/StackTraceSuppressionFilterTest.java
浏览文件 @
b56a3806
...
...
@@ -52,7 +52,7 @@ public class StackTraceSuppressionFilterTest {
}
@Test
public
void
authenticationException
()
throws
Exception
{
public
void
authentication
Manage
Exception
()
throws
Exception
{
j
.
jenkins
.
setSecurityRealm
(
j
.
createDummySecurityRealm
());
j
.
jenkins
.
setAuthorizationStrategy
(
new
MockAuthorizationStrategy
().
grant
(
Jenkins
.
READ
).
everywhere
().
to
(
"alice"
));
User
alice
=
User
.
getById
(
"alice"
,
true
);
...
...
@@ -67,6 +67,22 @@ public class StackTraceSuppressionFilterTest {
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.
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录