security - 在. NET 中,本地密码存储

  显示原文与译文双语对照的内容

在编写一个使用REST来与远程web服务通信的WPF应用程序。 应用程序要求用户输入他们的用户名和密码,因为 REST API的某些特性需要认证。 我想知道如何在我的WPF应用程序中安全地存储密码。 在服务端,我将它用随机盐吞在一起,然后使用to散列这个。 如果使用REST命令,应该创建一个返回安全密码( 。例如 哈希和 salted 密码)的REST命令,并将它的提供给服务器?

时间:

不要在本地存储它。 通过HTTPS传递给服务器,让服务器返回一个可以在后续调用中使用的身份验证令牌,而不是登录。 令牌可以只是任意随机数,除了通过服务器上的映射之外,没有与特定用户的连接。 你正在使用HTTPS进行REST调用,对? 你需要登录和注销功能,登录才能生成身份验证令牌和注销效果。

如果可以在每次启动WPF应用程序时提示用户使用用户名和密码,那么将凭据保留在内存中。 你可以使用 SecureString 将密码保存在内存转储之外。

如果你不想在每次启动应用程序时提示用户提示信息,请查看使用 OAuth 2.0,。 你的应用程序将让用户对授权服务器进行身份验证。 这里服务器同时返回访问令牌和刷新令牌。 可以使用访问令牌与 REST API 通信,并且可以使用刷新令牌在过期时获取新的访问令牌。

它希望在用户的计算机上安全地存储刷新令牌,查看 Windows 数据保护( ) 以在存储令牌之前加密。

...