在WebApp中存储用户名和密码

时间:2019-04-12 07:42:12

标签: rest spring-boot app-secret secret-manager

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

1)在HttpSession对象中?

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

3 个答案:

答案 0 :(得分:2)

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

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

由于您已经在使用Spring,因此请参考this excellent article,了解如何将保管库用于秘密管理。

答案 1 :(得分:1)

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

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

这样,所有用户凭据仅存储在客户端,仅使您的应用程序可以访问JWT令牌,该令牌可能会在一段时间后失效。

答案 2 :(得分:0)

The best practice is not to store in your app. This is a interesting approach if you are hosting your app on AWS. https://medium.com/poka-techblog/the-best-way-to-store-secrets-in-your-app-is-not-to-store-secrets-in-your-app-308a6807d3ed