我正在开发一个asp.net网站,需要为另一个网站存储用户密码,以便我可以定期检索数据而无需用户继续登录。我无法想象单向哈希是如何工作的在这种情况下,因为用户不会每次都重新键入密码。我假设我需要加密密码以存储在SQL Server数据库中并在需要时解密它们。但这就是我遇到困难的地方。基本基础结构是一个C#/ Asp.Net MVC3网站,在负载均衡的Azure计算实例上运行,并在SQL Azure中存储数据。我不是一个加密的家伙,我不想犯一个新手的错误。似乎有很多信息,但我似乎没有任何信息。即使我连接的数据不敏感,我也希望以同样的谨慎对待用户的信息,我希望我的个人数据得到处理。任何有关如何进行的建议将不胜感激。
编辑: 我当然明白存储密码不是最佳做法,但在某些情况下,这是不可避免的。我遇到过这个项目,但尚未尝试过:http://securentity.codeplex.com/。它在Web服务器上使用数字证书。
第三方网站的用户可以将其数据设置为“公开”,在这种情况下,我不需要存储他们的密码。所以我可以让用户选择这样做。
答案 0 :(得分:1)
您应该查看OAuth和Single Sign-On 简单来说:在不同的系统之间只发送一个身份验证令牌。
您(网站)从不应了解用户密码。最多您应该知道您的网站的密码哈希。
阅读上述两个主题,您将了解如何正确保护您和“邻居”网站。
修改强>
简而言之:
其他站点(站点B)实现OAuth服务器进程。您的站点(站点A)实现OAuth客户端身份验证。从站点B请求用户信息时,您将用户重定向到站点B身份验证,以允许站点A从站点B读取有关用户的信息。站点B创建一个站点A可用于访问信息的令牌。此令牌可能受时间限制(或不受限制)。