有一个winform客户端连接到服务器并通过提供用户名和密码进行身份验证。
用户第一次将他的用户名/密码发送到服务器,之后如果没有注销,则无需再次进行身份验证(如Github
客户端或Windows Live Mail
)
所以我想知道:
(在stackoverflow中,我们是否感到欣赏?))
答案 0 :(得分:1)
这完全取决于您要保护的资源的价值;还有谁可以访问本地计算机等。
只需在应用程序中缓存用户名/密码即可。用户第一次输入用户名/密码时将其保存在注册表中的某个位置。下次启动应用程序时,请从注册表中读取并将值提供给服务器。
这显然是一个安全风险,因为有人可以从注册表中读取用户名/密码,因此在使用encrypt-decrypt-string-in-net之类的内容将用户名/密码保存到注册表之前对其进行加密。
下一个问题是您可能需要在应用中对解密密钥进行硬编码。这意味着任何有权访问您的应用程序二进制文件的人都可以计算您正在使用的算法/密钥,并使用该知识来解密存储在注册表中的密钥。但到了这个时候,大多数琐碎的尝试都会被劝阻。您可以尝试使用CryptProtectData function,因此您不必在应用中对加密密钥进行硬编码,但它更复杂。
答案 1 :(得分:0)
如果您不想在应用程序中保留用户名/密码,则可以使用HMAC身份验证。您使用用户名/密码在第一次呼叫期间对用户进行身份验证,但如果身份验证成功,则会返回会话密钥作为响应。您可以使用该会话密钥对其余呼叫进行身份验证,如此处所示,
此致 巴勃罗。