【发布时间】:2021-07-21 17:25:08
【问题描述】:
在我的应用程序中(目前它支持google和Facebook登录),clientId和clientSecret存储在application.properties文件中。现在我想将这些详细信息存储在数据库中(他们需要动态更改这些值)。我该怎么做?这是不好的做法吗?
【问题讨论】:
标签: spring-boot spring-security oauth-2.0 spring-security-oauth2
在我的应用程序中(目前它支持google和Facebook登录),clientId和clientSecret存储在application.properties文件中。现在我想将这些详细信息存储在数据库中(他们需要动态更改这些值)。我该怎么做?这是不好的做法吗?
【问题讨论】:
标签: spring-boot spring-security oauth-2.0 spring-security-oauth2
Spring Security 从 ClientRegistrationRepository 对象中读取 OAuth 客户端信息。默认情况下,它在内存中(SpringBoot 自动配置一个InMemoryClientRegistrationRepository bean)并使用您放入application.properties 的数据填充。要从数据库中获取它,您可以实现ClientRegistrationRepository 接口,该接口只有一种方法:ClientRegistration findByRegistrationId(String registrationId)。在您的实现中,您将使用registrationId 参数从数据库中获取详细信息并返回一个ClientRegistration 对象(ClientRegistrations 类为此提供了一个构建器)。我建议不要将 clientSecret 以明文形式保存在数据库中。您可以使用Spring Security Crypto 模块提供的实用程序之一来加密/解密该值。
【讨论】: