1

我在一个 Java 应用程序中使用带有 Kerberos 模块库 (jcifs-krb5-1.3.17) 的 JCIFS,该应用程序在 Windows KDC 服务器中进行身份验证,然后尝试使用检索到的 Kerberos 票证访问网络上的共享文件夹。

我使用的应用程序与 JCIFS 网站示例 (KerberosAuthExample.java) 中的应用程序相同。

使用JDK1.6时,效果很好。

但是,当我尝试使用 JDK1.7 时,它返回了以下异常:

jcifs.smb.SmbAuthentication:访问被拒绝。

我已经尝试使用从身份验证中检索到的主题作为 PrivilegedAction 执行,但它返回相同的结果。

有人面临同样的问题吗?

你能帮我么?

提前致谢,

斯图奇

4

1 回答 1

0

我们在 jdk7 中读取 Kerberos keytab 路径的方式不同。下面是读取 keytab 的代码,如果我们使用的是 spring security kerberos 扩展。

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 security kerberos 扩展。有关 Spring Security kerberos 的更多详细信息,请阅读由 Peter Mularien 撰写的 Spring Security3 的第 12 章。

于 2013-11-03T04:45:24.290 回答