2008-09-17 33 views
1

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

以其他方式走并不重要,但如果可能的话会很好:登录到网站,然后不必登录富客户端。

回答

4

一个可能的解决方案是:

  • 登录到富客户端
  • 随机令牌由服务器生成并再次存储登录用户
  • 富客户端从服务器获取该令牌
  • 该令牌用于指向网站的url
  • 去那个URL(使用链接或按钮从富客户端)将自动登录用户和重置令牌
0

您可以将标记添加到打开网站的URL中以标识它们。

你得一些安全添加到令牌:TTL,哈希,盐

1

确保有令牌上的超时,说2-5分钟,以确保它是真实的。

2

简单的令牌解决方案遭受设计缺陷:您将有某种可以被反向设计的秘密,如果想要的话。如果圆顶正确,这可以完全避免。

我会提出一个质询 - 响应算法。

*)用户loggs到丰富的客户端与PW

*)从盐+密码SHA256或类似的散列计算。 (哈希A)

*)用户点击“转到网站”链接。

*)http响应开始(例如作为web服务),用户为用户帐户提取“获取票证号码”。这张票的有效期为短时间(几分钟)

*)客户端计算哈希(波沙+门票)HashB

*)终于 - 浏览器指向www.example.org/?username=donkey & key = 99754106633f94d350db34d548d6091a

*)服务器检查他的计算出的散列是否与提交的散列相同。

优点这种方法的:

-server从来不知道密码,只有盐腌哈希。

- 即使散列从来没有通过线传输 - >没有重播攻击。

+0

如果密码在桌面应用程序中完全不可用,并且在网站中只有未知的密码散列可用,该怎么办? – 2011-07-21 19:58:35

2

OAuth怎么样?

开放协议以允许安全API以简单 授权和从桌面和web应用程序 标准方法。

相关问题