Java无法从Linux客户端的缓存中获取TGT
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java无法从Linux客户端的缓存中获取TGT,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2212字,纯文字阅读大概需要4分钟。
内容图文
![Java无法从Linux客户端的缓存中获取TGT](/upload/InfoBanner/zyjiaocheng/958/7562970493d24cf68616d1137da196c5.jpg)
我在RHEL5.5中设置了Kerberos服务器和OpenLDAP.我还有一台RHEL6机器作为客户端.我使用jaas运行我的Java程序,从Linux客户端查询OpenLDAP服务器.
如果我将客户端的密钥表复制到客户端计算机并使用以下配置选项,我可以查询OpenLDAP服务器:
principal=wpingli
useKeyTab=true
keyTab="/home/wpingli/ker/java/wpingli_new.keytab";
如果系统提示我输入用户名/密码,我也可以查询OpenLDAP服务器.这让我相信我的环境还可以.
但是,如果我在kinit之后运行我的Java程序,我将无法查询服务器:
klist
[wpingli@pli java]$klist
Ticket cache: FILE:/tmp/krb5cc_500
Default principal: wpingli@XX.COM
Valid starting Expires Service principal
10/20/11 16:18:06 10/21/11 16:18:02 krbtgt/XX.COM@XX.COM
jaas configuration
GssExampleSUN{
com.sun.security.auth.module.Krb5LoginModule required
client=true
debug=true
doNotPrompt=true
useTicketCache=true
ticketCache="/tmp/krb5cc_500";
};
Exception:
Debug is true storeKey false useTicketCache true useKeyTab false doNotPrompt true ticketCache is /tmp/krb5cc_500 isInitiator true KeyTab is null refreshKrb5Config is false principal is null tryFirstPass is false useFirstPass is false storePass is false clearPass is false
Acquire TGT from Cache
Principal is null
**null credentials from Ticket Cache
[Krb5LoginModule] authentication failed
Unable to obtain Princpal Name for authentication
Authentication attempt failedjavax.security.auth.login.LoginException: Unable to obtain Princpal Name for authentication**
我怎样才能解决这个问题?
解决方法:
Java不一定支持(大概是MIT)kinit(libkrb5)支持的所有加密类型.
可以在krb5.conf文件中配置libkrb5使用的加密类型(通常在/ etc中).例如(不一定是最安全的):
# default_tgs_enctypes = aes256-cts arcfour-hmac-md5 des3-hmac-sha1 des-cbc-crc des-cbc-md5
default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc des-cbc-md5
# default_tkt_enctypes = aes256-cts arcfour-hmac-md5 des3-hmac-sha1 des-cbc-crc des-cbc-md5
default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc des-cbc-md5
# permitted_enctypes = aes256-cts arcfour-hmac-md5 des3-hmac-sha1 des-cbc-crc des-cbc-md5
permitted_enctypes = des3-hmac-sha1 des-cbc-crc des-cbc-md5
支持哪种加密类型取决于JRE供应商/版本及其安全提供程序.
以下是Java 6(Oracle JRE)文档的链接:
> http://download.oracle.com/javase/6/docs/technotes/guides/security/jgss/jgss-features.html
内容总结
以上是互联网集市为您收集整理的Java无法从Linux客户端的缓存中获取TGT全部内容,希望文章能够帮你解决Java无法从Linux客户端的缓存中获取TGT所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。