如何在SQL Server数据库中安全地存储API凭据?

时间:2016-05-10 00:44:02

标签: c# sql-server cryptography

在我的Windows服务中,我需要能够检索存储在同一网络上的SQL Server 2012数据库中的第三方REST API的凭据。我的每个客户都可能分配了不同的API凭据。例如:

Customer Name | API ID | API Password In Plain Text
-----------------------------------------------------
Customer 1      1234     somepassword
Customer 2      1234     somepassword
Customer 3      5678     anotherpassword

在此服务的第一次迭代中,所有客户都使用相同的API凭据,并使用SectionInformation.ProtectSection在Windows服务的app.config中加密。

我只使用.NET框架提供的加密/解密方法并将该值存储在数据库中吗?例如,这里提供的解决方案之一:Encrypting & Decrypting a String in C#?我可以研究任何建议或其他解决方案吗?

1 个答案:

答案 0 :(得分:1)

正如@SyntaxGoonoo所建议的,我计划使用数据保护API(DAPI)提供的ProtectedData Class。我将DataProtectionScope设置为与Windows服务关联的CurrentUser运行,以解密来自SQL数据库的凭据。我可能不得不制作另一个加密凭证并将其存储在数据库中的应用程序(使用相同的用户上下文)。

这里有一些额外的资源: