1

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

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

4

5 回答 5

5

一个可能的解决方案是:

  • 登录富客户端
  • 服务器生成一个随机令牌并存储在登录用户的反面
  • 富客户端从服务器获取该令牌
  • 该令牌用于指向该网站的 url
  • 转到该网址(使用富客户端中的链接或按钮)将自动登录用户并重置令牌
于 2008-09-17T09:26:39.573 回答
2

简单的代币解决方案存在设计缺陷:如果需要,您将拥有某种可以逆向工程的秘密。如果圆顶正确,则可以完全避免这种情况。

我会提出一个挑战-响应算法。

*) 用户使用 pw 登录富客户端

*) 从 salt+password 计算 sha256 或类似的哈希值。(哈希 A)

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

*) 启动 http 响应(例如 web 服务),用户获取用户帐户的“获取票号”。这张票的有效期很短(几分钟)

*) 客户端计算哈希(HashA+ticket) HashB

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

*) 服务器检查他计算的哈希值是否与提交的哈希值相同。

这种方法的优点:

-server 从不知道密码,只知道加盐哈希。

- 甚至哈希也不会通过线路传输 -> 没有重放攻击。

于 2008-09-17T21:50:16.277 回答
2

OAuth怎么样?

一种开放协议,允许从桌面和 Web 应用程序以简单和标准的方法进行安全 API 授权。

于 2008-09-17T21:54:36.420 回答
1

确保令牌有一个超时时间,比如 2-5 分钟,以确保它是真实的。

于 2008-09-17T21:38:19.440 回答
0

您可以向打开站点的 URL 添加一个令牌以识别它们。

您必须为令牌添加一些安全性:TTL、哈希、盐

于 2008-09-17T09:23:07.193 回答