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



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

应用程序是跨平台(Windows/Linux(和"跨数据库"的应用程序(开箱即用,可以与MSSQL和PostgreSQL一起使用,并且可以扩展(。事实上,当在Windows中工作时,它是一个Windows服务,而当在Linux中工作时则是一个守护进程。

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

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

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

有什么建议吗?

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

然而,正如我所说,也许你不能这样做:(但我现在知道任何"跨数据库"加密

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

相关内容

最新更新