在使用Java GSS-API和Kerberos时,如何为多个用户主体指定基于键表的登录信息?
我正在使用Java GSS-API和Kerberos进行安全身份验证。我想从一个客户端程序连接到两个不同的KDC服务器,以访问多个服务。为此,我使用配置文件krb5.conf,如下所示:在使用Java GSS-API和Kerberos时,如何为多个用户主体指定基于键表的登录信息?,java,kerberos,gssapi,Java,Kerberos,Gssapi,我正在使用Java GSS-API和Kerberos进行安全身份验证。我想从一个客户端程序连接到两个不同的KDC服务器,以访问多个服务。为此,我使用配置文件krb5.conf,如下所示: [libdefaults] default_realm = HOST1 udp_preference_limit = 1 [realms] HOST1 = { kdc = host1:88 } HOST2 = { kdc = host2:88 } com.sun.security.jgss.i
[libdefaults]
default_realm = HOST1
udp_preference_limit = 1
[realms]
HOST1 = {
kdc = host1:88
}
HOST2 = {
kdc = host2:88
}
com.sun.security.jgss.initiate {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab=user.keytab
principal="user1@LOCALHOST"
storeKey=true;
};
com.sun.security.jgss.accept {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab=service.keytab
principal="service1@LOCALHOST"
storeKey=true;
};
对于登录,我使用基于keytab的登录,配置如下所示:
[libdefaults]
default_realm = HOST1
udp_preference_limit = 1
[realms]
HOST1 = {
kdc = host1:88
}
HOST2 = {
kdc = host2:88
}
com.sun.security.jgss.initiate {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab=user.keytab
principal="user1@LOCALHOST"
storeKey=true;
};
com.sun.security.jgss.accept {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab=service.keytab
principal="service1@LOCALHOST"
storeKey=true;
};
此配置要求在配置文件中提及原则名称。现在的问题是,我们只能在配置中指定一个主体名称,但我想访问需要登录多个主体名称的多个服务。如何为多个用户主体指定登录信息?您正在为每个部分使用默认名称(顺便说一下,还有一个过时的名称)。您可以从使用显式名称开始,比如卡夫卡——即
Client{…;};服务器{…;}然后您需要显式地管理不同的“Subject”,并为每个“Subject”您“doa”的操作指定fi。祝你玩得开心。@SamsonScharfrichter谢谢你的回复。如果我们为这些配置节使用自定义名称,那么我们如何通过GSSAPI使用它们呢。你能提供示例代码吗?