Extension:CentralAuth(中央认证)
CentralAuth可将现有的几个分開的账户系统合并为一个全域账户系统。
安裝
有关使用CentralAuth的先决条件,请参见下面的配置部分。 當你已經准备好激活CentralAuth时,请按照以下说明进行操作:
- 請安装扩展:AntiSpoof,因为它是一个必需的依赖项。
- 下载最新快照并解压到您的
extensions目录中。 - 选择一個数据库然後创建CentralAuth数据库表。 您可以使用现有的数据库或创建一个新的数据库。 (默认情况下,扩展使用本地wiki的数据库便于自动化测试,但是并不适用于实际维基农场的情况(毕竟每个站点的用户都不同,但是CentralAuth的意义就是在站点间共享数据),所以您需要进行配置;参见下面的
$wgVirtualDomainsMapping['virtual-centralauth']。) 使用这个数据库,然后运行tables-generated.sql。- 如果你使用扩展:AntiSpoof,你將需要创建一个全域的
spoofuser表(以阻挡那些看起来和任何维基中已有用户名相似的新用户名)。 一种方法是从本地维基数据库中转储spoofuser表,然后将其导入新的$wgVirtualDomainsMapping['virtual-centralauth']表。
- 如果你使用扩展:AntiSpoof,你將需要创建一个全域的
- 为您的每个维基的LocalSettings.php添加
wfLoadExtension( 'CentralAuth' );,或在您的每个维基的LocalSettings.php中包含的另一个PHP文件中添加wfLoadExtension( 'CentralAuth' );。 - 该扩展现在应该处于活跃状态。
创建一個新的数据库
以下示例 Shell 和 SQL 命令可用于创建 centralauth 数据库、将 spoofuser 表复制到其中,并迁移现有用户数据。
请将 $wgDBname 和 $wgDBuser 替换为您自己维基安装的相应凭据值。
创建新数据库(请注意,此步骤可选。您也可使用现有数据库,若如此,则请跳至创建表的步骤):
$ cd extensions/CentralAuth
$ mysql -u root -p
(输入 root SQL 用户的密码)
CREATE DATABASE centralauth;
USE centralauth;
GRANT all on centralauth.* to '$wgDBuser'@'localhost';
quit
运行维护脚本
下文假定您当前的工作目录是您的 MediaWiki 安装目录(而非 CentralAuth 目录)。
创建中央认证表(推荐使用 sql.php)。
php maintenance/run.php sql --wikidb centralauth extensions/CentralAuth/schema/<数据库类型>/tables-generated.sql
如果已安装AntiSpoof,则通过以下方式创建表格(如果想保留以前的入口,也可以复制现有的AntiSpoof表格):
php maintenance/run.php sql --wikidb centralauth extensions/AntiSpoof/sql/<数据库类型>/tables-generated.sql
运行用户迁移脚本
$ php maintenance/run.php CentralAuth:migratePass0.php
$ php maintenance/run.php CentralAuth:migratePass1.php
升级
CentralAuth是专为手动运行数据库更新的大型维基站点设计,以实现零停机升级。 出于此原因,CentralAuth数据库将不会以常规升级進程更新。 第三方用户应遵循CentralAuth的开发流程,並以手动套用数据库迁移。
设置
首先,您需要使用$wgConf配置您的维基家族,否则中央认证将无法用于您的维基家族。
这包括设置$wgLocalDatabases并将其分配给$wgConf->wikis,以及$wgConf->settings(最低要求是$wgCanonicalServer、$wgServer和$wgArticlePath)。
请仔细遵循示例。
创建新的维基家族时,请注意:如果同一组内各维基所对应的数据库均使用相同的后缀(例如,假设属于同一组的维基数据库 enwiki、dewiki、frwiki 等均使用后缀“wiki”),可能会更便于管理。
安装此扩展后,您需要在中央认证数据库中收集一些数据。 为了追溯设置全域账户,您将需要运行 migratePass0.php 和 migratePass1.php 脚本。 前者将有关您维基的信息存储在中央认证数据库中,而后者则采用自动迁移启发法来生成全域账户。 用户可以通过Special:MergeAccount手工合并其帐户。 试运行可用于测试目的。
要启用全域用户组,您将需要在您的中央认证数据库中的 global_group_permissions 表内添加一条记录,包含 ggp_group='steward' 以及(用于访问用户组管理界面的)ggp_permission=globalgrouppermissions。
以下是推荐使用的查询示例:
INSERT INTO global_group_permissions (ggp_group,ggp_permission) VALUES ('steward','globalgrouppermissions'), ('steward','globalgroupmembership');
然后,将部分用户提升为监管员:
INSERT IGNORE INTO global_user_groups (gug_user, gug_group) VALUES ((SELECT gu_id FROM globaluser WHERE gu_name='Admin'), 'steward');
您可能希望修改的各种设置(例如是否在整个域内提供单点登录)列于CentralAuth.php中。
具体而言,你需要为$wgVirtualDomainsMapping['virtual-centralauth']设定一个值。
确保将这些设置放在LocalSettings.php中的wfLoadExtension行之后,例如:
wfLoadExtension( 'CentralAuth' );
$wgVirtualDomainsMapping['virtual-centralauth'] = [ 'db' => 'centralauth' ];
SUL2
2013年7月,维基媒体基金会调整了用户跨多wiki站点的登录机制。
采用此新方式配置后,中央认证系统会在用户成功登录或创建账户后,跳转至“中央登录维基”上的Special:CentralLogin/start?token=somevalue页面。该页面将在该维基设置Cookie,随后重定向回用户所登录的维基。
它跳过了“登录/账户创建成功”页面,直接重定向回用户原先所在的“returnto”页面。
它在页面底部放置1x1像素的图片,取代了原先“登录/账户创建成功”页面上使用的图标。
这一设置大致如下:
# 通用中央认证配置
$wgCentralAuthCookies = true;
// 默认使用本地维基数据库
$wgVirtualDomainsMapping['virtual-centralauth'] = [ 'db' => 'centralauthDatabaseName' ];
$wgCentralAuthAutoMigrate = true;
$wgCentralAuthAutoLoginWikis = [
# 其他维基站点的域名与维基ID的映射关系,用于实现自动登录功能
'enwiki.mediawiki.mwdd.localhost' => 'enwiki',
];
# 激活重定向至“中央登录维基”
$wgCentralAuthLoginWiki = 'WikiIdOfLoginWiki';
$wgCentralAuthLoginWiki 是CentralAuth在登录和创建账户操作时将重定向到的维基ID(通常为数据库名称)。
SUL3
2025年,维基媒体集群的配置进行了调整,用户身份验证(例如输入密码)改在一个共享的域名上进行,而非各维基站点的独立域名。 共享域可配置为服务于农场中的每个维基。 此举源于浏览器对Cookie处理的调整,可能导致通过中央维基跳转时无法正常设置Cookie。 详情请参阅SUL3。
将您的维基农场配置为使用SUL3:
- 请确保您的维基农场已配置使用
sites表或$wgConf(参见#Setup)。$wgCentralAuthLoginWiki和$wgLocalDatabases也应进行设置。 中央认证的其他部分对此缺失尚有一定容忍度,但SUL3会直接崩溃。- 即便仅为单一维基站搭建本地开发环境时也需要这一步骤,但可大幅简化,详见下文。
- 配置您的服务器,使其能在另一个域名下托管您的其中一个维基。 若已配置SUL2,请使用登录维基;否则任选其一即可。
- 如果您正在设置本地开发环境,并且将唯一的wiki托管在
http://localhost(可选端口号)上,请注意所有本地子域名都会解析到您的机器,因此您可以直接使用诸如http://auth.localhost和http://wiki.localhost这样的地址,无需进行任何配置。
- 如果您正在设置本地开发环境,并且将唯一的wiki托管在
- 设置
$wgCentralAuthSharedDomainCallback返回您的新域名。 请注意,这是一个回调函数,而非字符串。 - 设置
$wgCentralAuthEnableSul3 = true;
您可能需要调整一些MediaWiki配置设置以支持此功能:
- 在通过认证域名访问您的维基时,必须根据条件将
$wgServer和$wgCanonicalServer设置为认证域名,否则尝试登录时会陷入重定向循环。 CentralAuth从步骤1中定义的wiki农场配置读取“真实”的规范服务器。 - 为了通过认证域名服务多个维基,需调整
$wgCentralAuthSharedDomainCallback以在域名后添加基于维基的路径前缀,配置服务器根据该前缀提供对应维基服务,并相应调整$wgScriptPath,$wgArticlePath等参数以匹配设置。 要准确做到这一点很棘手,所以如果你正在搭建本地开发环境,就不必费心了。 - 检查您的MediaWiki cookie设置,确保通过认证域名访问时wiki能够设置cookies,且不会与wiki的正常cookies发生冲突。 通过认证域名访问维基时条件性设置
$wgCentralAuthCookiePrefix是避免Cookie名称冲突的好方法。
以下是在开发环境的单维基“农场”上运行SUL3中央认证的最小配置:
// 单维基“农场”的最小配置
$wgConf->wikis = [ $wgDBname ];
$wgConf->suffixes[] = '';
$wgConf->settings = [
'wgServer' => [ 'default' => 'http://wiki.localhost:8080' ],
'wgArticlePath' => [ 'default' => '/wiki/$1' ],
];
// 中央认证所需的杂项设置
$wgCentralAuthLoginWiki = $wgDBname;
$wgLocalDatabases = [ $wgDBname ];
// 启用中央认证SUL3
$wgCentralAuthSharedDomainCallback = fn () => 'http://auth.localhost:8080';
$wgCentralAuthEnableSul3 = true;
// 指向访问wiki所使用的任意域名中的$wgServer
$wgCanonicalServer = $wgServer = MediaWiki\Request\WebRequest::detectServer( true );
if ( $wgServer === 'http://auth.localhost:8080' ) {
// 共享认证域的条件配置放在此处
}
缓存问题
When using CentralAuth, different wikis must share the same MainCache (to allow purging of cached cross-wiki data such as global edit counts), the same session store (the store $wgCentralAuthSessionCacheType points to) , and the same MicroStash (for centralauthtoken).
为获得最佳效果,建议使用memcached或更持久的缓存方案。
如果只有一台服务器,也可以使用APCu等加速器缓存(CACHE_ACCEL),但多台服务器时切勿使用。
默认情况下,当$2设置为$3或CACHE_DB时,维基农场中的每个维基将使用其自身数据库中的objectcache表(带有自身的数据库前缀)。
要让此功能与CentralAuth协同工作,我们需要告知各wiki使用中央缓存表。
若未为$wgMainCacheType设置缓存(即CACHE_NONE)或正在使用CACHE_DB,则需确保所有wiki使用相同的缓存表。
$wgObjectCaches[CACHE_DB] = [
'class' => SqlBagOStuff::class,
'loggroup' => 'SQLBagOStuff',
'server' => [
'type' => $wgDBtype,
'host' => $wgDBserver,
'user' => $wgDBuser,
'password' => $wgDBpassword,
// 或任意用来存储中央数据的数据库
'dbname' => 'centralauth',
]
];
$wgSessionCacheType = CACHE_DB;
You have to create this table yourself, because objectcache is not (yet) a virtual domain and so is cannot be created by maintenance/update.php. Run the following via maintenance/sql.php to create the table (where "enwiki" is one of your wiki databases):
CREATE TABLE centralauth.objectcache LIKE enwiki.objectcache;
HTTP和HTTPS
自2023年起,CentralAuth不再支持HTTP/HTTPS混合协议维基站点,仅支持纯HTTPS维基(需将$wgForceHTTPS设置为true)以及纯HTTP维基(主要用于本地测试)。
(phab:T348852)
数据库虚拟域映射
自MediaWiki 1.41起,您可为CentralAuth配置数据库虚拟域映射,该功能取代了$wgCentralAuthDatabase。
要使用CentralAuth设置虚拟域映射,请使用:
// 'centralauth' 是您的 CentralAuth 数据库名称。
$wgVirtualDomainsMapping['virtual-centralauth'] = [ 'db' => 'centralauth' ];
配置
| 参数 | 默认 | 评论 |
|---|---|---|
(deprecated) $wgCentralAuthDatabase
|
null
|
您保存中央认证数据的数据库名称。
如果这不是主数据库连接,别忘了还要设置 要在数据库中使用表前缀,请将此变量设置为“ 此设置已被弃用,请使用上文所述的虚拟域映射。
|
$wgCentralAuthAutoMigrate
|
false
|
如果设置为true,现有未关联账户将在首次登录时尽可能自动迁移。
所有新账户的创建均需进行关联。 若为 |
$wgCentralAuthAutoMigrateNonGlobalAccounts
|
false
|
若为true,系统将比对所有未关联的独立账户,根据密码和邮箱信息判断是否存在冲突(若无冲突则全部账户合并)。
这曾由 |
$wgCentralAuthStrict
|
false
|
若为true,其余尚未关联的账户将被禁止登录,直至问题解决。
|
$wgCentralAuthDryRun
|
false
|
若为true,通过Special:MergeAccount界面实际上将无法进行合并。
|
$wgCentralAuthCookies
|
false
|
若为true,当用户使用全域账号登录时,将在设置各wiki会话及登录令牌的同时设置全局会话及令牌Cookie。
这使得同一域名下的其他wiki能够透明地实现用户登录。 |
$wgCentralAuthLoginWiki
|
false
|
中央登录wiki的数据库名称。 这是对在$wgCentralAuthAutoLoginWikis中为每个wiki直接设置跨域Cookie的替代方案。 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 |
$wgCentralAuthSharedDomainCallback
|
false
|
Callback that takes a wiki ID and returns the URL prefix for the shared authentication domain without a trailing slash. This should use the same domain and scheme on every wiki of the CentralAuth wiki farm, with a path prefix that specifies the given wiki. A local URL appended to this prefix must be routed the same way as a local URL on the current wiki. This is used to share a central cookie between wikis while allowing the cookie-related UI (such as the login and signup page) to behave like any specific wiki in the farm. If unset, this mechanism will not be used. |
$wgCentralAuthEnableSul3
|
false
|
Enables SUL3 mode. Requires $wgCentralAuthSharedDomainCallback to be configured first.
|
$wgCentralAuthRestrictSharedDomain
|
false
|
Restrict wiki functionality to authentication only when the current domain matches the domain of CentralAuthSharedDomainCallback. Enable when using a shared login domain. Disable when the login domain is a standalone wiki. |
$wgCentralAuthSul3SharedDomainRestrictions
|
complex array | Additional allowed/disallowed features when on the SUL3 central login domain. Defaults are stored in SharedDomainHookHandler::DEFAULT_RESTRICTIONS. |
$wgCentralAuthCookieDomain
|
''
|
Domain to set global cookies for.
For instance, This doesn't work in SUL3. See phab:T391358 for more details.
|
$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 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 |
$wgCentralAuthRC
|
[]
|
Array of settings for sending the CentralAuth events to the RC Feeds.
|
$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.
|
$wgCentralAuthEnableGlobalRenameRequest
|
false
|
Feature flag for Special:GlobalRenameRequest.
|
$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.
|
$wgGlobalRenameDenylist
|
null
|
A list of users who won't be allowed to create new global rename requests through Special:GlobalRenameRequest.
There are two ways to set it:
You can use the exact names or regular expressions.
|
$wgCentralAuthGlobalBlockInterwikiPrefix
|
"global"
|
When globally suppressing a user, a block against this user is inserted in all wikis. CentralAuth will set the author of theses blocks as $wgCentralAuthGlobalBlockInterwikiPrefix>(user-who-made-the-suppression's nickname). For example, if $wgCentralAuthGlobalBlockInterwikiPrefix = "Admins";, and Joe suppresses John, all wikis will show in BlockList a block against John made by Admins>Joe.
|
使用
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.
用户权限
CentralAuth defines several new user rights:
| 用户权限 | 能力 | 默认用户组 | 状态 |
|---|---|---|---|
centralauth-createlocal
|
Forcibly create a local account for a global account | 监管员与管理员 | Active in MW 1.36+ |
centralauth-lock
|
Prevent users from logging in on any wiki | 监管员 | Active |
centralauth-suppress
|
Suppress or unhide global accounts | 监管员 | Active |
centralauth-rename
|
Rename global accounts | 监管员 | Active |
centralauth-unmerge
|
Unmerge global accounts from a local account | Stewards | Active |
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 | 监管员 | Active; not assigned to local stewards by default |
函数
单用户登录(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.
封锁和隐藏全域用户

A global account can be locked or hidden by a user with the centralauth-lock and centralauth-suppress 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.
维基集
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).
全域用戶组
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.
Account vanishing
许可和下载
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
參考資料
参见
- Help:Unified login on Meta-Wiki
- Extension:CentralAuth/authentication – CentralAuth authentication features
$wgSharedDB- User:Legoktm/evil-plans2.txt – 2015 plan to phase out CentralAuth at Wikimedia
- Global session threat assessment
- Integrated watchlists
- CentralAuth control flow
- Stuck global renames
| 此扩展用于一个或多个维基媒体项目。 这可能意味着扩展足够稳定、运作足够良好,可以用在这样的高流量的网站上。 请在维基媒体的CommonSettings.php和InitialiseSettings.php配置文件中查找此扩展的名称以查看哪些网站安装了该扩展。 特定wiki上的已安装的扩展的完整列表位于Special:Version页面。 |
| 此扩展在以下wiki农场/托管网站和/或软件包中提供: |
- Stable extensions/zh
- User identity extensions/zh
- Database extensions/zh
- Special page extensions/zh
- API extensions/zh
- APIGetAllowedParams extensions/zh
- AbuseFilter-builder extensions/zh
- AbuseFilter-computeVariable extensions/zh
- AbuseFilter-generateUserVars extensions/zh
- AbuseFilterAlterVariables extensions/zh
- AbuseFilterShouldFilterAction extensions/zh
- ApiCheckCanExecute extensions/zh
- ApiQueryCheckCanExecute extensions/zh
- ApiQueryTokensRegisterTypes extensions/zh
- AuthChangeFormFields extensions/zh
- AuthManagerFilterProviders extensions/zh
- AuthManagerVerifyAuthentication extensions/zh
- AuthPreserveQueryParams extensions/zh
- BeforePageDisplay extensions/zh
- BlockIpComplete extensions/zh
- ContentSecurityPolicyDefaultSource extensions/zh
- ContentSecurityPolicyScriptSource extensions/zh
- ContributionsToolLinks extensions/zh
- GetLocalURL extensions/zh
- GetLogTypesOnUser extensions/zh
- GetPreferences extensions/zh
- GetSecurityLogContext extensions/zh
- GetUserBlock extensions/zh
- ImportHandleUnknownUser extensions/zh
- InvalidateEmailComplete extensions/zh
- LoadExtensionSchemaUpdates extensions/zh
- LocalUserCreated extensions/zh
- LogEventsListGetExtraInputs extensions/zh
- LoginFormValidErrorMessages extensions/zh
- MakeGlobalVariablesScript extensions/zh
- OtherBlockLogLink extensions/zh
- PasswordPoliciesForUser extensions/zh
- PostLoginRedirect extensions/zh
- RenameUserComplete extensions/zh
- RenameUserPreRename extensions/zh
- RenameUserWarning extensions/zh
- ResourceLoaderForeignApiModules extensions/zh
- ResourceLoaderModifyEmbeddedSourceUrls extensions/zh
- RestCheckCanExecute extensions/zh
- SecurePoll GetUserParams extensions/zh
- SecuritySensitiveOperationStatus extensions/zh
- SessionCheckInfo extensions/zh
- SetupAfterCache extensions/zh
- SiteNoticeBefore extensions/zh
- SpecialContributionsBeforeMainOutput extensions/zh
- SpecialLogAddLogSearchRelations extensions/zh
- SpecialPageBeforeExecute extensions/zh
- SpecialPage initList extensions/zh
- SpecialPasswordResetOnSubmit extensions/zh
- TempUserCreatedRedirect extensions/zh
- TestCanonicalRedirect extensions/zh
- UnblockUserComplete extensions/zh
- UnitTestsAfterDatabaseSetup extensions/zh
- UnitTestsBeforeDatabaseTeardown extensions/zh
- UserArrayFromResult extensions/zh
- UserEditCountUpdate extensions/zh
- UserGetEmail extensions/zh
- UserGetEmailAuthenticationTimestamp extensions/zh
- UserGetReservedNames extensions/zh
- UserGetRights extensions/zh
- UserGroupsChanged extensions/zh
- UserIsBot extensions/zh
- UserIsLocked extensions/zh
- UserLoginComplete extensions/zh
- UserLogout extensions/zh
- UserLogoutComplete extensions/zh
- UserRequirementsCondition extensions/zh
- UserSaveSettings extensions/zh
- UserSetEmail extensions/zh
- UserSetEmailAuthenticationTimestamp extensions/zh
- GetUserPermissionsErrors extensions/zh
- GetUserPermissionsErrorsExpensive extensions/zh
- GPL licensed extensions/zh
- Extensions in Wikimedia version control/zh
- All extensions/zh
- Pages using deprecated NoteTA template
- Extensions used on Wikimedia/zh
- Extensions included in Miraheze/zh
- Extensions included in Telepedia/zh
- CentralIdLookup providers/zh
- Login extensions/zh
