ruby-on-rails Vbulletin和Rails应用程序之间的单点登录

qjp7pelc  于 2023-05-08  发布在  Ruby
关注(0)|答案(1)|浏览(145)

我们在VBulletin论坛上有很多用户。现在我想为同一个用户群在Rails上写更多的应用程序。到目前为止,所有的身份验证和会话管理都由VBulletin负责。在VBulletin和我正在编写的Rails应用程序上为我的用户提供SSO的最佳方式是什么
我工作的单点登录过程中与v公告和定制的应用程序。我可以使用cookies在Vb上登录。我可以访问所有。但访问时发送“私信”。它说
“您已关闭私人信息。只有通过编辑选项将私人消息打开后,您才能发送私人消息。“
是否在“数据源”表中设置了所有权限?..
多谢师父

bxfogqkk

bxfogqkk1#

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

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

每个站点都可以从cookie中检索user IDsalt,然后使用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的用户可能会被您的系统踢出。

相关问题