DiscourseSsoConsumer は、MWサイトがDiscourse Connect Provider API経由でユーザーを認証できるようにするMediaWiki拡張機能です(つまり、ユーザーはDiscourseにパスワードを入力します)。1年前にリリースされたこの拡張機能のバージョン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 Error: 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 バージョンをお試しください。(バージョン番号として「dev-main」を使用して composer 経由でインストールできます。)これは 1.35 で動作し、1.37 で動作すれば、バグ修正リリース(例: 2.0.1)として正式にタグ付けします。
「いいね!」 1
素晴らしい、ありがとうございます。バージョン2.0.1がリリースされました。
「いいね!」 1
AndroidフォンにPWAスタンドアロンとしてアプリをインストールしました。MediaWikiにログインすると、Discourse PWAにリダイレクトされて開き、その後、本来リダイレクトされるべき対応するWebブラウザではなく、PWA自体でMediaWikiのURLが開きます。Discourseがログインを開始した対応するWebブラウザを正しく検出してリダイレクトできていないようです。これはMediaWiki拡張機能とは関係なく、Discourseがリダイレクト/外部URLを処理する方法に関連しています。ログインをDiscourseプログレッシブウェブアプリで機能させるために変更できる設定はありますか?
申し訳ありませんが、Discourse PWA に関する経験は全くありません。
PWA と Discourse が SSO プロバイダーとして連携する上で根本的な欠陥があるのではないかと想像しています。しかし、SSO コンシューマーが既に Discourse にログインしているユーザーを再認証しようとすると、クライアントブラウザに Discourse サーバーへのリダイレクトを指示することになります。そして、Discourse サーバーはユーザーの既存の Cookie をチェックし、コンシューマーにリダイレクトバックすることを期待します。さらに、これらのリダイレクトがすべてブラウザ内でサイレントに発生し、ユーザーは最終的なページロード以外何も見ないことを期待します。
しかし、PWA は Android に、特定の URL/ドメインに対して呼び出される完全に別のアプリケーションとして登録されているのではないでしょうか? PWA が元のブラウザにリダイレクトバックするとき、元のブラウザは、この新しいリンクが元のリクエストと関係があることをどのように知るのでしょうか? そして、Android は、PWA がユーザーからの入力を実際に必要とする場合にのみ、ユーザーに PWA を表示することを知るにはどうすればよいのでしょうか? 