从数据库中加载 clientId 和 clientSecret

Load clientId and clientSecret from database

在我的应用程序中(目前它支持google和Facebook登录),clientId和clientSecret存储在application.properties文件中。现在我想将这些详细信息存储在数据库中(他们需要动态更改这些值)。我该怎么做?这是不好的做法吗?

Spring 安全性从 ClientRegistrationRepository 对象中读取 OAuth 客户端信息。默认情况下,它在内存中(Spring引导自动配置一个 InMemoryClientRegistrationRepository bean)并填充了您放入 application.properties 的数据。要从数据库中获取它,您可以实现只有一种方法的 ClientRegistrationRepository 接口:ClientRegistration findByRegistrationId(String registrationId)。在您的实现中,您将使用 registrationId 参数从数据库中获取详细信息,并使用 return 一个 ClientRegistration 对象(ClientRegistrations class 为那)。我建议不要在数据库中以明文形式保存 clientSecret。您可以使用 Spring Security Crypto 模块提供的实用程序之一来 encrypt/decrypt 该值。