在桌面应用程序和网站之间启用单点登录

时间:2008-09-17 09:21:05

标签: .net asp.net

我们有一个客户端/服务器应用程序,其中包含一个富客户端前端(在.Net中)以及一个管理门户(Asp.Net)。目前,用户必须在富客户端和网站上登录。我们希望他们能够登录富客户端,但如果他们从客户端启动它,则无需登录该网站。我们怎么能这样做?

走另一条路并不重要,但如果可能的话会很好:登录网站,然后无需登录富客户端。

5 个答案:

答案 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,哈希,盐

相关问题