在Windows应用程序中保存用户凭据

时间:2009-08-07 07:13:37

标签: .net windows security authentication

是否有最佳实践方法在.NET Windows应用程序中存储凭据,无论是内置API还是推荐的加密算法?

与Tortoise SVN,Spotify和Skype一样。

编辑:我的目的是使用从其身份验证服务返回令牌的Web服务。然后其他服务接受该标记作为参数。但是,令牌在30分钟后到期,因此存储令牌本身对此任务毫无意义。

3 个答案:

答案 0 :(得分:14)

似乎使用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);

答案 1 :(得分:0)

最佳做法是永远不会存储凭据,只保存Kerberos令牌......遗憾的是,并非每个资源都允许此类身份验证。

答案 2 :(得分:0)

MSDN中有很多recomendations个密码。您将需要为CryptProtectData

找到托管包装器