C# 如何缓存桌面应用程序客户端的登录数据
有一个winform客户端连接到服务器,并通过提供用户名和密码进行身份验证 用户第一次将其用户名/密码发送到服务器,之后如果未注销,则无需再次进行身份验证(如C# 如何缓存桌面应用程序客户端的登录数据,c#,winforms,authentication,asp.net-web-api,C#,Winforms,Authentication,Asp.net Web Api,有一个winform客户端连接到服务器,并通过提供用户名和密码进行身份验证 用户第一次将其用户名/密码发送到服务器,之后如果未注销,则无需再次进行身份验证(如Github客户端或Windows Live Mail) 所以我想知道: 如果用户名/密码有效,服务器应该返回什么 真/假值还是其他 在下一次运行时,我如何检查 如果用户上次通过身份验证并已登录?应该使用哪些值 我查对了吗?考虑不允许数据篡改 如果我在应用程序设置中保存哈希密码,如何避免被另一个密码窃取 (在stackoverflow中
Github
客户端或Windows Live Mail
)
所以我想知道:
- 如果用户名/密码有效,服务器应该返回什么 真/假值还是其他李>
- 在下一次运行时,我如何检查 如果用户上次通过身份验证并已登录?应该使用哪些值 我查对了吗?考虑不允许数据篡改
- 如果我在应用程序设置中保存哈希密码,如何避免被另一个密码窃取
(在stackoverflow中是否避免了欣赏?;)这取决于您试图保护的资源的价值;还有谁可以访问本地计算机等
如果不想在应用程序中缓存用户名/密码,可以改用HMAC身份验证。您可以在第一次呼叫期间使用用户名/密码对用户进行身份验证,但如果身份验证成功,则会返回会话密钥作为响应。您可以使用该会话密钥对其余调用进行身份验证,如图所示 问候,,
巴勃罗 谢谢@Grynn。所以我把它保存在注册表之类的地方,然后对它进行加密。现在,如果有人篡改了用户名/密码并输入了随机用户名/密码,我怎么看它是有效的?如果不从服务器请求,您仍然需要结束对服务器的请求,但用户无需再次输入任何内容。。。所以它是无缝的。人们做的另一件事是,每7天检查一次,因此如果我验证一次用户/密码组合,我只会在7天后再次验证它。服务器的界面类似于:“https://server/auth”,你会发送一篇带有用户名/密码的帖子,服务器会以“OK”或“FAIL”(或者类似JSON的方式)响应{结果:好的,从上次开始的天数:3}…)