我在一个Java应用程序中使用带有Kerberos模块库( JCIFS -krb5-1.3.17)的jcifs,该应用程序在Windows KDC Server中进行身份验证,然后尝试使用检索到的Kerberos票证访问网络上的共享文件夹。
我正在使用的应用程序与JCIFS网站示例(KerberosAuthExample.java)中的应用程序相同。
当使用JDK1.6时,它运行得非常完美。
但是,当我尝试使用JDK1.7时,它返回了以下异常:
jcifs.smb.SmbAuthentication:访问被拒绝.
我已经尝试使用从身份验证中检索的主题作为PrivilegedAction执行,但是它返回相同的结果。
有人面临同样的问题吗?
你能帮帮我吗?
提前谢谢你,
斯图奇
发布于 2013-11-03 04:45:24
在jdk7中,我们读取Kerberos路径的方式是不同的。下面是读取keytab的代码,如果我们使用扩展。
String keyTabPath = this.keyTabLocation.getURL().toExternalForm();
if (runtimeVersion.startsWith("1.7"))
{
if (keyTabPath.startsWith("file:"))
{
keyTabPath = keyTabPath.substring(5);
}
}有关代码详细信息,请阅读SunJaasKerberosTicketValidator:afterPropertiesSet()
JCIFS项目没有活动(上一次发布是在2011年),我也不确定它是否基于JAAS标准(javax.security.auth)。
最好尝试spring安全kerberos扩展。有关security的更多信息,请阅读Spring Security3-由Peter Mularien撰写的第12章。
https://stackoverflow.com/questions/19728488
复制相似问题