Extension:CentralAuth

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Extension:CentralAuth and the translation is 100% complete.
Other languages:
English • ‎Nederlands • ‎Türkçe • ‎français • ‎português • ‎中文 • ‎日本語
MediaWiki manüel uzantıları
OOjs UI icon advanced.svg
CentralAuth
Sürüm durumu: kararlı
CentralAuth administration demo screenshot.png
Uygulama Kullanıcı kimliği , Veritabanı , Özel sayfa , API
Açıklama Hesapların genel hesaplarla birleştirilmesine izin verir
Yazar(lar) Brion Vibber
Uyumluluk politikası sürüm dalları
MediaWiki 1.29
Veritabanı değişiklikleri Evet
Tablolar globalnames
localnames
globaluser
localuser
global_user_groups
global_group_permissions
wikiset
global_group_restrictions
renameuser_status
renameuser_queue
users_to_rename
Lisans GNU Genel Kamu Lisansı 2.0 veya üstü
İndir
  • $wgCentralAuthAutoLoginWikis
  • $wgCentralAuthUseEventLogging
  • $wgCentralAuthCookiePath
  • $wgCentralAuthReadOnly
  • $wgCentralAuthAutoMigrate
  • $wgCentralAuthEnableUserMerge
  • $wgCentralAuthEnableGlobalRenameRequest
  • $wgCentralAuthCreateOnView
  • $wgCentralAuthGlobalPasswordPolicies
  • $wgCentralAuthCookieDomain
  • $wgCentralAuthLockedCanEdit
  • $wgCentralAuthPreventUnattached
  • $wgCentralAuthWikisPerSuppressJob
  • $wgCentralAuthCookies
  • $wgOverrideCentralIdLookupProvider
  • $wgCentralAuthRC
  • $wgCentralAuthGlobalBlockInterwikiPrefix
  • $wgCentralAuthAutoMigrateNonGlobalAccounts
  • $wgCentralAuthDatabase
  • $wgCentralAuthDryRun
  • $wgCentralAuthCookiesP3P
  • $wgGlobalRenameBlacklist
  • $wgGlobalRenameBlacklistRegex
  • $wgCentralAuthLoginIcon
  • $wgCentralAuthStrict
  • $wgCentralAuthLoginWiki
  • $wgCentralAuthOldNameAntiSpoofWiki
  • $wgCentralAuthSessionCacheType
  • $wgCentralAuthCheckSULMigration
  • $wgDisableUnmergedEditing
  • $wgCentralAuthPrefsForUIReload
  • $wgCentralAuthAutoCreateWikis
  • $wgCentralAuthCookiePrefix
  • centralauth-merge
  • centralauth-unmerge
  • centralauth-lock
  • centralauth-oversight
  • globalgrouppermissions
  • globalgroupmembership
  • centralauth-rename
  • centralauth-usermerge
Translatewiki.net adresinde mevcutsa, CentralAuth uzantısını çevirin
Kullanım ve sürüm matrisini kontrol edin.
Sorunlar Açık görevler · Hata bildir

CentralAuth, projeler arasında paylaşılan küresel hesaplara izin verir. Bu uzantı yedi yeni özel sayfa ekler: Special:AutoLogin (listelenmemiş özel sayfa), Special:CentralAuth, Special:GlobalGroupMembership, Special:GlobalGroupPermissions, Special:WikiSets, Special:GlobalUsers, Special:MergeAccount

MediaWiki sürümünüze karşılık gelen CentralAuth sürümünü indirmeniz önerilir.

Uyarı Uyarı: CentralAuth, küresel bir tabloda birleştirilmesi gereken milyonlarca hesaba sahip olan Wikimedia projeleri için özel olarak tasarlanmıştır.

Sıfırdan yeni bir viki grubu başlatıyorsanız ve mevcut hesapları küresel bir tabloda birleştirmeye gerek yoksa, global hesaplar oluşturmak CentralAuth yerine $wgSharedDB kullanarak çok daha kolaydır.[1][2]

Bununla birlikte, $wgSharedDB yalnızca kullanıcı adı oluşturma çakışmalarını önlemek için yararlıdır ve evrensel oturum açma (bunun yerine, kullanıcıların her vikide oturum açması gerekir) veya küme arası hesap hakları ve yönetimi gibi hiçbir şeyi işlemez.

Bu uzantı, karmaşıklık pahasına söz konusu işlevselliği sağlar.

Kurulum

CentralAuth'u kullanmanın ön koşulları için aşağıdaki kurulum bölümüne bakın. Ardından, CentralAuth'u etkinleştirmeye hazır olduğunuzda şu talimatları izleyin:

  1. En son anlık görüntüyü indirin ve onu extensions dizininize çıkartın.
  2. Bir veritabanı seçin ve CentralAuth veritabanı tablolarını oluşturun. Mevcut bir veritabanını kullanabilir veya yeni bir tane oluşturabilirsiniz; uzantı varsayılan olarak centralauth adlı bir veritabanı kullanır (aşağıdaki $wgCentralAuthDatabase bakın). use this database then run central-auth.sql.
    • Extension:AntiSpoof kullanırsanız, küresel bir spoofuser tablosu oluşturmanız gerekir (herhangi bir vikideki mevcut kullanıcı adlarına benzer görünen yeni kullanıcı adlarını engellemek için). Bunu yapmanın bir yolu, spoofuser tablosunu yerel viki veritabanından atmak ve yeni $wgCentralAuthDatabase aktarmaktır.
  3. Vikilerinizin her biri için LocalSettings.php 'de bulunan başka bir PHP dosyasına wfLoadExtension('CentralAuth'); ekleyin.
  4. Uzantı şimdi aktif olmalıdır.

Burada, merkezi kimlik veritabanı oluşturmak, sahte kullanıcı tablosunu buna kopyalamak ve mevcut kullanıcı verilerini ona taşımak için örnek kabuk ve SQL komutları verilmiştir. $WgDBname ve $wgDBuser kendi viki kurulumunuzun değerleriyle değiştirin.

Yeni veritabanı oluşturun (Bu adımın seçenek olduğunu unutmayın, bunun yerine mevcut veritabanlarınızdan birini kullanabilirsiniz, bu durumda tablo oluşturma adımına atlayın):

$ cd extensions/CentralAuth
$ mysql -u root -p
(enter password for root SQL user)
CREATE DATABASE centralauth;
USE centralauth;
GRANT all on centralauth.* to '$wgDBuser'@'localhost';
quit

Aşağıda, mevcut çalışma dizininizin MediaWiki kurulumunuz olduğu varsayılır (CentralAuth dizininiz değil). Merkezi kimlik doğrulama tablolarını oluşturun (sql.php kullanılması tercih edilir. Kabuk erişiminiz yoksa, PHPMyAdmin gibi veritabanı yönetim araçlarıyla da central-auth.sql içe aktarabilirsiniz):

php maintenance/sql.php --wikidb centralauth extensions/CentralAuth/central-auth.sql

AntiSpoof kuruluysa, tabloyu şu yolla oluşturun (Alternatif olarak, önceki girişleri saklamak istiyorsanız mevcut bir AntiSpoof tablosunu kopyalayabilirsiniz):

php maintenance/sql.php --wikidb centralauth extensions/CentralAuth/AntiSpoof/patch-antispoof-global.mysql.sql

Kullanıcı taşıma betiklerini çalıştırın

$ php extensions/CentralAuth/maintenance/migratePass0.php
$ php extensions/CentralAuth/maintenance/migratePass1.php

İzlenecek yol, aşağıdaki talimatlardan daha kullanıcı dostu bir kurulumdur.

Kurulum

Uyarı Uyarı: A central login wiki is required if you want to have a universal sign-on across different primary domains (i.e. if your wikis are not under subdomains of the same domain). See below for detail.

First, you'll need to configure your wiki family using $wgConf , or CentralAuth can't be used for your wiki family. This includes setting $wgLocalDatabases and assigning it to $wgConf->wikis, and $wgConf->settings (minimum is $wgCanonicalServer , $wgServer and $wgArticlePath). Follow the examples carefully. Make sure that you put the configuration code after the wfLoadExtension( 'CentralAuth' ); line in LocalSettings.php. If you are creating a new wiki family, bear in mind that it may be easier if the databases for the wikis in each group have the same suffix (e.g. hypothetical databases enwiki, dewiki, frwiki, etc., pertaining to wikis belonging to the same group, all have the suffix "wiki").

After installing the extension, you have to gather some data in the CentralAuth database. In order to retroactively set up global accounts, you will have to run the migratePass0.php and migratePass1.php scripts. The first one stores information about your wikis in the CentralAuth database, while the second one uses automatic migration heuristics to generate global accounts. A user can merge their accounts manually via Special:MergeAccount. Dry runs can be used for testing purposes.

To enable global groups, you will have to make an entry into the global_group_permissions table in your CentralAuth database, with ggp_group='steward' and (for access to the group management interface) ggp_permission=globalgrouppermissions. A sample query that is recommended to use is: INSERT INTO global_group_permissions (ggp_group,ggp_permission) VALUES ('steward','globalgrouppermissions'), ('steward','globalgroupmembership');. Then, run migrateStewards.php to promote local stewards to global steward status.

There are various settings you may wish to modify (e.g. whether to provide single sign-on across a whole domain) listed in CentralAuth.php. In particular, you will want to override the default value of $wgCentralAuthDatabase if your CentralAuth database is named something other than 'centralauth'. Make sure you put such settings after the wfLoadExtension line in LocalSettings.php, e.g.:

wfLoadExtension( 'CentralAuth' );
$wgCentralAuthDatabase = 'mycentralauthdatabase';

"SUL2" davranışı

Uyarı Uyarı: As all logged in users will have a session in the central login wiki, you are recommended to set up a new wiki with as few extensions installed as possible (not using an existing wiki for this purpose). This will reduce the risk for XSS vulnerabilities.
Uyarı Uyarı: Universal sign-on may be broken in newer Google Chrome versions due to SameSite cookie policy. To fix it, you need to add:
$wgCookieSameSite = "None";
$wgUseSameSiteLegacyCookies = true;
In addition, you should run your site under HTTPS.

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; // Parameter deleted from MediaWiki 1.27
$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 (this parameter was deleted from MediaWiki 1.27).

Tek örnekli bir geliştirme makinesinde SUL2 davranışını simüle etme

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.

Önbellek sorunları

For best results, it is recommended to use memcached. If you have only a single server, accelerator caches (CACHE_ACCEL) like APCu can also work, but do not use them if you have multiple servers. If you have no cache set up (i.e. CACHE_NONE) for $wgMainCacheType, or are using CACHE_DB, then you need to make sure all your wikis use the same caching table.

By default, each wiki in your wikifarm will use the objectcache table in its own database (with its own db prefix) when $wgMainCacheType is set to CACHE_NONE or CACHE_DB. To make this work with centralauth, we need to tell the wikis to use a central cache table.

If you want to make a central caching table in the centralauth database (And assuming one of your existing wikis has a database name of enwiki), run code like the following to copy the table to your other database:

CREATE TABLE centralauth.objectcache LIKE enwiki.objectcache

Then add the following config to all wikis to tell them to use the central table instead of their own table:

$wgSharedDB     = 'centralauth'; // or whatever database you use for central data
$wgSharedTables = array( 'objectcache' ); // remember to copy the table structure's to the central database first
$wgMainCacheType = CACHE_DB; // Tell mediawiki to use objectcache database instead of nothing

Yapılandırma

Configuration settings in CentralAuth.php
parametre varsayılan yorum
$wgCentralAuthDatabase 'centralauth' Database name you keep central auth data in.

If this is not on the primary database connection, don't forget to also set up $wgDBservers to have an entry with a groupLoads setting for the 'CentralAuth' group. Alternatively you can use $wgLBFactoryConf to set up an LBFactoryMulti object.

To use a database with a table prefix, set this variable to "{$database}-{$prefix}".

$wgCentralAuthAutoMigrate false If true, existing unattached accounts will be automatically migrated if possible at first login.

Any new account creations will be required to attach.

If false, unattached accounts will not be harassed unless the individual account has opted in to migration.

$wgCentralAuthAutoMigrateNonGlobalAccounts false If true, existing unattached accounts where no global account exists will be compared to see if a merge can be made based on passwords and emails with no clashes (all accounts merge).

This was formerly controlled by $wgCentralAuthAutoMigrate

$wgCentralAuthStrict false If true, remaining accounts which have not been attached will be forbidden from logging in until they are resolved.
$wgCentralAuthDryRun false If true, merging won't actually be possible through the Special:MergeAccount interface.
$wgCentralAuthCookies false If true, global session and token cookies will be set alongside the per-wiki session and login tokens when users log in with a global account.

This allows other wikis on the same domain to transparently log them in.

$wgCentralAuthLoginWiki false Database name of a central login wiki. This is an alternative to directly setting cross-domain cookies for each wiki in $wgCentralAuthAutoLoginWikis. If set, a single login wiki will use a session/cookie to handle unified login sessions across wikis.

On login, users will be redirected to the login wiki's Special:CentralLogin/login page and then redirected to Special:CentralLogin back on the originating wiki. In the process, the central login wiki cookie and session will be set. As the user accesses other wikis, the login wiki will be checked via JavaScript to check login status and set the local session and cookies.

This requires $wgCentralAuthCookies.

$wgCentralAuthCookieDomain '' Domain to set global cookies for.

For instance, '.wikipedia.org' to work on all wikipedia.org subdomains instead of just the current one. Leave blank to set the cookie for the current domain only, such as if all your wikis are hosted on the same subdomain.

$wgCentralAuthCookiePrefix 'centralauth_' Prefix for CentralAuth global authentication cookies.
$wgCentralAuthCookiePath '/' Path for CentralAuth global authentication cookies. Set this variable if you want to restrict cookies to a certain path within the domain specified by $wgCentralAuthCookieDomain.
$wgCentralAuthAutoLoginWikis [] List of wiki IDs which should be called on login to try to set third-party cookies for the global session state.

The wiki ID is typically the database name, except when table prefixes are used, in which case it is the database name, a hyphen separator, and then the table prefix.

This allows a farm with multiple second-level domains to set up a global session on all of them by hitting one wiki from each domain (en.wikipedia.org, en.wikinews.org, etc).

Done by accessing Special:CentralAutoLogin/start on each wiki.

If empty, no other wikis will be hit.

The key should be set to the cookie domain name.

$wgCentralAuthAutoCreateWikis [] List of wiki IDs on which an attached local account should be created automatically when the global account is created.

The wiki ID is typically the database name, except when table prefixes are used, in which case it is the database name, a hyphen separator, and then the table prefix.

$wgCentralAuthLoginIcon false Local filesystem path to the icon returned by Special:CentralAutoLogin Should be a 20x20px PNG.
$wgCentralAuthPrefsForUIReload [ 'skin', 'language', 'thumbsize', 'underline', 'stubthreshold', 'showhiddencats', 'justify', 'numberheadings', 'editondblclick', 'editsection', 'editsectiononrightclick', 'usenewrc', 'extendwatchlist' ] User preferences for which we should recommend reloading the page after a successful central login query.

If you need to do something more complicated than just $user->getOption( $pref ) !== User::getDefaultOption( $pref ), use the hook CentralAuthIsUIReloadRecommended.

$wgCentralAuthCookiesP3P true Specify a P3P header value to be used when setting CentralAuth cookies on the login wiki ($wgCentralAuthLoginWiki).

When set true, a invalid policy (lacking all required tokens) will be sent that none the less serves to allow current versions of IE with the default privacy settings to see the cookies in the auto-login check.

Set false to disable sending the P3P header altogether. Note this will likely break the auto-login check in IE, unless the header is being set globally elsewhere (e.g. in the webserver).

Otherwise, whatever string is assigned here will be sent as the value of the P3P header.

@var bool|string

$wgCentralAuthCreateOnView false If true, local accounts will be created for active global sessions on any page view. This is kind of creepy, so we're gonna have it off for a little bit.

With other default options, the local autocreation will be held off until an active login attempt, while global sessions will still automatically log in those who already have a merged account.

$wgCentralAuthRC [] Array of settings for sending the CentralAuth events to the RC Feeds

@example $wgRCFeeds['example'] = array( 'uri' => "udp://localhost:1336", );

$wgCentralAuthLockedCanEdit [] List of local pages global users may edit while being globally locked.
$wgDisableUnmergedEditing false Disable editing for non-global accounts (except on NS_USER_TALK and NS_PROJECT_TALK)
$wgCentralAuthWikisPerSuppressJob 10 Size of wikis handled in one suppress user job. Keep in mind that one wiki requires ~10 queries.
$wgCentralAuthReadOnly false Like $wgReadOnly, used to set extension to database read only mode

@var bool

$wgCentralAuthUseEventLogging false Use the EventLogging extension to measure various activities
$wgCentralAuthPreventUnattached false Don't allow new unattached accounts to be created

@var bool

$wgCentralAuthEnableUserMerge false Whether to enable the global user merge tool

This only controls the availability of the special page, and does not prevent LocalUserMergeJobs from running on the given wiki.

@var bool

$wgCentralAuthEnableGlobalRenameRequest false Feature flag for Special:GlobalRenameRequest

@var bool

$wgCentralAuthCheckSULMigration false Enable special logic to attempt to ease the user facing impact of forced user migrations.

@var bool

$wgCentralAuthGlobalPasswordPolicies [] Global Password Policies. These are applied like local password policies, the strongest policy applicable to a user is used. Policies can apply to either a local group (if the user is a member of that group on any wiki, the policy will apply to that user) or global group.

@var array

$wgCentralAuthUseSlaves false Try to use slave DBs for reads instead of the master all the time

@var bool

$wgOverrideCentralIdLookupProvider true Set false if you really want to use 'local' rather than 'CentralAuth' for $wgCentralIdLookupProvider. This isn't the default because using CentralAuth is almost always what you want if CentralAuth is installed.

@var bool

Eski yapılandırma parametreleri

Old configuration settings in CentralAuth.php
parametre ömür varsayılan yorum
$wgCentralAuthAutoNew MediaWiki 1.12–1.26 (2a9795732276b0) false If true, new account registrations will be registered globally if the username hasn't been used elsewhere.

Kullanım

Allows for a single-user login (SUL) system using MediaWiki's AuthPlugin system. User creation and login is done globally using one central user table across all wikis. Note that local user accounts are automatically created on account creation/login however.

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

Kullanıcı hakları

CentralAuth defines several new userrights:

Kullanıcı hakkı Yetenekler Varsayılan grup Durum
centralauth-admin Read-only access to global account status Not applicable Inactive; defunct
centralauth-lock Prevent users from logging in on any wiki Stewards Active
centralauth-oversight Suppress or unhide global accounts Stewards Active
centralauth-rename Rename global accounts Stewards Active
centralauth-unmerge Unmerge global accounts from a local account Stewards Active
centralauth-usermerge Globally merge multiple users Not applicable Requires UserMerge extension
centralauth-merge Merge all CentralAuth accounts globally All users Active; usually automatic
globalgrouppermissions Manage permissions of global groups Global Stewards Active; not assigned to local stewards by default
globalgroupmembership Edit membership to global groups Global Stewards Active; not assigned to local stewards by default

İşlevler

Tek kullanıcı girişi (SUL)

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. Users with the centralauth-unmerge permission (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. User accounts can now also be renamed globally.

Küresel kullanıcıları kilitleme ve gizleme

Screenshot of Special:CentralAuth interface on Meta-Wiki, 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. A hidden global account's username is not visible in any logs except the global account log.

Viki setleri

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).

Küresel kullanıcı grupları

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.

Lisanslama ve indirmeler

The extension is available under the GNU General Public License 2.0 or later, and can be downloaded from Git, or accessed via the web-based viewer.

The software is provided as-is. Updates will be made according to the needs of Wikimedia wikis; or where critical vulnerabilities are discovered.

API

Extension:CentralAuth/API sayfasına bakın.

Kaynakça

Ayrıca bakınız