在 WebApp 中存储用户名和密码

Storing UserName and Password in a WebApp

我有一个 SpringBoot 2.1.4.RELEASE RESTful Web 服务应用程序,使用 Spring 初始化程序,嵌入 Tomcat,Thymeleaf 模板引擎,并打包为可执行 JAR 文件,它使用由 JWT 保护的第三方 REST API,因此我需要在 WebApp 中存储普通用户名和密码以向 API 进行身份验证,我会想知道保留凭据的最佳做法是什么

1) 在 HttpSession 对象中 ?

2) 在数据库中作为计划文本?

最佳做法是不要存储在您的应用中。如果您在 AWS 上托管您的应用程序,这是一种有趣的方法。 https://medium.com/poka-techblog/the-best-way-to-store-secrets-in-your-app-is-not-to-store-secrets-in-your-app-308a6807d3ed

机密管理应该在应用程序外部完成,最好借助第三方产品/API,因为创建我们自己的强大机密可能很麻烦管理系统.

HashiCorp Vault 是一款如此流行且强大的秘密管理产品。

由于您已经在使用 Spring 请参阅 this excellent article 了解如何使用保险库进行机密管理。

正如其他人所说,最好不要在应用程序中存储秘密。

为了避免存储任何用户凭据,您可以使用类似于 OAuth2 的策略,其中客户端直接从 API 提供程序(通常是前端的 Javascript 逻辑)请求 JWT 令牌,然后将来客户端对您的应用程序的请求会传递 JWT 令牌,您可以使用该令牌对 API.

发出请求

通过这种方式,所有用户凭据仅存储在客户端,仅允许您的应用程序访问 JWT 令牌,该令牌可能会在一段时间后过期。