c# - 在数据库中存储第三方服务登录名/密码

标签 c# sql-server postgresql .net-core

我的 .NET Core 应用程序需要连接到许多第三方服务。
其中一些服务使用登录/密码凭据,这是一个问题。

应用程序是跨平台 (Windows/Linux) 和“跨数据库”的应用程序(开箱即用,它可以与 MS SQL 和 PostgreSQL 一起使用,并且可以扩展)。实际上,在 Windows 中工作时它是一个 Windows 服务,在 Linux 中工作时它是一个守护进程。

出于可伸缩性的目的,可以运行多个应用程序实例。因此,应用程序设置(包括凭据)存储在数据库中。

问题是如何避免将密码存储为明文。

我不能使用任何特定于平台的解决方案,例如 ProtectedData或凭证管理器。我也不能存储散列密码,因为它们将由第三方服务验证。理论上,如果数据库服务器具有这种能力,我可以使用一些特定于数据库的代码来加密/解密密码。

有什么建议吗?

最佳答案

您可能无法这样做,因为第三方服务需要更改其实现 - 也许您可以使用非对称加密?您将使用特定方的公钥加密密码并将其存储在数据库中。各方将对其进行解密,然后检查凭据。

但是正如我所说,您可能不能那样做 :) 但我现在知道任何“跨数据库”加密

其他方式 - 也许将密码存储在环境变量中? (windows和linux都支持)

关于c# - 在数据库中存储第三方服务登录名/密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53645809/

相关文章:

c# - 设置一个 C# 方法,在第一次失败后尝试重新连接到不同端口上的 SQL Server

postgresql - 在 psql 客户端中使用 LISTEN/NOTIFY

mysql - 获取过去三年内发出请求的所有用户

c# - 我应该使用 AddMvc 还是 AddMvcCore 进行 ASP.NET Core MVC 开发?

c# - 动态创建控件与拖放

sql-server - 无法使用Golang从SQL Server查询数据-获取错误 “Invalid object name”

sql - 存储过程执行另一个存储过程

Django 全文搜索优化 - Postgres

c# - ToList 和 Find 实现

c# - 比较两个 List<int>