我们有一个客户端/服务器应用程序,其中包含一个富客户端前端(在.Net中)以及一个管理门户(Asp.Net)。目前,用户必须在富客户端和网站上登录。我们希望他们能够登录富客户端,但如果他们从客户端启动它,则无需登录该网站。我们怎么能这样做?
走另一条路并不重要,但如果可能的话会很好:登录网站,然后无需登录富客户端。
答案 0 :(得分:5)
可能的解决方案是:
答案 1 :(得分:2)
简单令牌解决方案存在设计缺陷:如果需要,您将拥有某种可以进行逆向工程的秘密。如果穹顶正确,这可以完全避免。
我会提出挑战 - 响应算法。
*)用户使用pw
登录富客户端 从盐+密码*)计算sha256或类似的哈希值。 (哈希A)
*)用户点击“转到网站”链接。
*)启动http响应(例如作为webservice),用户为用户帐户提取“获取票号”。这张票有效期很短(几分钟)
*)客户端计算哈希(HashA +票证)HashB
*)最后 - 浏览器指向www.example.org/?username=donkey&key=99754106633f94d350db34d548d6091a
*)服务器检查他的计算散列是否与提交的散列相同。
这种方法的优点:
-server永远不会知道密码,只有盐渍哈希。
- 即使哈希从未通过网络传输 - >没有重播攻击。
答案 2 :(得分:2)
OAuth怎么样?
允许安全API的开放协议 授权简单和 桌面和网络的标准方法 应用
答案 3 :(得分:1)
确保令牌超时,比如2-5分钟,以确保它是真实的。
答案 4 :(得分:0)
您可以在打开网站的网址上添加一个令牌来识别它们。
您必须为令牌添加一些安全性:TTL,哈希,盐