2016-05-10 2 views
4

В моей службе Windows мне нужно получить учетные данные для стороннего REST API, который хранится в моей базе данных SQL Server 2012, находящейся в той же сети. У каждого из моих клиентов могут быть разные учетные данные API, назначенные им. Например:Как безопасно хранить учетные данные API в базе данных SQL Server?

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

В первой итерации этого сервиса, все клиенты использовали один и тот же API учетных данных и он был зашифрован в app.config службы Windows с помощью SectionInformation.ProtectSection.

Я просто использую один метод шифрования/расшифровки, предоставляемый платформой .NET, и сохранить это значение в базе данных? Например, один из предложенных здесь решений: Encrypting & Decrypting a String in C#? Любые предложения или другие решения, которые я могу изучить?

+0

Может быть, посмотреть на использование MS ProtectedData Class - https://msdn.microsoft.com/en-us/library/system.security.cryptography .protecteddata (v = vs.110) .aspx – SyntaxGoonoo

+0

Для хранения паролей используйте что-то вроде PBKDF2. – ProXicT

ответ

1

Как было предложено @SyntaxGoonoo, я планирую использовать ProtectedData Class, предоставляемый API защиты данных (DAPI). Я установил DataProtectionScope для запуска в качестве CurrentUser, связанного с сервисом Windows, для дешифрования учетных данных из базы данных SQL. Мне, вероятно, придется сделать еще одно приложение, которое шифрует учетные данные и сохраняет его в базе данных (используя тот же контекст пользователя).

Вот некоторые дополнительные ресурсы:

Смежные вопросы