【问题标题】:Storing UserName and Password in a WebApp在 WebApp 中存储用户名和密码
【发布时间】:2019-09-02 22:22:00
【问题描述】:

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

1) 在 HttpSession 对象中?

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2013-12-27
          • 2010-12-27
          • 1970-01-01
          • 2011-08-13
          • 1970-01-01
          • 2011-10-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多