DiscourseSsoConsumer 是一个 MediaWiki 扩展,它允许 MW 站点通过 Discourse Connect Provider API 进行用户身份验证(即用户在 Discourse 中输入密码)。该扩展最初于一年前发布,昨天发布了 2.0.0 版本。我认为是时候在这里为该扩展创建一个单独的主题了,以便更容易找到它(而不是在 SSO Provider 主题中的原始孤帖:Use Discourse as an identity provider (SSO, DiscourseConnect) - #104 by mdoggydog
它通过 composer 安装。安装/配置说明请参见 README。
5 个赞
这个功能需要 Mediawiki 的最低哪个版本?
对于 v2.0.0,最低 MediaWiki 版本为 1.35(且尚未在任何更新版本上进行测试)。
该扩展最初是使用 MW 1.31 开发/测试的;v1.1.0 和 v1.2.0 可能适用于 MW 1.31,但尚未在该版本上进行测试。
1 个赞
@mdoggydog
我正在使用 MediaWiki 1.37,并通过 composer 设置了这个扩展。我看到了以下错误:
[YidklSqHVG68-iRmgGiwzwAAAFA] /view/Special:PluggableAuthLogin 错误:未定义的方法 MediaWiki\Auth\AuthManager::singleton()
回溯:
来自 /var/www/vhosts/mywebsite.com/httpdocs/w/extensions/DiscourseSsoConsumer/src/DiscourseSsoConsumer.php(132)
#0 /var/www/vhosts/mywebsite.com/httpdocs/w/extensions/PluggableAuth/includes/PluggableAuthLogin.php(36): MediaWiki\Extension\DiscourseSsoConsumer\DiscourseSsoConsumer->authenticate()
#1 /var/www/vhosts/mywebsite.com/httpdocs/w/includes/specialpage/SpecialPage.php(647): PluggableAuthLogin->execute()
#2 /var/www/vhosts/mywebsite.com/httpdocs/w/includes/specialpage/SpecialPageFactory.php(1366): SpecialPage->run()
#3 /var/www/vhosts/mywebsite.com/httpdocs/w/includes/MediaWiki.php(314): MediaWiki\SpecialPage\SpecialPageFactory->executePath()
#4 /var/www/vhosts/mywebsite.com/httpdocs/w/includes/MediaWiki.php(930): MediaWiki->performRequest()
#5 /var/www/vhosts/mywebsite.com/httpdocs/w/includes/MediaWiki.php(564): MediaWiki->main()
#6 /var/www/vhosts/mywebsite.com/httpdocs/w/index.php(53): MediaWiki->run()
#7 /var/www/vhosts/mywebsite.com/httpdocs/w/index.php(46): wfIndexMain()
#8 {main}
AuthManager::singleton() 方法似乎在 1.35 中被弃用,并在 1.37 中被移除。
我认为我现在已经修复了这个问题;请尝试此扩展的当前 dev-main 版本。(您可以通过 composer 安装它,使用“dev-main”作为版本号。)它在我这边 1.35 上可以正常工作,如果您在 1.37 上也能正常工作,我将正式将其标记为错误修复版本(例如 2.0.1)。
1 个赞
我在我的安卓手机上安装了该应用程序,即 PWA 独立版。当我登录到我的 MediaWiki 时,它会重定向并打开 discourse PWA,然后它会在 PWA 本身中打开我的 MediaWiki URL,而它应该重定向到相应的网络浏览器。我认为 discourse 没有正确检测并重定向到发起登录的相应网络浏览器。这与 MediaWiki 扩展无关,而是与 discourse 如何处理重定向/外部 URL 有关。是否有任何设置可以修改以使登录与 discourse 渐进式 Web 应用程序正常工作?
抱歉,我对 Discourse PWA 没有任何经验。
我想象 PWA 和 Discourse 作为 SSO 提供商之间的交互存在根本性缺陷,但是:每当 SSO 消费者想要重新验证一个已登录 Discourse 的用户时,它都会告诉客户端浏览器重定向到 Discourse 服务器,期望 Discourse 服务器检查用户现有的 cookie 并重定向回消费者……并期望所有这些重定向在浏览器中静默发生,用户除了最终页面加载外什么也看不到。
但是,PWA 在 Android 上注册为一个完全独立的应用程序,该应用程序会针对某些 URL/域被调用,对吧?当 PWA 重定向回原始浏览器时,原始浏览器如何知道这个新链接与它最初的请求有关?Android 又如何知道只有当 PWA 确实需要用户输入时才应该向用户显示 PWA?