В java spring, как лучше всего «изменить секрет в производстве»?

В настоящее время я создаю приложение Java Spring, которое работает с Spring Security JWT. Везде я смотрю и читаю про "секретную строку", там написано должно быть изменено в производстве. Нравится эта строка в моем приложение.свойства: security.jwt.secret = "this-is-a-512-bit-key-used-for-signing-jwt-tokens-that-should-be-changed-production"

А также в вопросе stackoverflow, который вроде как связан с этим здесь: Как включить секрет jwt в application.yaml для Java Spring.

Мой вопрос: какой должна быть эта строка в производстве? Должен ли я генерировать это где-то в классе SecurityConfig? Или мне следует сгенерировать 512-битную строку и просто вставить ее в файл application.properties?

Заранее спасибо.

Прошло некоторое время с тех пор, как я в последний раз делал это, но, если я правильно помню, секрет для каждого экземпляра, то есть вы создаете строку и вставляете ее в файл свойств. По сути, у JWT есть подпись, зашифрованная с помощью секрета, и если у вас нет секрета, вы не можете его расшифровать. Он используется для проверки содержимого JWT.

Marko Taht 07.05.2022 00:02
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
63
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Один из способов изменить свойства приложения Spring — использовать Spring Cloud Config. В основном ваша конфигурация находится в репозитории GitHub, и как только вы изменяете, облачный сервер конфигурации Spring распространяет ее на другие приложения, ссылаясь на нее через application.properties.

https://cloud.spring.io/spring-cloud-config/reference/html/

Я поделюсь, как это было сделано в нашем приложении, которое я считаю одним из стандартных способов хранения учетных данных. Могут быть и альтернативные пути.

  1. Не идеально хранить токен или учетные данные в свойствах.
  2. Мы можем перенести токен в Vault или на сервер конфигурации.
  3. когда сервер запускает весеннее приложение, оно может получить свойства
  4. Доступ к хранилищу контролируется

Поскольку у нас есть разные серверы хранилища в разных средах, мы можем хранить и изменять токен во время выполнения и обновлять приложение.

Что касается генерации токена jwt, он должен иметь определенный срок действия и периодически обновляться.

Ответ принят как подходящий

Секреты не следует добавлять в ваш обычный файл application.properties, потому что это будет проверено в вашей системе контроля версий. Существуют различные способы внешняя конфигурация, но проще всего определить переменные среды.

В вашем случае вам понадобится переменная среды с именем SECURITY_JWT_SECRET, и Spring Boot подберет ее автоматически.

Любая идея, где я должен хранить такую ​​переменную среды? Я разворачиваю приложение на Heroku, мне его потом туда ставить?

Davrozz 08.05.2022 10:24

Да. См. devcenter.heroku.com/articles/…

Wim Deblauwe 09.05.2022 18:05

Другие вопросы по теме