Хранение имени пользователя и пароля в веб-приложении

У меня есть приложение SpringBoot 2.1.4.RELEASE RESTful Web Service, использующее Spring Initializer, встроенный Tomcat, шаблонизатор Thymeleaf и пакет в качестве исполняемого файла JAR, который использует сторонний REST API, защищенный JWT, поэтому мне нужно храните в WebApp простое имя пользователя и пароль для аутентификации в API, и я хотел бы знать, как лучше хранить учетные данные

1) в объекте HttpSession?

2) в БД как план текста?

3 ответа

Решение

Управление секретами должно осуществляться вне приложения, желательно с помощью сторонних продуктов / API, поскольку создание нашей собственной надежной системы управления секретами может быть затруднительным.

Одним из таких популярных и надежных продуктов для секретного управления является HashiCorp Vault.

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

Как и другие говорили, что лучше не хранить секреты в приложении.

Чтобы избежать сохранения каких-либо учетных данных пользователя, вы можете использовать стратегию, аналогичную OAuth2, где клиент запрашивает токен JWT непосредственно у провайдера API (обычно это логика Javascript в вашем интерфейсе), затем будущие клиентские запросы к вашему приложению передают токен JWT, который вы можете использовать для отправки запросов на API.

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

Лучшая практика не хранить в вашем приложении. Это интересный подход, если вы размещаете свое приложение на AWS. https://medium.com/poka-techblog/the-best-way-to-store-secrets-in-your-app-is-not-to-store-secrets-in-your-app-308a6807d3ed

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