我遇到了类似的问题:Spring Boot Micro-service fails Kerberos Authentication when deployed on Pivotal Cloud Foundry Platform 。该解决方案仍然依赖于文件系统上的conf/keytab 文件或嵌入到该应用程序本身中。由于这是配置,因此如果我们不必这样做,那就太理想了。
使用 Cloud Foundry(特别是 PCF)时,有没有办法从您的应用程序中完全外部化此 kerberos 配置?
最佳答案
我不确定您尝试使用 kerbero 验证哪个应用程序。但我能够使用 JAAS 来对 KAFKA 进行身份验证。 keytab 文件路径是通过应用程序属性提供的,该路径可以位于操作系统上的任何位置,这意味着它可以从安装到应用程序的 PV(例如 S3 存储)加载。尽管我仍在尝试找到一种将 key 表文件上传到存储的简单方法。请参阅下面的示例代码。
@Bean
public KafkaJaasLoginModuleInitializer jaasConfig() throws IOException {
System.setProperty("java.security.krb5.realm", krb5_realm);
System.setProperty("java.security.krb5.kdc", krb5_kdc);
KafkaJaasLoginModuleInitializer jaasConfig = new KafkaJaasLoginModuleInitializer();
jaasConfig.setControlFlag(KafkaJaasLoginModuleInitializer.ControlFlag.REQUIRED);
Map<String, String> options = new HashMap<>();
options.put("doNotPrompt", jass_config_doNotPrompt);
options.put("refreshKrb5Config", jass_config_refreshKrb5Config);
options.put("com.sun.security.auth.module.Krb5LoginModule", jass_config_Krb5LoginModule);
options.put("useKeyTab", jass_config_useKeyTab);
options.put("storeKey", jass_config_storeKey);
options.put("keyTab", jass_config_keyTab);
options.put("principal", jass_config_principal);
jaasConfig.setOptions(options);
return jaasConfig;
}
jass_config_keyTab 可以等于“/mnt/keytabstorage/mykeytab.keytab”
关于spring - 使用 boot 和 cloud foundry 时是否有办法外部化 kerberos 配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48427299/