PHPBB身份验证+Rails

3
我有一个phpbb论坛,现在正在开发一款用于移动友好应用程序的rails应用。我需要一种方法来实现phpbb和rails之间的单点登录(SSO)。
我在Github上找到了一个叫做phpbb-auth的ruby宝石,但是它已经三年没有更新了。
我的初步想法是在Rails中模仿phpbb使用的phpass(最新版本),然后让Rails在使用Devise/Warden进行身份验证时引用phpbb_users表。
然而,这项任务变得令人望而生畏,并将成为另一个要管理的库。
我的下一个想法是编写一个Warden插件来检查phpbb_session是否存在,如果存在,则继续。否则,将其重定向到phpbb登录页面。
大家有遇到过这样的情况吗?如果有,你们使用的是什么方法?
1个回答

2

我现在正在做同样的事情(实际上已经成功了)。

因此,根据您的设置/部署,您基本上有几个选项。考虑以下内容:

  • 您将在同一个域名或不同域名上部署Rails应用程序和phpbb?
  • 两个站点是否都可以访问彼此的数据库。
  • 您希望使用哪种身份验证系统?因此,您想要Rails(即devise、authlogic或其他)进行身份验证和处理用户,还是phpbb db auth(即将登录和密码存储在phpbb用户表中)。

到目前为止,我已经通过phpbb db auth +单个域名来实现身份验证,我的应用程序(phpbb:forum.example.com,我的Rails应用程序位于example.com以共享cookie)。在这种情况下,您可以使用您提到的gem(phpbb-auth)中的代码。这并不太难。代码仍然正常工作(可能需要一些调整)。

但是

我不喜欢这种方式:)我认为我的网站是主要应用程序,不想论坛处理我的用户...

因此,据我所知,从phpbb 3开始,您可以编写用于外部身份验证的插件(API文档)。

在网上有几个Python和Django的例子。这个是用于同一域名+数据库访问的。这个是用JavaScript远程执行操作的。虽然它们是用Python编写的,但内部并没有太多Python代码,只是一些示例,因此您可以很容易地将它们用于Rails。这个问题以更通用的方式讨论了相同的内容。

我最终使用了phpass-ruby gem并手动检查密码。我应该为此创建一个gem。目前Rails应用程序只是访问phpbb_users表进行身份验证,并创建一个单独的会话存储。 - NDBoost
我遇到的问题是在使用Heroku时尝试添加多个远程MySQL数据库。由于rails应用程序将连接至少两个数据库以读取信息。 - NDBoost
很遗憾,我目前还没有使用Heroku的经验。你最终的结果就是我的结果 :) 如果我在这个主题上发现了有趣的东西,我会发布更新的。 - denis-bu
另一种方法是将您的phpbb论坛设置为oauth提供程序,并使用omniauth gem从rails访问它。不确定事情是否会按照这种方式进行,但肯定有一天会尝试这种方法。您可以在此处找到一些链接和教程:https://dev59.com/33A75IYBdhLWcg3wJFYL - denis-bu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接