2016-11-01 26 views
0

自分のoauth2サーバーに接続したいので、oauth2ログイン拡張を書きました。oauth2サーバーからアカウント情報を取得するとコードがあります。ログインプラグインをMediaWikiに書き込む方法

$user = User::newFromName($username); 
$user->setEmail($email); 
$user->load(); 

if (!($user instanceof User && $user->getId())) { 
    $user->addToDatabase(); 
} 

$user->setToken(); 
$user->setCookies(); 
$this->getContext()->setUser($user); 
$user->saveSettings(); 

ユーザーが存在しない場合は、ユーザーデータを作成しますが、あなたはクリックログアウトボタンでログアウトし、私は完全にこの問題を解決するための見当もつかないされていない場合は、時々、ログインは失敗します。

MediaWikiにはログインAPIがありますが、パスワードが必要で、ユーザーが自動作成する機能はありません。

+0

ユーザーを読み込む前に電子メールを設定しても何も役立たないことに注意してください。 – Tgr

+0

しかし、何もしないとすぐにログアウトしますが、サーバーセッションのタイムアウトではないので、私は把握しようとしています – Chan

答えて

0

MediaWiki 1.27+では、ログインはPrimaryAuthenticationProvider(1.27以前はパスワードベースではないログインのための非ハックな方法はありませんでした)を書いて行う必要があります。そのクラスのインラインドキュメント、またはOAuth1と同様の機能を提供するthis patchを参照してください。

+0

MW-OAuth2ClientやLDAP拡張などの多くの拡張機能はすべてパスワードなしでログインします。 MW-OAuth2Clientを参考にしていますが、実際にログインしていますが、ページで何もしないとすぐにログアウトします.24時間後に期限切れになるため、サーバーセッションのタイムアウトではありません。 – Chan

+0

LDAPはパスワードベースの認証を使用します。 1.26までのMediaWikiはそれのためにAuthPluginを使用し、MW 1.27+はPrimaryAuthenticationProviderを使用します。 OAuth 1.27より前のコードのようなパスワードのないログインの場合は、通常、何らかの代替ログインページ(あらゆる種類の悪影響を伴います)を作成しました。 – Tgr

+0

私はLDAPがパスワードベースであることを知っていますが、ログイン時にLDAPプラグインがパスワードに使用されないことを確信しています。ユーザがLDAP経由でログインしたときにuser_passwordとuser_newpasswordの列は空です。ログインすると、実際には動作しますが、ページ上に何もしないと5分ほどで自動的にログアウトします。 – Chan

関連する問題