在javaspring,如何最好"change secret in production"?
In java spring, how to best "change secret in production"?
我目前正在创建一个与 spring 安全 JWT 一起工作的 Java Spring 应用程序。我到处查看和阅读“秘密字符串”,它说应该 在生产中更改 。就像我的 application.properties 中的这一行:security.jwt.secret="this-is-a-512-bit-key-used-for-signing-jwt-tokens-that-should-be-changed-production"
以及在 Whosebug 问题中与此相关的问题:。
我的问题是,该字符串在生产中应该变成什么?我应该在 SecurityConfig class 的某处生成它吗?或者我应该生成一个 512 位的字符串并将其粘贴到 application.properties 文件中吗?
提前致谢。
更改 spring 应用程序属性的一种方法是使用 Spring Cloud Config。基本上,您的配置位于 GitHub 存储库中,一旦您修改,Spring 云配置服务器就会将其传播到通过 application.properties.
引用它的其他应用程序
我将分享它是如何在我们的应用程序中完成的,我认为这是存储凭据的标准方式之一。
可能还有其他方法。
- 在属性中存储令牌或凭据并不理想
- 我们可以将令牌外部化到 Vault 或配置服务器中
- 当服务器启动时spring应用程序可以获取属性
- 对保管库的访问受到控制
由于我们在不同环境中拥有不同的保管库服务器,因此我们可以在运行时存储和更改令牌并刷新应用程序。
关于生成 jwt 令牌,它应该有一些到期时间并定期刷新。
Secrets 不应添加到您的常规 application.properties
文件中,因为这会被检查到您的版本控制系统中。 externalize configuration 有多种方法,但最简单的通常是定义环境变量。
在您的情况下,您需要一个名为 SECURITY_JWT_SECRET
的环境变量,Spring Boot 会自动选择它。
我目前正在创建一个与 spring 安全 JWT 一起工作的 Java Spring 应用程序。我到处查看和阅读“秘密字符串”,它说应该 在生产中更改 。就像我的 application.properties 中的这一行:security.jwt.secret="this-is-a-512-bit-key-used-for-signing-jwt-tokens-that-should-be-changed-production"
以及在 Whosebug 问题中与此相关的问题:
我的问题是,该字符串在生产中应该变成什么?我应该在 SecurityConfig class 的某处生成它吗?或者我应该生成一个 512 位的字符串并将其粘贴到 application.properties 文件中吗?
提前致谢。
更改 spring 应用程序属性的一种方法是使用 Spring Cloud Config。基本上,您的配置位于 GitHub 存储库中,一旦您修改,Spring 云配置服务器就会将其传播到通过 application.properties.
引用它的其他应用程序我将分享它是如何在我们的应用程序中完成的,我认为这是存储凭据的标准方式之一。 可能还有其他方法。
- 在属性中存储令牌或凭据并不理想
- 我们可以将令牌外部化到 Vault 或配置服务器中
- 当服务器启动时spring应用程序可以获取属性
- 对保管库的访问受到控制
由于我们在不同环境中拥有不同的保管库服务器,因此我们可以在运行时存储和更改令牌并刷新应用程序。
关于生成 jwt 令牌,它应该有一些到期时间并定期刷新。
Secrets 不应添加到您的常规 application.properties
文件中,因为这会被检查到您的版本控制系统中。 externalize configuration 有多种方法,但最简单的通常是定义环境变量。
在您的情况下,您需要一个名为 SECURITY_JWT_SECRET
的环境变量,Spring Boot 会自动选择它。