Spring 在使用引导和cloud foundry时,是否有一种方法将kerberos配置文件外部化?
我遇到了一个类似的问题:。这个解决方案仍然依赖于将conf/keytab文件放在文件系统上或嵌入到应用程序本身中。由于这是一种配置,如果我们不必这样做,这将是理想的Spring 在使用引导和cloud foundry时,是否有一种方法将kerberos配置文件外部化?,spring,spring-boot,kerberos,cloud-foundry,Spring,Spring Boot,Kerberos,Cloud Foundry,我遇到了一个类似的问题:。这个解决方案仍然依赖于将conf/keytab文件放在文件系统上或嵌入到应用程序本身中。由于这是一种配置,如果我们不必这样做,这将是理想的 在使用Cloud Foundry(特别是PCF)时,有没有办法从应用程序中完全外部化此kerberos配置?我认为您在这里没有很多选择。这不是Spring或CloudFoundry需要的,而是JVM。如果JVM通过系统属性或env变量接受Kerberos配置,那么您还有一些其他选项。据我所知,它不->我不确定您尝试向kerbero验
在使用Cloud Foundry(特别是PCF)时,有没有办法从应用程序中完全外部化此kerberos配置?我认为您在这里没有很多选择。这不是Spring或CloudFoundry需要的,而是JVM。如果JVM通过系统属性或env变量接受Kerberos配置,那么您还有一些其他选项。据我所知,它不->我不确定您尝试向kerbero验证哪个应用程序。但我可以用JAAS来验证卡夫卡的身份。keytab文件路径是通过应用程序属性提供的,应用程序属性可以位于操作系统上的任何位置,这意味着它可以从安装到应用程序上的PV(如S3存储)加载。尽管我仍在尝试找到一种将keytab文件上传到存储器的简单方法。请参见下面的示例代码
@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;
}
@Bean
公共KafkajasLoginModule初始值设定项jaasConfig()引发IOException{
setProperty(“java.security.krb5.realm”,krb5_realm);
setProperty(“java.security.krb5.kdc”,krb5_kdc);
kafkajaasLoginModule初始值设定项jaasConfig=新的kafkajaasLoginModule初始值设定项();
jaasConfig.setControlFlag(kafkajaasLoginModule初始值设定项.ControlFlag.REQUIRED);
Map options=newhashmap();
看跌期权(“doNotPrompt”,jass\u config\u doNotPrompt);
看跌期权(“refreshKrb5Config”,jass_config_refreshKrb5Config);
options.put(“com.sun.security.auth.module.Krb5LoginModule”,jass_config_Krb5LoginModule);
options.put(“useKeyTab”,jass\u config\u useKeyTab);
看跌期权(“storeKey”,jass_config_storeKey);
期权.put(“keyTab”,jass\u config\u keyTab);
看跌期权(“委托人”,jass_配置委托人);
jaasConfig.setOptions(选项);
返回jaasConfig;
}
jass\u config\u keyTab可以等同于“/mnt/keyTab storage/mykeytab.keyTab”我认为您在这里没有太多选择。这不是Spring或CloudFoundry需要的,而是JVM。如果JVM通过系统属性或env变量接受Kerberos配置,那么您还有一些其他选项。据我所知,它没有->。很高兴被纠正。你的权利。我希望有人能提出一种创造性的管理方法。例如,使用注入的环境变量或类似的东西从.profile创建此文件。我只是觉得必须有更好的方法。我理解文件是一种要求。鉴于这是一个需求,我正在寻找一种模式/流程,用于根据外部化的配置信息生成此文件。另一个线程建议从配置服务器获取该文件。不过,该选项可能仅限于配置服务器的特定配置(数据库、git等)。仍在寻找更好的选择。