1

为了标题,我不太肯定如何措辞,所以请原谅我。此外,我似乎无法弄清楚如何在谷歌上搜索这个问题,所以我希望我能在正确的方向上取得领先。

我的部分软件(VB.NET App)需要访问/读取/写入共享网络文件夹的能力。我可以选择让用户指定访问所述文件夹可能需要的任何凭据。

我想将这些凭据存储在 SQL Server 数据库中作为配置的一部分(我有一个包含配置的表)。

我担心的是用户帐户的密码将被解密。然而,如果我对密码进行加密,VB.NET 应用程序和/或数据库将无法使用凭据进行文件 i/o 操作,除非密码在使用前未加密。

我正在寻找有关如何更好地处理这种情况的建议。

4

3 回答 3

0

我建议在您的应用程序中使用 Windows 身份验证。如果这样做,则可以在共享文件夹和数据库中设置权限,并避免在数据库中存储任何类型的凭据。

于 2010-04-26T17:14:08.247 回答
0

如果要加密存储密码,您需要使用自己的加密算法或允许您再次解密密码的加密算法。有很多方法可以做到这一点,最常见的一种是使用安全字对其进行加密,以便您可以使用相同的字再次解密。

好吧,可能不是一个真实的单词,而是一个随机字节数组或类似的东西。

于 2010-04-26T17:16:05.353 回答
0

SQL Server 本身具有存储 Windows 凭据的方法,请参阅CREATE CREDENTIAL

凭据是包含连接到 SQL Server 外部资源所需的身份验证信息的记录。大多数凭据包括 Windows 用户和密码。

但是以任何形式在应用程序中存储用户凭据总是一个坏主意。一方面,当用户更改密码时,它们会不同步。其次,冒充用户访问资源从来都不是正确的解决方案。正确的解决方案是实际设置组成员资格并正确定义资源的访问控制列表。

访问资源的唯一正确方案是:

  • 作为运行应用程序的用户,即。普通的普通用例
  • 作为模拟连接用户的服务,这是通过从 SSPI 身份验证中获取远程身份令牌来完成的,例如NegotiateStream.RemoteIdentity
于 2010-04-26T17:33:42.350 回答