Extension:CentralAuth/ja

From MediaWiki.org
Jump to navigation Jump to search
MediaWiki 拡張機能マニュアルManual:Extensions
Crystal Clear action run.svg
CentralAuth

リリースの状態:Extension status 安定

CentralAuth administration demo screenshot.png
実装Template:Extension#type User identity, Database, Special page, API
説明Template:Extension#description アカウントをグローバルアカウントにマージすることを可能にする
作者Template:Extension#username Brion Vibber
MediaWikiTemplate:Extension#mediawiki 1.11 以降
データベースの変更Template:Extension#needs-updatephp はい
ライセンスTemplate:Extension#license GPL
ダウンロード
パラメーターTemplate:Extension#parameters
$wgCentralAuthDatabase

$wgCentralAuthAutoNew
$wgCentralAuthAutoMigrate
$wgCentralAuthStrict
$wgCentralAuthDryRun
$wgCentralAuthCookies
$wgCentralAuthCookieDomain
$wgCentralAuthCookiePrefix

$wgCentralAuthAutoLoginWikis
追加する権限Template:Extension#rights
centralauth-merge, centralauth-unmerge, centralauth-lock. centralauth-oversight, globalgrouppermissions, globalgroupmembership
使用するフックTemplate:Extension#hook
AuthPluginSetupManual:Hooks/AuthPluginSetup
AddNewAccountManual:Hooks/AddNewAccount
AbortNewAccountManual:Hooks/AbortNewAccount
UserLoginCompleteManual:Hooks/UserLoginComplete
UserLoadFromSessionManual:Hooks/UserLoadFromSession
UserLogoutManual:Hooks/UserLogout
UserLogoutCompleteManual:Hooks/UserLogoutComplete
GetCacheVaryCookiesManual:Hooks/GetCacheVaryCookies
GetPreferencesManual:Hooks/GetPreferences
UserArrayFromResultManual:Hooks/UserArrayFromResult
UserGetEmailManual:Hooks/UserGetEmail
UserGetEmailAuthenticationTimestampManual:Hooks/UserGetEmailAuthenticationTimestamp
UserSetEmailManual:Hooks/UserSetEmail
UserSetEmailAuthenticationTimestampManual:Hooks/UserSetEmailAuthenticationTimestamp
UserGetRightsManual:Hooks/UserGetRights
UserSetCookiesManual:Hooks/UserSetCookies
UserLoadDefaultsManual:Hooks/UserLoadDefaults
getUserPermissionsErrorsExpensiveManual:Hooks/getUserPermissionsErrorsExpensive
MakeGlobalVariablesScriptManual:Hooks/MakeGlobalVariablesScript
SpecialPasswordResetOnSubmitManual:Hooks/SpecialPasswordResetOnSubmit
RenameUserWarningManual:Hooks/RenameUserWarning
RenameUserPreRenameManual:Hooks/RenameUserPreRename
RenameUserCompleteManual:Hooks/RenameUserComplete

translatewiki.net で翻訳を利用できる場合は、CentralAuth 拡張機能の翻訳にご協力ください

使用状況とバージョン マトリクスを確認してください。

問題点Phabricator

未解決のタスク · バグを報告

CentralAuth拡張機能は複数のプロジェクトのあいだのグローバル/共用アカウントを可能にします。この拡張機能は6つの新しい特別ページを追加します — Special:AutoLogin (一覧に表示されない特別ページ)、Special:CentralAuth, Special:GlobalGroupMembership、Special:GlobalGroupPermissions、Special:GlobalUsersとSpecial:MergeAccount.

警告 警告: CentralAuthは、共通認証用テーブルに統合する必要があるアカウントが既に何百万も存在するウィキメディアプロジェクトのために特化して設計されたものです。一から新たなウィキを立ち上げようとしていて、既存アカウントを共通認証用テーブルに統合する必要がない場合、CentralAuthを使うより $wgSharedDB を使って共通認証アカウントを設定した方がずっと簡単です[1][2]。しかし、この方法ではシングルサインオン(wikipedia.orgなどある一つのウィキにサインインすると、commons.wikimedia.org のような異なる共有ドメイン配下にある共有レポジトリにも自動的にサインインできるようにする機能)や、共通認証アカウントをロックする機能は使えません。

CentralAuthの開発はMediawikiの中心部分の開発と深く関わっています。そのため、最新のCentralAuthをダウンロードしても、旧バージョンのMediawikiでは動かないかもしれません。この拡張機能を使うとき、Mediawikiも開発最新版を使うのが最もうまくいく方法となることが多いでしょう。

インストール[edit]

CentralAuthを使うにあたってあらかじめ必要となるものについては、以下のセットアップの節をご覧ください。CentralAuthを有効化する準備ができたら、以下の指示にしたがってインストールを進めてください。

  1. 最新のスナップショットをダウンロードしextensionsディレクトリに展開します。
  2. データベースを選択し、CentralAuth用のデータベーステーブルを作成します。既存のデータベース内に作成しても、新たなデータベースを作成しても構いません。既定のデータベース名は centralauth です(後述する $wgCentralAuthDatabase に関する記述も参照下さい)。 このデータベースに対し、central-auth.sqlを実行して下さい。
    • Extension:AntiSpoof を使っている場合、グローバルな spoofuser テーブル(このテーブルは、いずれのwikiにある既存ユーザに似ている新規ユーザの作成をブロックするのに使われます)を作る必要があります。そうする一つの方法はローカルのwikiデータベースにある spoofuser テーブルのダンプを取り、新たな $wgCentralAuthDatabase にインポートすることです。
  3. 各wikiのLocalSettings.phprequire_once "$IP/extensions/CentralAuth/CentralAuth.php"; を追記します。あるいは別のPHPファイルにこの記述を行い、各wikiの LocalSettings.php に include しても構いません。
  4. これで拡張機能はアクティブになります。

以下にcentralauthデータベースを作成し、spoofuserテーブルをその中にコピーし、既存のユーザデータをその中に移行するためのシェルとSQLコマンドの例を示します。 なお、$wgDBname と $wgDBuser の値については、実際にインストールするwikiに合った値に置き換えて下さい。

$ cd extensions/CentralAuth
$ mysql -u root -p
(enter password for root SQL user)
CREATE DATABASE centralauth;
USE centralauth;
SOURCE central-auth.sql
GRANT all on centralauth.* to '$wgDBuser'@'localhost';
quit
$ mysqldump -u $wgDBuser -p $wgDbName spoofuser > /tmp/spoofuser.temp
$ mysql -u $wgDBuser  -p centralauth < /tmp/spoofuser.temp
$ php maintenance/migratePass0.php
$ php maintenance/migratePass1.php

以下に示すセットアップ手順を見るより、Walkthroughに書かれている方法を見る方が分かりやすいでしょう。

設定[edit]

最初に、$wgConfを使ってウィキファミリーの設定を行う必要があります。そうしないとウィキファミリーでCentralAuthを使うことはできません。これには$wgLocalDatabasesを設定し、$wgConf->wikis と $wgConf->settings(最低限 $wgCanonicalServer、$wgServer、$wgArticlePath )を指定することも含んでいます。の記述に注意深くしたがってください。この設定に関するコードが LocalSettings.php で require_once "$IP/extensions/CentralAuth/CentralAuth.php";後に記していることを確認してください。新たなウィキファミリーをつくるとき、各ウィキのデータベース名の末尾は統一しておいた方が手続きは簡単になります(例:enwikidewikifrwikiのように同じウィキファミリー内の各ウィキ用データベース名の末尾はどれも"wiki")。

拡張機能をインストールしたら、次にCentralAuthにデータを集める処理を行います。過去にさかのぼってグローバルアカウントを設定するために、migratePass0.phpmigratePass1.php のスクリプトを実行する必要があります。最初のスクリプトはウィキの情報をCentralAuthデータベースに登録し、2つ目のスクリプトは既存のローカルアカウントを見つけてグローバルアカウントを作成する移行作業を自動的に行います。ウィキのユーザはSpecial:MergeAccountにアクセスして手動でアカウントを統合することができます。統合が問題なく実行できるのかを確認するためドライラン(テストするだけで実際には実行しない)を行うことができます。

グローバルグループを有効にするため、CentralAuthデータベース内にあるglobal_group_permissionsテーブルにggp_group='steward'を持つエントリーをつくる必要があるでしょう(グループ管理インタフェースにアクセスするにはggp_permission=globalgrouppermissionsも必要)。利用をお勧めするサンプルクエリは以下の通りです: INSERT INTO global_group_permissions (ggp_group,ggp_permission) VALUES ('steward','globalgrouppermissions'), ('steward','globalgroupmembership'); そして migrateStewards.php を実行し、ローカルの管理人をグローバルの管理人に昇格させてください。

さまざまな設定項目があり、その中には変更したいものがあるかもしれません(例:ドメイン全体でシングルサインオンを使えるようにするかどうか)。設定項目の一覧は CentralAuth.php で参照できます。特に、CentralAuthのデータベース名を'centralauth'以外に変更していた場合、$wgCentralAuthDatabase の初期値は修正を必要があるでしょう。これらの設定は、LocalSettings.phpの require_once 行より後に記されていることを確認してください。例:

require_once "$IP/extensions/CentralAuth/CentralAuth.php";
$wgCentralAuthDatabase = 'mycentralauthdatabase';


"SUL2" behavior[edit]

In July 2013 WMF changed its approach to logging users into multiple wikis. When configured for this new approach, after successful login and account creation CentralAuth redirects to Special:CentralLogin/start?token=somevalue on a "central login wiki", which sets cookies on that wiki and then redirects back to the logged-into wiki. It omits the "login/account creation success" page, instead redirecting back to the "returnto" page that the user was originally on. It places 1x1 pixel images in the footer of that page, in place of the icons formerly used on the "login/account creation success" page.

The settings for this are, roughly,

# General CentralAuth configuration
$wgCentralAuthCookies = true;
$wgCentralAuthAutoNew = true;
$wgCentralAuthDatabase = 'centralauthDatabaseName'; // default is 'centralauth'
$wgCentralAuthAutoMigrate = true;
#$wgCentralAuthCookieDomain = '.example.org';
$wgCentralAuthAutoLoginWikis = array(
    # Mapping from domain name to wiki id for other wikis to automatically login into
);

# Create the local account on pageview, set false to require a local login to create it.
$wgCentralAuthCreateOnView = true;

# Activates the redirect to the "central login wiki"
$wgCentralAuthLoginWiki = 'WikiIdOfLoginWiki';

# Skips the "login success" page
$wgCentralAuthSilentLogin = true;

# Deprecated, will be removed soon.
$wgCentralAuthUseOldAutoLogin = false;

$wgCentralAuthLoginWiki is the id (usually the database-name) of the wiki to which CentralAuth will redirect on login and create account.

$wgCentralAuthAutoNew means account creation will create a new global account.

Simulating SUL2 behavior on a single-instance development machine[edit]

You can simulate this new behavior on a single-instance development machine. You can set $wgCentralAuthLoginWiki = $wgDBname) so CentralAuth makes its HTTP redirect requests to your same local wiki. This will not exercise central login properly, but will activate its "returnto" behavior. CentralAuth will still use its own 'centralauth' database to store global user names.

To determine the URL on the login wiki, CentralAuth uses WikiMap which assumes a wiki farm has been configured using $wgConf. Configuration setup (in SiteConfiguration.php) is very flexible; one way to set up a dummy single-wiki $wgConf in LocalSettings.php is:

// You can't just set wgConf values to the globals defined in Setup.php for your
// local wiki, because it hasn't run yet.  You could hard-code $wgConf settings
// here, but instead we set the wgConf values in a hook that runs later.
$wgHooks['SetupAfterCache'][] = function() {
    global $wgConf, $wgDBname,
        $wgServer, $wgCanonicalServer, $wgArticlePath;
    $wgConf->suffixes = array( $wgDBname );
    $wgConf->settings['wgServer'][$wgDBname] = $wgServer;
    $wgConf->settings['wgCanonicalServer'][$wgDBname] = $wgCanonicalServer;
    $wgConf->settings['wgArticlePath'][$wgDBname] = $wgArticlePath;
    return true;
};

This is in addition to the settings in #"SUL2" behavior above.

キャッシュの問題[edit]

You do not need to use "CREATE TABLE centralauth.objectcache LIKE enwiki.objectcache" if you use MediaWiki version 1.19 or higher. The table is already created during the setup of your wiki.

CentralAuthをセットアップするにはすべてのウィキが同じキャッシュサーバーを使うことが必要になります。これらがすべてmemcachedを使っているのであれば問題ありませんが、デフォルトの設定(CACHE_NONE)で異なるデータベース(もしくはプレフィックス)を使っている場合動きません。Copy the objectcache table's structure to the CentralAuth database. This can be done by using a SQL command such as the following (which assumes your CentralAuth database is named centralauth and that your wiki is named enwiki):

CREATE TABLE centralauth.objectcache LIKE enwiki.objectcache

次の設定を行う必要があります:

$wgSharedDB     = 'centralauth'; // もしくは中央のデータのために使いたいデータベース
$wgSharedTables = array( 'objectcache' ); // 最初にテーブル構造を中心のデータベースにコピーすることをお忘れなく
$wgMainCacheType = CACHE_DB; // 何も使わない代わりにobjectcacheデータベースを使うようMediaWikiに伝える

使用法[edit]

MediaWikiのAuthPluginシステムを使ってシングルユーザーログイン(SUL - Single User Login)システムをすぐに可能にします。すべてのウィキにまたがった1つの中央のユーザーテーブルを使ってユーザー作成とログインはグローバルに行われます。ローカルユーザーのアカウントは作成/ログイン時に自動的に作成されることに注意してください。

This extension also implements global user groups, to which global accounts can belong to.

機能[edit]

SUL[edit]

A user with an account on more than one wiki may use Special:MergeAccount to create their global user account, which can then be used on any wiki.

グローバル利用者[edit]

Screenshot of CentralAuth interface on Wikimedia, showing lock/hide interface.

A global account can be locked or hidden by a user with the centralauth-lock and centralauth-oversight permissions, respectively, given to the local group 'stewards' by default. A locked global account will be immediately logged out of any session on any wiki it is currently logged in to, and logins fail with an "incorrect password" error. A hidden global account's username is not visible in any logs except the global account log.

Users with the centralauth-unmerge permission (again, given to stewards by default) can undo a merging of a global account, where the passwords are all reset back to the pre-merge setting.

警告 警告: Account renames using Extension:Renameuser have to be done locally on every wiki.

ウィキ集合[edit]

A wiki set is a group of wikis specified by a user with the globalgrouppermissions right. Sets can be opt-in (wikis are not in it by default) or opt-out (wikis are in it unless opted out).

グローバル利用者グループ[edit]

Once you have enabled global user groups as described in the installation section, a migrated steward can use the Special:GlobalGroupPermissions interface to configure global user groups, and their rights. A global user group is active on all wikis (the users in it have its rights on all the wikis) by default, unless the group has been specified to only be active on a specific wiki set (the users in the group only have the rights if they are on a wiki in the set). Global group permissions are not listed at Special:ListUsers, but instead Special:GlobalUsers. They are assigned by a user with the globalgroupmembership permission (by default the global group stewards), and give the specified rights to the user even if the local rights defined by $wgGroupPermissions do not do so.

ライセンスとダウンロード[edit]

この拡張機能はGNU General Public License 2.0 or laterのもとで利用可能で、Subversionからダウンロード、もしくはWebベースのビューワーからアクセスできます。

ソフトウェアは無保証で提供されます。Wikimediaのウィキ群の必要性; もしくは致命的な脆弱性が見つかった場合に更新されます。

フック[edit]

この拡張機能は1つの新しいアカウントを追加します:

脚注[edit]

関連項目[edit]


言語:Project:Language policy English  • 日本語 • 中文