Spring Security 使用spring Boot 存储oauth凭据

f8rj6qna  于 2023-08-05  发布在  Spring
关注(0)|答案(1)|浏览(115)

oauth客户端在Sping Boot 时从应用程序属性中获取clientId和clientSecret。在示例中,它们总是存储在application.yml资源中。我们将凭据保留在代码库之外,因此这是不可行的。我们也不想让它们进入最终的jar。
这方面的最佳实践是什么?目前,我有一个被黑的主加载一个外部的yml文件:

var app = new SpringApplication(Main.class);
    var ymlProperties = new Properties();
    Arrays.stream(args).filter(a -> a.endsWith(".yml")).forEach(a -> {
        var yml = new Yaml();
        try {
            Map<String, Object> map = yml.load(new FileInputStream(a));
            flattenIntoProperties("", map, ymlProperties);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    });
    System.out.println(ymlProperties);
    app.setDefaultProperties(ymlProperties);
    app.run(args);

字符串
这看起来很奇怪。还有更好的办法吗?

oxosxuxt

oxosxuxt1#

我发现注入--spring.config.location标志使它更简单。这是人们通常做的吗?

public static void main(String[] args) {
    var newArgs = Arrays.stream(args)
            .map(a -> a.charAt(0) != '-' && a.endsWith(".yml") ? "--spring.config.location=file:" + a : a).toList()
            .toArray(new String[0]);
    SpringApplication.run(Main.class, newArgs);
}

字符串

相关问题