我们在VBulletin论坛上有很多用户。现在我想为同一个用户群在Rails上写更多的应用程序。到目前为止,所有的身份验证和会话管理都由VBulletin负责。在VBulletin和我正在编写的Rails应用程序上为我的用户提供SSO的最佳方式是什么
我工作的单点登录过程中与v公告和定制的应用程序。我可以使用cookies在Vb上登录。我可以访问所有。但访问时发送“私信”。它说
“您已关闭私人信息。只有通过编辑选项将私人消息打开后,您才能发送私人消息。“
是否在“数据源”表中设置了所有权限?..
多谢师父
1条答案
按热度按时间bxfogqkk1#
理想情况下,您的两个站点是一个公共域的子域(例如
forum.example.com
和rails.example.com
),或者共享同一个域(www.example.com
)。其中一个站点将是主验证器,并设置一个cookie(在公共父域的情况下为.example.com
[注意example.com
之前的.
]或在共享域的情况下为www.example.com
,以便两个应用程序都可以访问它),其中cookie包含:user ID
salt
(在登录时计算的随机值),以及user ID
+salt
+ ashared secret key
)上计算的SHA-2 signature
,其中共享密钥是两个站点都知道的秘密字符串。每个站点都可以从cookie中检索
user ID
和salt
,然后使用shared secret key
(只有两个应用程序知道)来计算SHA-2 signature
,该SHA-2 signature
必须与cookie中存储的SHA-2 signature
匹配。如果
SHA-2 signatures
匹配,则可以假定用户已通过身份验证,否则强制用户再次登录。注销时必须销毁cookie。
小字
为了防止会话劫持,通过两个站点发出的所有请求都应通过SSL加密(使用https)。如果无法加密,则应在登录时计算基于客户端IP地址以及浏览器类型和版本(User-agent)的哈希值,并将其存储在cookie中。在为每个请求提供服务之前,应该根据客户端的IP地址和用户代理重新检查它。基于散列的方法是通过模糊来实现安全性的,并且可以被愚弄;此外,每次不同的代理或出口节点(具有不同的IP地址)转发请求时,从代理池后面或使用TOR访问Internet的用户可能会被您的系统踢出。