Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
889c3127
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
889c3127
编写于
4月 07, 2011
作者:
W
weijun
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
7032354: no-addresses should not be used on acceptor side
Reviewed-by: valeriep
上级
dfffbd5f
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
104 addition
and
23 deletion
+104
-23
src/share/classes/sun/security/krb5/KrbApReq.java
src/share/classes/sun/security/krb5/KrbApReq.java
+14
-20
test/sun/security/krb5/auto/KDC.java
test/sun/security/krb5/auto/KDC.java
+9
-3
test/sun/security/krb5/auto/NoAddresses.java
test/sun/security/krb5/auto/NoAddresses.java
+81
-0
未找到文件。
src/share/classes/sun/security/krb5/KrbApReq.java
浏览文件 @
889c3127
/*
* Copyright (c) 2000, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 201
1
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -37,6 +37,7 @@ import sun.security.krb5.internal.rcache.*;
import
java.net.InetAddress
;
import
sun.security.util.*
;
import
java.io.IOException
;
import
java.util.Arrays
;
/**
* This class encapsulates a KRB-AP-REQ that a client sends to a
...
...
@@ -54,9 +55,6 @@ public class KrbApReq {
private
static
CacheTable
table
=
new
CacheTable
();
private
static
boolean
DEBUG
=
Krb5
.
DEBUG
;
// default is address-less tickets
private
boolean
KDC_EMPTY_ADDRESSES_ALLOWED
=
true
;
/**
* Contructs a AP-REQ message to send to the peer.
* @param tgsCred the <code>Credentials</code> to be used to construct the
...
...
@@ -312,22 +310,18 @@ public class KrbApReq {
table
.
put
(
client
,
time
,
currTime
.
getTime
());
}
// check to use addresses in tickets
if
(
Config
.
getInstance
().
useAddresses
())
{
KDC_EMPTY_ADDRESSES_ALLOWED
=
false
;
}
// sender host address
HostAddress
sender
=
null
;
if
(
initiator
!=
null
)
{
sender
=
new
HostAddress
(
initiator
);
// sender host address
HostAddress
sender
=
new
HostAddress
(
initiator
);
if
(
enc_ticketPart
.
caddr
!=
null
&&
!
enc_ticketPart
.
caddr
.
inList
(
sender
))
{
if
(
DEBUG
)
{
System
.
out
.
println
(
">>> KrbApReq: initiator is "
+
sender
.
getInetAddress
()
+
", but caddr is "
+
Arrays
.
toString
(
enc_ticketPart
.
caddr
.
getInetAddresses
()));
}
if
(
sender
!=
null
||
!
KDC_EMPTY_ADDRESSES_ALLOWED
)
{
if
(
enc_ticketPart
.
caddr
!=
null
)
{
if
(
sender
==
null
)
throw
new
KrbApErrException
(
Krb5
.
KRB_AP_ERR_BADADDR
);
if
(!
enc_ticketPart
.
caddr
.
inList
(
sender
))
throw
new
KrbApErrException
(
Krb5
.
KRB_AP_ERR_BADADDR
);
}
}
...
...
test/sun/security/krb5/auto/KDC.java
浏览文件 @
889c3127
/*
* Copyright (c) 2008, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2008, 201
1
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -691,7 +691,10 @@ public class KDC {
new
KerberosTime
(
new
Date
()),
body
.
from
,
till
,
body
.
rtime
,
body
.
addresses
,
body
.
addresses
!=
null
// always set caddr
?
body
.
addresses
:
new
HostAddresses
(
new
InetAddress
[]{
InetAddress
.
getLocalHost
()}),
null
);
EncryptionKey
skey
=
keyForUser
(
body
.
sname
,
e3
,
true
);
if
(
skey
==
null
)
{
...
...
@@ -716,7 +719,10 @@ public class KDC {
till
,
body
.
rtime
,
body
.
crealm
,
body
.
sname
,
body
.
addresses
body
.
addresses
!=
null
// always set caddr
?
body
.
addresses
:
new
HostAddresses
(
new
InetAddress
[]{
InetAddress
.
getLocalHost
()})
);
EncryptedData
edata
=
new
EncryptedData
(
ckey
,
enc_part
.
asn1Encode
(),
KeyUsage
.
KU_ENC_TGS_REP_PART_SESSKEY
);
TGSRep
tgsRep
=
new
TGSRep
(
null
,
...
...
test/sun/security/krb5/auto/NoAddresses.java
0 → 100644
浏览文件 @
889c3127
/*
* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* @test
* @bug 7032354
* @run main/othervm NoAddresses 1
* @run main/othervm NoAddresses 2
* @run main/othervm/fail NoAddresses 3
* @summary no-addresses should not be used on acceptor side
*/
import
java.net.InetAddress
;
import
org.ietf.jgss.ChannelBinding
;
import
sun.security.jgss.GSSUtil
;
import
sun.security.krb5.Config
;
public
class
NoAddresses
{
public
static
void
main
(
String
[]
args
)
throws
Exception
{
OneKDC
kdc
=
new
OneKDC
(
null
);
kdc
.
writeJAASConf
();
KDC
.
saveConfig
(
OneKDC
.
KRB5_CONF
,
kdc
,
"noaddresses = false"
,
"default_keytab_name = "
+
OneKDC
.
KTAB
);
Config
.
refresh
();
Context
c
=
Context
.
fromJAAS
(
"client"
);
Context
s
=
Context
.
fromJAAS
(
"server"
);
c
.
startAsClient
(
OneKDC
.
SERVER
,
GSSUtil
.
GSS_KRB5_MECH_OID
);
s
.
startAsServer
(
GSSUtil
.
GSS_KRB5_MECH_OID
);
InetAddress
initiator
=
InetAddress
.
getLocalHost
();
InetAddress
acceptor
=
InetAddress
.
getLocalHost
();
switch
(
args
[
0
])
{
case
"1"
:
// no initiator host address available, should be OK
break
;
case
"2"
:
// correct initiator host address, still fine
c
.
x
().
setChannelBinding
(
new
ChannelBinding
(
initiator
,
acceptor
,
null
));
s
.
x
().
setChannelBinding
(
new
ChannelBinding
(
initiator
,
acceptor
,
null
));
break
;
case
"3"
:
// incorrect initiator host address, fail
initiator
=
InetAddress
.
getByAddress
(
new
byte
[]{
1
,
1
,
1
,
1
});
c
.
x
().
setChannelBinding
(
new
ChannelBinding
(
initiator
,
acceptor
,
null
));
s
.
x
().
setChannelBinding
(
new
ChannelBinding
(
initiator
,
acceptor
,
null
));
break
;
}
Context
.
handshake
(
c
,
s
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录