2009-08-07 5 views
6

Есть ли способ хранения учетных данных в приложении .NET Windows, будь то встроенный API или просто рекомендуемый алгоритм шифрования?Сохранение учетных данных пользователя в приложении Windows

Вдоль тех же линий, что и черепаха SVN, Spotify и Skype.

Редактировать: Мое намерение состоит в использовании веб-службы, которая возвращает токен из своей службы аутентификации. Другие сервисы затем принимают этот токен в качестве параметра. Тем не менее, токен истекает через 30 минут, поэтому для хранения самого токена это бессмысленно для этой задачи.

+0

На всякий случай, с которой вы не сталкивались раньше: [Разработка системы аутентификации: Диалог в четырех сценах] (http://web.mit.edu) /kerberos/www/dialogue.html) - отличная статья о принципах Kerberos; Я думаю, что это может быть интересно в контексте создания вашей службы аутентификации. – Regent

ответ

12

Похоже, что использование ProtectedData (которое обертывает Windows Data Protection API) - моя лучшая ставка, так как она имеет возможность шифрования на основе текущего пользователя.

byte[] dataToEncrypt = new byte[] { ... }; 

// entropy will be combined with current user credentials 
byte[] additionalEntropy = new byte { 0x1, 0x2, 0x3, 0x4 }; 

byte[] encryptedData = ProtectedData.Protect(
    dataToEncrypt, additionalEntropy, DataProtectionScope.CurrentUser); 

byte[] decryptedData = ProtectedData.Unprotect(
    encryptedData, additionalEntropy, DataProtectionScope.CurrentUser); 
0

Лучшая практика никогда не хранить учетные данные, только токены Kerberos ... к сожалению, не каждый ресурс допускает такую ​​аутентификацию.

+0

Я должен был быть более конкретным. См. Мое обновление. –

0

В MSDN имеется много паролей recomendations. Вам понадобится найти управляемую оболочку для CryptProtectData

+1

System.Security.Cryptography.ProtectedData * - это управляемая оболочка для CryptProtectedData. См. Мой ответ выше. –