2

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

1) 在 HttpSession 对象中?

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

4

3 回答 3

2

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

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

由于您已经在使用 Spring,因此请参阅这篇关于如何将 vault 用于机密管理的优秀文章。

于 2019-04-18T11:06:35.553 回答
1

就像其他人所说的那样,最好不要在应用程序中存储秘密。

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

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

于 2019-04-20T15:36:38.900 回答
0

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

于 2019-04-17T00:40:33.250 回答