作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想指向一个 不同的 krb.conf 文件 , dynamically, without restarting the JVM
.我在 Stackoverflow 上搜索了不同的解决方案,并尝试相应地实现该解决方案。但有些方法,甚至 如果我更新 System.property("java.security.krb5.conf", ...) 指向the new krb.conf file
,JAAS 无法理解这一点,并且仍在使用早期的 conf 文件。以下是我使用代码的解决方案的详细信息:
我的 Jaas.conf 文件如下:
Mutual {
com.sun.security.auth.module.Krb5LoginModule required client=TRUE;
};
sp.kerb.sso.KinitExample {
com.sun.security.auth.module.Krb5LoginModule required
client=TRUE
refreshKrb5Config=true
debug=true;
};
我已经设置了
refreshKrb5Config=true
出于显而易见的原因,因为我想重新加载 krb 配置文件。
import sun.security.krb5.internal.tools.Kinit;
public class KinitExample {
public static void main(String[] args) {
String kerberosFileName = "C:\\Windows\\krb5.ini";
String jaas_config_file_name = "C:\\Users\\User1\\temp\\howrah.jaas.conf";
System.setProperty("java.security.auth.login.config", jaas_config_file_name); // setting the jaas config file
System.setProperty("java.security.krb5.conf" , kerberosFileName); // setting the kerberos file
System.setProperty("java.security.krb5.debug" , "true");
final String administrator = "admin@exampledomain.lab".toUpperCase();
String cacheFileLoc = "C:\\Users\\User1\\temp\\admin.cache";
// Perfoming Kinit ...
Kinit.main(new String[]{"-c",cacheFileLoc, administrator , "Password123" });
kerberosFileName = "C:\\Users\\User2\\temp\\new.krb.conf"; // Using new KRB configuration file
System.setProperty("java.security.krb5.debug" , "true");
System.setProperty("java.security.auth.login.config", jaas_config_file_name); // setting the property again
System.setProperty("java.security.krb5.conf" , kerberosFileName); // setting the property again
System.out.println(System.getProperty("java.security.krb5.conf")); // Prints the updated conf file location.
cacheFileLoc = "C:\\Users\\User2\\temp\\newadmin.cache";
String newAdmin = "administrator@test.lab".toUpperCase();
Kinit.main(new String[]{"-c",cacheFileLoc, newAdmin , "Password123" });
}
}
admin
的缓存是
已创建 ,但缓存为
newAdmin
不是
已创建 因为相应的 krb.conf 文件具有不同的领域并且 JAAS 似乎无法从
连接到领域new.krb.conf 因此失败并显示臭名昭著的 906 错误代码。
最佳答案
您应该拨打 sun.security.krb5.Config.refresh();
为了从新文件重新加载配置。
关于java - 使用 "java.security.krb5.conf"System.property() 更新 kerberors krb.conf 文件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65700955/
我想指向一个 不同的 krb.conf 文件 , dynamically, without restarting the JVM .我在 Stackoverflow 上搜索了不同的解决方案,并尝试相应
我是一名优秀的程序员,十分优秀!