是否有最佳实践方法在.NET Windows应用程序中存储凭据,无论是内置API还是推荐的加密算法?
与Tortoise SVN,Spotify和Skype一样。
编辑:我的目的是使用从其身份验证服务返回令牌的Web服务。然后其他服务接受该标记作为参数。但是,令牌在30分钟后到期,因此存储令牌本身对此任务毫无意义。
答案 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
找到托管包装器