7

我们在 VBulletin 论坛上有很多用户。现在我想为同一个用户群在 Rails 上编写更多应用程序。到目前为止,所有身份验证和会话管理都由 VBulletin 负责。在VBulletin 和我正在编写的rails 应用程序上为我的用户提供SSO 的最佳方式是什么


我正在使用 v Bulletin 和定制应用程序进行单点登录过程。我可以使用 cookie 在 Vb 登录。我可以访问所有。但是当访问发送“私人消息”。它说

" 您已关闭私人消息。在您通过编辑选项将其打开之前,您可能无法发送私人消息。"

是否在“数据源”表中设置了所有权限?..

谢谢大师

4

1 回答 1

7

理想情况下,您的两个站点是公共域的子域(例如forum.example.comrails.example.com),或者共享同一个域(www.example.com。)其中一个站点将是主要身份验证器,并设置一个 cookie(对于.example.com公共父域的情况[注意.before example.com] 或www.example.com在共享域的情况下,以便两个应用程序都可以访问它),其中 cookie 包含:

  • user ID
  • a salt(登录时计算的随机值),和
  • aSHA-2 signature在三元组 ( user ID+ salt+ a shared secret key) 上计算,其中共享密钥是两个站点都知道的秘密字符串。

每个站点都能够从 cookie 中检索user IDsalt,然后使用shared secret key(只有两个应用程序知道)来计算SHA-2 signature必须匹配SHA-2 signature存储在 cookie 中的 a。

如果SHA-2 signatures匹配,则可以假设用户已通过身份验证,否则强制用户再次登录。

注销时必须销毁 cookie。

小字

为防止会话劫持,通过两个站点发出的所有请求都应通过 SSL 加密(使用 https。)如果不可能,则应基于客户端的 IP 地址以及浏览器类型和版本(用户代理)的哈希值可能在登录时计算并存储在 cookie 中。在处理每个请求之前,应根据客户端的 IP 地址和用户代理重新检查它。基于散列的方法是通过默默无闻的安全性,并且可以被愚弄;此外,每次不同的代理或退出节点(具有不同的 IP 地址)转发请求时,从代理池后面访问 Internet 或使用TOR的用户可能会被您的系统踢出。

于 2009-02-27T03:22:02.570 回答