代码之家  ›  专栏  ›  技术社区  ›  Richard Szalay

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

  •  8
  • Richard Szalay  · 技术社区  · 16 年前

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

    与Tortoise SVN、Spotify和Skype的线路相同。

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

    3 回复  |  直到 16 年前
        1
  •  14
  •   Richard Szalay    16 年前

    似乎使用 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);
    
        2
  •  0
  •   Pontus Gagge    16 年前

    最佳实践是从不存储凭据,只存储Kerberos令牌…不幸的是,并非每个资源都允许这种身份验证。

        3
  •  0
  •   Chris Becke    16 年前

    有很多 recomendations 在msdn中重新输入密码。您需要为 CryptProtectData