更改java的Kerberos票证缓存位置

时间:2015-03-23 11:10:38

标签: java windows hadoop kerberos

我为Windows设置了kerberos,使用hadoop-2.6.0设置了kerberos

提交作业或执行任何用户命令时,Hadoop会从默认位置 c:\ users \ username \ krb5cc_username 引用Kerberos票证缓存。

我想在运行时更改此位置。是否可以更改java的默认属性以从系统中的某个位置引用票证缓存位置。

更新

可以使用以下命令

更改默认位置
kinit -c cache_name username

参考java kinit

但是当我在hadoop上执行任何操作时,它仅对用户信息采用默认票证缓存位置。如何将默认位置更改为用户特定的缓存位置?

非常感谢帮助。

2 个答案:

答案 0 :(得分:3)

我刚刚通过设置以下环境变量来解决问题,

set KRB5CCNAME=ticketlocation

设置上述变量使Hadoop从指定位置获取票证。

答案 1 :(得分:0)

首先,你可以。但你应该问问自己为什么?

打开PrintWriter,构建您的login.conf,在代码中设置JAAS conf文件属性,然后再完成。

以下是示例代码:

PrintWriter writer = new PrintWriter(new FileOutputSteam("..."));
writer.println("client {");
writer.println("com.sun.security.auth.module.Krb5LoginModule required doNotPrompt=true useTicketCache=true");
writer.print("ticketCache=\"");
writer.print(path);
writer.println("\";");
writer.println("};");

System.setProperty("java.security.auth.login.config", ...);

现在应该这样做并使用JAAS来获取缓存的内存呈现。