我们有一个客户端/服务器应用程序,其中包含一个富客户端前端(在.Net中)和一个管理门户(Asp.Net)。目前用户必须在富客户端和网站上登录。我们希望让他们登录富客户端,但如果他们从客户端启动它,则无需登录网站。我们怎么做到这一点?在桌面应用程序和网站之间启用单一登录
以其他方式走并不重要,但如果可能的话会很好:登录到网站,然后不必登录富客户端。
我们有一个客户端/服务器应用程序,其中包含一个富客户端前端(在.Net中)和一个管理门户(Asp.Net)。目前用户必须在富客户端和网站上登录。我们希望让他们登录富客户端,但如果他们从客户端启动它,则无需登录网站。我们怎么做到这一点?在桌面应用程序和网站之间启用单一登录
以其他方式走并不重要,但如果可能的话会很好:登录到网站,然后不必登录富客户端。
一个可能的解决方案是:
您可以将标记添加到打开网站的URL中以标识它们。
你得一些安全添加到令牌:TTL,哈希,盐
确保有令牌上的超时,说2-5分钟,以确保它是真实的。
简单的令牌解决方案遭受设计缺陷:您将有某种可以被反向设计的秘密,如果想要的话。如果圆顶正确,这可以完全避免。
我会提出一个质询 - 响应算法。
*)用户loggs到丰富的客户端与PW
*)从盐+密码SHA256或类似的散列计算。 (哈希A)
*)用户点击“转到网站”链接。
*)http响应开始(例如作为web服务),用户为用户帐户提取“获取票证号码”。这张票的有效期为短时间(几分钟)
*)客户端计算哈希(波沙+门票)HashB
*)终于 - 浏览器指向www.example.org/?username=donkey & key = 99754106633f94d350db34d548d6091a
*)服务器检查他的计算出的散列是否与提交的散列相同。
优点这种方法的:
-server从来不知道密码,只有盐腌哈希。
- 即使散列从来没有通过线传输 - >没有重播攻击。
OAuth怎么样?
开放协议以允许安全API以简单 授权和从桌面和web应用程序 标准方法。
如果密码在桌面应用程序中完全不可用,并且在网站中只有未知的密码散列可用,该怎么办? – 2011-07-21 19:58:35