Rozšíření:CentralAuth
CentralAuth umožňuje sloučení několika existujících samostatných systémů účtů do jednoho globálního systému účtů.
Instalace
Předpoklady použití CentralAuth naleznete v části založení níže. Až budete připraveni aktivovat CentralAuth, postupujte podle těchto pokynů:
- Nainstalujte Extension:AntiSpoof , protože je to povinná závislost.
- Stáhněte si nejnovější snímek a rozbalte jej do svého adresáře
extensions
. - Vyberte databázi a vytvořte databázové tabulky CentralAuth. Můžete použít existující databázi nebo vytvořit novou. Rozšíření ve výchozím nastavení používá databázi s názvem $1 (viz $2 níže). (The extension by default uses the wiki's local database, which is convenient for automated testing but doesn't really make sense on a real wiki farm (as it will be different for every wiki, but the point of CentralAuth is sharing data between wikis) so you'll need to reconfigure that; see
$wgVirtualDomainsMapping['virtual-centralauth']
below.) Použijte tuto databázi a poté spusťtetables-generated.sql
.- Pokud používáte Extension:AntiSpoof , budete muset vytvořit globální tabulku
spoofuser
(k blokování nových uživatelských jmen, která vypadají podobně jako stávající uživatelská jména na jakékoli wiki). Jedním ze způsobů, jak to udělat, je vypsat tabulkuspoofuser
z místní databáze wiki a importovat ji do nové$wgVirtualDomainsMapping['virtual-centralauth']
.
- Pokud používáte Extension:AntiSpoof , budete muset vytvořit globální tabulku
- Přidejte
wfLoadExtension( 'CentralAuth' );
až LocalSettings.php pro každou z vašich wikin nebo v jiném souboru PHP, který je součástíLocalSettings.php
na každé z vašich wikin. - Rozšíření by nyní mělo být aktivní.
Vytvoření nové databáze
Zde jsou ukázkové příkazy shellu a SQL pro vytvoření databáze centralauth
, zkopírování tabulky spoofuser
u do ní a migraci stávajících uživatelských dat do ní.
Nahraďte $wgDBname a $wgDBuser hodnotami pro vaši vlastní instalaci wiki.
Vytvořte novou databázi (Nezapomeňte, že tento krok je volitelný, můžete místo toho použít některou ze svých stávajících databází, v takovém případě přejděte ke kroku vytvoření tabulek):
$ cd extensions/CentralAuth
$ mysql -u root -p
(zadejte heslo pro uživatele root SQL)
CREATE DATABASE centralauth;
USE centralauth;
GRANT all on centralauth.* to '$wgDBuser'@'localhost';
quit
Spouštění skriptů údržby
Následující předpokládá, že váš současný pracovní adresář je vaše instalace MediaWiki (ne váš adresář CentralAuth).
Vytvořte centrální autentizační tabulky (preferováno je použití sql.php
).
php maintenance/run.php sql --wikidb centralauth extensions/CentralAuth/schema/<db_typ>/tables-generated.sql
Pokud je nainstalován AntiSpoof, vytvořte tabulku s jeho pomocí (Alternativně můžete zkopírovat existující tabulku AntiSpoof, pokud chcete zachovat předchozí položky):
php maintenance/run.php sql --wikidb centralauth extensions/AntiSpoof/sql/<db_typ>/tables-generated.sql
Spusťte skripty migrace uživatelů
$ php maintenance/run.php CentralAuth:migratePass0.php
$ php maintenance/run.php CentralAuth:migratePass1.php
Aktualizace
CentralAuth je navržen pro velké wiki farmy, které spouštějí aktualizace databází ručně, aby umožnily upgrady bez prostojů. Z tohoto důvodu nebude databáze CentralAuth aktualizována obvyklým procesem upgradu. Od uživatelů třetích stran se očekává, že budou sledovat vývoj CentralAuth a místo toho migrace databáze aplikovat ručně.
Nastavení
Nejprve budete muset nakonfigurovat svou wiki rodinu pomocí $wgConf
, jinak nebude možné CentralAuth pro vaši rodinu wiki použít.
To zahrnuje nastavení $wgLocalDatabases
a přiřazení $wgConf->wikis
a $wgConf->settings
(minimum je $wgCanonicalServer
, $wgServer
a $wgArticlePath
).
Postupujte pečlivě podle příkladů.
Pokud vytváříte novou rodinu wiki, mějte na paměti, že může být snazší, pokud databáze pro wikiny v každé skupině mají stejnou příponu (např. hypotetické databáze enwiki
, dewiki
, frwiki
atd., týkající se wikin patřících do stejné skupina, všechny mají příponu "wiki
").
Po instalaci rozšíření musíte shromáždit některá data v databázi CentralAuth. Abyste mohli zpětně nastavit globální účty, budete muset spustit skripty migratePass0.php a migratePass1.php. První z nich ukládá informace o vašich wiki v databázi CentralAuth, zatímco druhý používá automatickou heuristiku migrace ke generování globálních účtů. Uživatel může sloučit své účty ručně pomocí Special:MergeAccount. Pro testovací účely lze použít suché běhy.
Chcete-li povolit globální skupiny, budete muset provést záznam do tabulky global_group_permissions
ve vaší databázi CentralAuth s ggp_group='steward'
a (pro přístup k rozhraní pro správu skupiny) ggp_permission=globalgrouppermissions
.
Ukázkový dotaz, který se doporučuje použít, je:
INSERT INTO global_group_permissions (ggp_group,ggp_permission) VALUES ('steward','globalgrouppermissions'), ('steward','globalgroupmembership');
Poté povyšte některé uživatele na správce:
INSERT IGNORE INTO global_user_groups (gug_user, gug_group) VALUES ((SELECT gu_id FROM globaluser WHERE gu_name='Admin'), 'steward');
Existují různá nastavení, která můžete chtít upravit (např. zda poskytnout jednotné přihlášení v celé doméně), uvedená v CentralAuth.php.
Zejména budete chtít přepsat výchozí hodnotu $wgVirtualDomainsMapping['virtual-centralauth']
, pokud se vaše databáze CentralAuth jmenuje jinak než $2.
Ujistěte se, že jste za řádek wfLoadExtension
v LocalSettings.php
vložili tato nastavení, např.:
wfLoadExtension( 'CentralAuth' );
$wgVirtualDomainsMapping['virtual-centralauth'] = [ 'db' => 'centralauth' ];
Chování "SUL2"
V červenci 2013 WMF změnil svůj přístup k přihlašování uživatelů do více wikin.
Když je nakonfigurován pro tento nový přístup, po úspěšném přihlášení a vytvoření účtu se CentralAuth přesměruje na Special:CentralLogin/start?token=somevalue
na "centrální přihlašovací wiki", která nastaví cookies na této wiki a poté přesměruje zpět na přihlášenou wiki.
Vynechá stránku "Úspěšné přihlášení/vytvoření účtu", místo toho přesměruje zpět na stránku "návratu", na které byl uživatel původně.
Do zápatí této stránky umístí obrázky o rozměrech 1 x 1 pixel místo ikon dříve používaných na stránce "Úspěšné přihlášení/vytvoření účtu".
Nastavení pro toto jsou zhruba
# Obecná konfigurace CentralAuth
$wgCentralAuthCookies = true;
// výchozí je $1
$wgVirtualDomainsMapping['virtual-centralauth'] = [ 'db' => 'centralauthDatabaseName' ];
$wgCentralAuthAutoMigrate = true;
$wgCentralAuthAutoLoginWikis = [
# Mapování z názvu domény na wiki id, aby se ostatní wiki automaticky přihlašovaly
'enwiki.mediawiki.mwdd.localhost' => 'enwiki',
];
# Aktivuje přesměrování na "centrální přihlašovací wiki"
$wgCentralAuthLoginWiki = 'WikiIdOfLoginWiki';
$wgCentralAuthLoginWiki
je id (obvykle název databáze) wiki, na kterou se CentralAuth přesměruje při přihlášení a vytvoření účtu.
Problémy s mezipamětí
Pro dosažení nejlepších výsledků se doporučuje používat memcached.
Pokud máte pouze jeden server, mohou také fungovat mezipaměti akcelerátoru (CACHE_ACCEL
) jako APCu, ale nepoužívejte je, pokud máte více serverů.
Pokud nemáte nastavenou mezipaměť (tj. CACHE_NONE
) pro $wgMainCacheType
nebo používáte CACHE_DB
, musíte se ujistit, že všechny vaše wiki používají stejnou tabulku mezipaměti.
Ve výchozím nastavení bude každá wiki ve vaší wiki farmě používat tabulku objectcache
ve své vlastní databázi (s vlastní předponou db), když je $wgMainCacheType
nastaveno na CACHE_NONE
nebo CACHE_DB
.
Aby to fungovalo s CentralAuth, musíme říci wikinám, aby používali centrální tabulku mezipaměti.
Pokud chcete vytvořit centrální mezipaměťovou tabulku v databázi centralauth
(a za předpokladu, že jedna z vašich stávajících wikin má název databáze enwiki
), spusťte kód jako následující a zkopírujte tabulku do vaší druhé databáze:
CREATE TABLE centralauth.objectcache LIKE enwiki.objectcache
Poté přidejte následující konfiguraci do všech wikin, abyste jim řekli, aby používali centrální tabulku místo své vlastní tabulky:
$wgSharedDB = 'centralauth'; // nebo jakoukoli databázi, kterou používáte pro centrální data
$wgSharedTables = [ 'objectcache' ]; // nezapomeňte nejprve zkopírovat strukturu tabulky do centrální databáze
$wgCentralAuthSessionCacheType = CACHE_DB; // řekne mediawiki, aby používala databázi objectcache pro centrální ověřování.
When running PHPUnit tests locally with your wiki farm and do not want them to fail due to an attempt to clone database tables with the shared tables config above, use:
if ( defined( 'MW_PHPUNIT_TEST' ) ) {
$wgSharedTables = [];
} else {
$wgSharedTables = [ 'objectcache' ];
}
HTTP a HTTPS
Od roku 2023 CentralAuth nepodporuje wikiny s HTTP/HTTPS se smíšeným protokolem, pouze wikiny s čistým HTTPS (s $wgForceHTTPS nastaveným na true
) a wikiny s čistým HTTP (primárně pro místní testování).
See issue T348852.
Konfigurace
Database Virtual Domains Mapping
Since MediaWiki 1.41, you can configure database virtual domains mapping for CentralAuth, and this replaced $wgCentralAuthDatabase
.
To setup virtual domains mapping with CentralAuth, use:
// 'centralauth' is the name of the your CentralAuth database.
$wgVirtualDomainsMapping['virtual-centralauth'] = [ 'db' => 'centralauth' ];
parametr | výchozí | komentář |
---|---|---|
(deprecated ) $wgCentralAuthDatabase
|
null
|
Název databáze, ve které uchováváte data centrálního ověřování.
Pokud toto není na primárním připojení k databázi, nezapomeňte také nastavit Chcete-li použít databázi s předponou tabulky, nastavte tuto proměnnou na " NOTE: This setting has been deprecated, use virtual domains mapping as described above. |
$wgCentralAuthAutoMigrate
|
false
|
Pokud je true , stávající nepřipojené účty budou automaticky migrovány, pokud je to možné, při prvním přihlášení.
Jakýkoli nově vytvořený účet bude nutné připojit. Pokud je |
$wgCentralAuthAutoMigrateNonGlobalAccounts
|
false
|
Pokud je true , existující nepřipojené účty, kde neexistuje žádný globální účet, budou porovnány, aby se zjistilo, zda lze provést sloučení na základě hesel a e-mailů bez kolize (všechny účty se sloučí).
To bylo dříve kontrolováno |
$wgCentralAuthStrict
|
false
|
Pokud je true , zbývajícím nepřipojeným účtům bude zakázáno se přihlásit, dokud nebudou vyřešeny.
|
$wgCentralAuthDryRun
|
false
|
Pokud je true , sloučení ve skutečnosti nebude možné prostřednictvím rozhraní Special:MergeAccount.
|
$wgCentralAuthCookies
|
false
|
Je-li true , budou globální soubory cookie relace a tokenu nastaveny spolu s tokeny relace pro wiki a přihlašovacími tokeny, když se uživatelé přihlásí pomocí globálního účtu.
To umožňuje ostatním wikinám ve stejné doméně je transparentně přihlásit. |
$wgCentralAuthLoginWiki
|
false
|
Název databáze centrální přihlašovací wiki. Toto je alternativa k přímému nastavení souborů cookie mezi doménami pro každou wiki v $wgCentralAuthAutoLoginWikis . Pokud je nastaveno, wiki s jediným přihlášením bude používat relaci/cookie ke zpracování sjednocených přihlašovacích relací napříč wikinami.
Při přihlášení budou uživatelé přesměrováni na Special:CentralLogin/login stránku přihlašovací wiki a poté přesměrováni zpět na Special:CentralLogin na původní wiki. Během tohoto procesu se nastaví centrální přihlašovací wiki cookie a relace. Když uživatel přistupuje na jiné wikiny, přihlašovací wiki bude zkontrolována pomocí JavaScriptu, aby se zkontroloval stav přihlášení a nastavila se místní relace a soubory cookie. To vyžaduje |
$wgCentralAuthCookieDomain
|
''
|
Doména, pro kterou se mají nastavit globální soubory cookie.
Například |
$wgCentralAuthCookiePrefix
|
'centralauth_'
|
Předpona pro soubory cookie globálního ověřování CentralAuth. |
$wgCentralAuthCookiePath
|
'/'
|
Cesta pro soubory cookie globálního ověřování CentralAuth. Tuto proměnnou nastavte, chcete-li omezit soubory cookie na určitou cestu v doméně určené parametrem $wgCentralAuthCookieDomain .
|
$wgCentralAuthAutoLoginWikis
|
[]
|
Seznam ID wiki, která by měla být volána při přihlášení, aby se pokusila nastavit soubory cookie třetích stran pro stav globální relace.
ID wiki je obvykle název databáze, kromě případů, kdy se používají předpony tabulek, v takovém případě je to název databáze, oddělovač pomlčky a potom předpona tabulky. To umožňuje farmě s více doménami druhé úrovně nastavit globální relaci na všech z nich klepnutím na jednu wiki z každé domény (en.wikipedia.org, en.wikinews.org atd.). Provedete to přístupem Pokud je prázdné, nebudou nalezeny žádné další wikiny. Klíč by měl být nastaven na název domény cookie. |
$wgCentralAuthAutoCreateWikis
|
[]
|
Seznam wiki ID, na kterých by měl být automaticky vytvořen připojený místní účet při vytvoření globálního účtu.
ID wiki je obvykle název databáze, kromě případů, kdy se používají předpony tabulek, v takovém případě je to název databáze, oddělovač pomlčky a potom předpona tabulky. |
$wgCentralAuthLoginIcon
|
false
|
Cesta místního souborového systému k ikoně vrácená Special:CentralAutoLogin by měla být 20x20px PNG.
|
$wgCentralAuthPrefsForUIReload
|
[ 'skin', 'language', 'thumbsize', 'underline', 'stubthreshold', 'showhiddencats', 'justify', 'numberheadings', 'editondblclick', 'editsection', 'editsectiononrightclick', 'usenewrc', 'extendwatchlist' ]
|
Uživatelské předvolby, pro které bychom měli doporučit opětovné načtení stránky po úspěšném centrálním přihlašovacím dotazu.
Pokud potřebujete udělat něco složitějšího než jen |
$wgCentralAuthRC
|
[]
|
Pole nastavení pro odesílání událostí CentralAuth do zdrojů RC.
|
$wgCentralAuthWikisPerSuppressJob
|
10
|
Velikost wikin zpracovaná v jedné uživatelské úloze potlačení. Mějte na paměti, že jedna wiki vyžaduje ~10 dotazů.
|
$wgCentralAuthReadOnly
|
false
|
Jako $wgReadOnly , používaný k nastavení rozšíření do režimu pouze pro čtení databáze.
|
$wgCentralAuthEnableGlobalRenameRequest
|
false
|
Značka funkce pro Special:GlobalRenameRequest .
|
$wgCentralAuthGlobalPasswordPolicies
|
[]
|
Globální zásady hesel. Používají se jako zásady místních hesel, používají se nejsilnější pravidla platná pro uživatele. Zásady se mohou vztahovat buď na místní skupinu (pokud je uživatel členem této skupiny na libovolné wiki, zásady se budou vztahovat na tohoto uživatele) nebo na globální skupinu.
|
$wgGlobalRenameDenylist
|
null
|
Seznam uživatelů, kteří nebudou moci vytvářet nové požadavky na globální přejmenování prostřednictvím Special:GlobalRenameRequest.
Existují dva způsoby nastavení:
Můžete použít přesné názvy nebo regulární výrazy.
|
$wgCentralAuthGlobalBlockInterwikiPrefix
|
"global"
|
Při globálním omezení uživatele se do všech wikin vloží blok proti tomuto uživateli. CentralAuth nastaví autora těchto bloků jako $wgCentralAuthGlobalBlockInterwikiPrefix>(přezdívka uživatele, který vytvořil omezení) . Například pokud $wgCentralAuthGlobalBlockInterwikiPrefix = "Admins"; , a Joe omezí Johna, všechny wikiny zobrazí v BlockList blok vůči Johnovi vytvořený Admins>Joe m.
|
Použití
Umožňuje přihlášení jednoho uživatele (SUL) pomocí systému MediaWiki AuthPlugin. Vytvoření a přihlášení uživatelů se provádí globálně pomocí jedné centrální uživatelské tabulky napříč všemi wikinami. Všimněte si, že místní uživatelské účty jsou automaticky vytvořeny při vytváření/přihlášení účtu.
Toto rozšíření také implementuje globální skupiny uživatelů, do kterých mohou globální účty patřit.
Uživatelská práva
CentralAuth definuje několik nových uživatelských práv:
Uživatelská práva | Schopnosti | Výchozí skupina | Stav |
---|---|---|---|
centralauth-createlocal
|
Vynucené vytvoření místního účtu pro globální účet | Správci a sysopové | Aktivní v MW 1.36+ |
centralauth-lock
|
Zabránění uživatelům v přihlášení na jakékoli wiki | Správci | Aktivní |
centralauth-suppress
|
Potlačení nebo zobrazení globálních účtů | Správci | Aktivní |
centralauth-rename
|
Přejmenování globálních účtů | Správci | Aktivní |
centralauth-unmerge
|
Zrušení sloučení globálních účtů z místního účtu | Správci | Aktivní |
centralauth-merge
|
Globální sloučení všech účtů CentralAuth | Všichni uživatelé | Aktivní; obvykle automatické |
globalgrouppermissions
|
Spravování oprávnění globálních skupin | Globální správci | Aktivní; není ve výchozím nastavení přiřazeno místním správcům |
globalgroupmembership
|
Úprava členství v globálních skupinách | Globální správci | Aktivní; není ve výchozím nastavení přiřazeno místním správcům |
Funkce
Přihlášení jednoho uživatele (SUL)
Uživatel s účtem na více než jedné wiki může použít Special:MergeAccount k vytvoření svého globálního uživatelského účtu, který pak může být použit na jakékoli wiki. Uživatelé s oprávněním centralauth-unmerge
(ve výchozím nastavení přiděleným správcům) mohou vrátit zpět sloučení globálního účtu, kde se všechna hesla resetují zpět na nastavení před sloučením.
Uživatelské účty lze nyní také globálně přejmenovávat.
Zamykání a skrývání globálních uživatelů
Globální účet může být zamčen nebo skryt uživatelem s oprávněními centralauth-lock
a centralauth-suppress
, v daném pořadí, které jsou ve výchozím nastavení přiděleny místní skupině 'správci'.
Uzamčený globální účet bude okamžitě odhlášen z jakékoli relace na jakékoli wiki, ke které je aktuálně přihlášen.
Uživatelské jméno skrytého globálního účtu není viditelné v žádném protokolu kromě globálního protokolu účtu.
Wiki sady
Sada wiki je skupina wikin specifikovaná uživatelem s právem globalgrouppermissions
.
Sady mohou být opt-in (wiki ve výchozím nastavení nejsou) nebo opt-out (wiki jsou v ní, pokud nejsou odhlášeny).
Globální skupiny uživatelů
Jakmile povolíte globální skupiny uživatelů, jak je popsáno v části instalace, může správce po migraci použít rozhraní Special:GlobalGroupPermissions ke konfiguraci globálních skupin uživatelů a jejich práv.
Globální uživatelská skupina je ve výchozím nastavení aktivní na všech wikinách (uživatelé v ní mají svá práva na všech wikinách), pokud skupina nebyla specifikována tak, aby byla aktivní pouze na konkrétní sadě wiki (uživatelé ve skupině mají pouze práva pokud jsou na wiki v sadě).
Oprávnění globální skupiny nejsou uvedena na Special:ListUsers, ale místo toho na Special:GlobalUsers.
Přiděluje je uživatel s oprávněním globalgroupmembership
(ve výchozím nastavení globální skupina stewards
) a udělují specifikovaná práva uživateli, i když to lokální práva definovaná $wgGroupPermissions
nedělají.
Licencování a stahování
Rozšíření je dostupné pod licencí GNU General Public License 2.0 nebo novější a lze jej stáhnout z Gitu nebo k němu přistupovat prostřednictvím webového prohlížeče.
Software je poskytován tak, jak je. Aktualizace budou provedeny podle potřeb wikin Wikimedie. Nebo kde se objeví kritická zranitelnost.
API
Podívejte se na stránku Extension:CentralAuth/API .
Poznámky pod čarou
Související odkazy
- Specifikace jednotného přihlášení na Meta-Wiki
- Nápověda:Jednotné přihlášení na Meta-Wiki
- Extension:CentralAuth/authentication - Funkce ověřování CentralAuth
$wgSharedDB
- User:Legoktm/evil-plans2.txt - 2015 plán na postupné ukončení CentralAuth ve WMF
- Global session threat assessment
- w:Wikipedia:Integrated watchlists
- Řídicí tok CentralAuth
- Stuck global renames
Toto rozšíření se používá na jednom nebo více projektech Wikimedie. Pravděpodobně to znamená, že rozšíření je stabilní a funguje dostatečně dobře, aby jej mohly používat weby s tak vysokou návštěvností. Vyhledejte tento název rozšíření v konfiguračních souborech CommonSettings.php a InitialiseSettings.php Wikimedie, abyste viděli, kde je nainstalováno. Úplný seznam rozšíření nainstalovaných na konkrétní wiki lze vidět na stránce wiki Special:Version. |
Toto rozšíření je zahrnuto v následujících wiki farmách/hostitelích a/nebo balíčcích: Toto není autoritativní seznam. Některé wiki farmy/hostitelé a/nebo balíčky mohou toto rozšíření obsahovat, i když zde nejsou uvedeny. Pro potvrzení se vždy obraťte na své wiki farmy/hostitele nebo balíček. |