.net NET中的本地密码存储

.net NET中的本地密码存储,.net,security,rest,.net,Security,Rest,我正在编写一个WPF应用程序,它使用REST与远程web服务通信。应用程序要求用户输入用户名和密码,因为RESTAPI的某些功能需要身份验证。我想知道如何在我的WPF应用程序中安全地存储密码。在服务端,我通过用随机盐腌制它,然后使用SHA256来散列它来存储它。我是否应该创建一个REST命令,返回安全密码(即哈希密码和盐密码),并在使用REST时将其提供给服务器?完全不要将其存储在本地。通过HTTPS将其传递给服务器,并让服务器返回一个身份验证令牌,该令牌可用于后续调用,而不是登录。令牌可以是一

我正在编写一个WPF应用程序,它使用REST与远程web服务通信。应用程序要求用户输入用户名和密码,因为RESTAPI的某些功能需要身份验证。我想知道如何在我的WPF应用程序中安全地存储密码。在服务端,我通过用随机盐腌制它,然后使用SHA256来散列它来存储它。我是否应该创建一个REST命令,返回安全密码(即哈希密码和盐密码),并在使用REST时将其提供给服务器?

完全不要将其存储在本地。通过HTTPS将其传递给服务器,并让服务器返回一个身份验证令牌,该令牌可用于后续调用,而不是登录。令牌可以是一个任意的随机数,除了通过服务器上的映射之外,没有与特定用户的连接。您正在使用HTTPS进行REST呼叫,对吗?您将需要登录和注销功能,登录以生成身份验证令牌,注销以使其无效,此外,您还可以在令牌上设置过期日期以限制其有效期

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

如果您不想在用户每次启动应用程序时提示用户输入凭据,请查看使用。您的应用程序将让用户针对授权服务器进行身份验证。此服务器返回访问令牌和刷新令牌。您可以使用访问令牌与RESTAPI对话,并且可以使用刷新令牌在新的访问令牌过期时获取新的访问令牌

如果要在用户的计算机上安全地存储刷新令牌,请查看Windows Data Protection()以在存储令牌之前对其进行加密