Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 在使用引导和cloud foundry时,是否有一种方法将kerberos配置文件外部化?_Spring_Spring Boot_Kerberos_Cloud Foundry - Fatal编程技术网

Spring 在使用引导和cloud foundry时,是否有一种方法将kerberos配置文件外部化?

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验

我遇到了一个类似的问题:。这个解决方案仍然依赖于将conf/keytab文件放在文件系统上或嵌入到应用程序本身中。由于这是一种配置,如果我们不必这样做,这将是理想的


在使用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等)。仍在寻找更好的选择。