我正在设置客户端并使用Java客户端连接到多个启用Kerberos的系统。
使用UserGroupInformation
。如果使用其他领域,Java客户端总是选择default_realm
并抛出错误。
是否可以使用不同的键盘和不同的主体连接,但使用相同的krb5.conf
?
/etc/krb5.conf
:
[libdefaults]
default_realm = NEW.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 1d
renew_lifetime = 7d
forwardable = true
[realms]
NEW.COM = {
kdc = bharath.kdc
admin_server = bharath.kdc
}
EXAMPLE.COM = {
kdc = wckdserver.krbnet
admin_server = wckdserver.krbnet
}
答案 0 :(得分:1)
您可以使用以下格式的jaas配置文件控制使用哪个keytab:
client {
com.sun.security.auth.module.Krb5LoginModule required
refreshKrb5Config=true
useKeyTab=true
keyTab="<path to keytab>"
principal="<user>@<realm>";
};
此配置文件使用系统属性设置:
-Djava.security.auth.login.config=<path to jaas config>
如果要在单次运行VM期间更改设置,则需要清除VM中的缓存用户配置:
Configuration.setConfiguration(null);
要使用不同的领域,您需要指定以下属性的 :
-Djava.security.krb5.realm=<realm>
-Djava.security.krb5.kdc=<kdc>
答案 1 :(得分:1)
您可以在JAAS配置文件中有两个(或更多)部分用于不同的keytab文件,如下所示:
com.sun.security.jgss.krb5.accept {
com.sun.security.auth.module.Krb5LoginModule required
principal="user1@DOMAIN1.COM" useKeyTab=true
keyTab="C:\\Oracle\\Middleware12.1.1\\MyDomain\\domain1_keytab" storeKey=true;
com.sun.security.auth.module.Krb5LoginModule required
principal="user2@DOMAIN2.COM" useKeyTab=true
keyTab="C:\\Oracle\\Middleware12.1.1\\MyDomain\\domain2_keytab" storeKey=true;
};
您可能需要从配置文件中删除所有领域信息。然后,当您更改此系统设置时:
System.setProperty("sun.security.krb5.principal", "userX@DOMAINX.COM");
其中&#34; X&#34;应该替换为1或2,您可以使Kerberos选择不同的keytab文件。
系统将根据&#34; sun.security.krb5.principal&#34;在JAAS配置中搜索相关部分。设置并将使用此主体及其相应的密钥表进行Kerberos身份验证。
答案 2 :(得分:0)
要配置多个领域,请将krb5.conf
设置为:
[libdefaults]
default_realm = XYZ.LOCAL
[realms]
XYZ.LOCAL = {
kdc = abc.xyz.local
default_domain = XYZ.LOCAL
}
SECOND.NET = {
kdc = abc.second.net
}
[domain_realm]
.xyz.local = .XYZ.LOCAL
xyz.local = XYZ.LOCAL
.second.net = .SECOND.NET
second.net = SECOND.NET
答案 3 :(得分:0)
我的用例略有不同,但分享是因为它听起来非常相似,所以这可能适合你。
添加到 krb5.conf:
[domain_realm]
.example.com = EXAMPLE.COM
然后当您连接到 *.example.com 时,它将使用EXAMPLE.COM 领域而不是默认领域。
更多信息:https://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/krb5_conf.html#domain-realm