java - 在 Spring Boot 中存储和检索密码以形成服务器连接

标签 java spring postgresql hibernate spring-boot

我有一个 spring boot 应用程序,以 postgres 作为数据库,以 hibernate 作为 ORM。该应用程序的功能之一是允许用户保存 HTTP 服务器(不是我的 Spring Boot 应用程序)的凭据(用户名和密码)。之后,用户可以选择将文档上传到服务器。在这种情况下,我的应用程序将从数据库中检索凭据以建立与服务器的连接。

我的问题是:如何安全地存储然后使用服务器密码?如果我存储哈希值,由于没有第二个密码与哈希值匹配,如何使用它登录服务器?

最佳答案

如果 HTTP 服务器不提供某种 token ,您必须以应用程序可以解密的方式将其存储在数据库中。 这不一定是纯文本,但可以是例如使用公钥加密(并且您存储私钥以将其解密在您的应用程序中或至少与应用程序捆绑在一起)。 这样做至少只能访问数据库的人无法使用该信息来访问 HTTP 服务器,但您必须保护您的应用程序(或私钥)。

参见例如在这里https://en.wikipedia.org/wiki/Public-key_cryptography举些例子。 Java 提供了开箱即用所需的一切,请参见例如举个例子:https://www.mkyong.com/java/java-asymmetric-cryptography-example/ .

关于java - 在 Spring Boot 中存储和检索密码以形成服务器连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59289887/

相关文章:

java - 使用mockito的空指针问题

java - 循环在列表循环内创建行

java - 使用 Jackson 将对象序列化为 XML

spring - 停止tomcat时使用spring服务获取java.io.NotSerializableException

java - Spring MVC 带注释的 Controller

sql - 如果使用 Jdbc 在 PostgreSQL 中有太多行,如何停止大型查询?

java - Postgres 中的 NamedParameterJdbcTemplate 和 JSON

sql - 如何仅按日期从 postgres 的时间戳列中选择?

java - Apache Flink(集群中的标准输出错误)

java - 对于 DocumentSnapshot 类型,错误 foreach 不适用于类型意味着什么?