Extension:CentralAuth/nl
CentralAuth staat het samenvoegen toe van verschillende bestaande globale accounts naar een globaal account.
Installatie
Zie de setup sectie hieronder voor de vereisten voor het gebruik van CentralAuth. Volg dan deze instructies wanneer u klaar bent om CentralAuth te activeren:
- Installeer Extension:AntiSpoof , omdat het een vereiste afhankelijkheid is.
- Download de laatste snapshot en pak deze uit in uw map
extensions
. - Kies een database en maak de database tabellen voor CentralAuth. U kunt een bestaande database gebruiken of een nieuwe maken. (De extensie maakt standaard gebruik van de lokale database van de wiki, wat handig is voor geautomatiseerd testen, maar niet echt logisch is op een echte wiki-farm (omdat het voor elke wiki anders zal zijn, maar het doel van CentralAuth is het delen van gegevens tussen wiki's), dus u zult dat opnieuw moeten configureren; zie
$wgVirtualDomainsMapping['virtual-centralauth']
hieronder.) Gebruik deze database en voertables-generated.sql
uit.- Als u Extension:AntiSpoof gebruikt, moet u een globale
spoofuser
tabel maken (om nieuwe gebruikersnamen te blokkeren die lijken op bestaande gebruikersnamen in een wiki). Een manier om dit te doen is om de tabelspoofuser
uit de database van de lokale wiki te dumpen en het in de nieuwe$wgVirtualDomainsMapping['virtual-centralauth']
te importeren.
- Als u Extension:AntiSpoof gebruikt, moet u een globale
- Voeg
wfLoadExtension( 'CentralAuth' );
aan LocalSettings.php toe voor elke wiki, of in een ander PHP-bestand dat inLocalSettings.php
op elke wiki is opgenomen. - De extensie moet nu actief zijn.
Een nieuwe database aanmaken
Hier zijn voorbeelden van shell en SQL-commando's om de database centralauth
te maken, de tabel spoofuser
erin te kopiëren en bestaande gebruikersgegevens over te zetten.
Vervang $wgDBname en $wgDBuser met de waarden van uw eigen wiki-installatie.
Maak de nieuwe database aan (Houd er rekening mee dat deze stap optioneel is, u kunt in plaats daarvan een van uw bestaande databases gebruiken, in dat geval skipt u naar de stap maken tabellen):
$ cd extensions/CentralAuth
$ mysql -u root -p
(voeg het wachtwoord in voor root SQL-gebruiker)
CREATE DATABASE centralauth;
USE centralauth;
GRANT all on centralauth.* to '$wgDBuser'@'localhost';
quit
Onderhoudsscripts uitvoeren
Het volgende veronderstelt dat uw huidige werkmap uw MediaWiki-installatie bevat (niet uw map CentralAuth).
Maak de 'centrale auth' tabellen aan (het gebruik van sql.php
heeft de voorkeur).
php maintenance/run.php sql --wikidb centralauth extensions/CentralAuth/schema/<db_type>/tables-generated.sql
Als AntiSpoof is geïnstalleerd, maakt u de tabel via (U kunt ook een bestaande tabel AntiSpoof kopiëren als u eerdere accounts wilt behouden):
php maintenance/run.php sql --wikidb centralauth extensions/AntiSpoof/sql/<db_type>/tables-generated.sql
De migratiescripts voor gebruikers uitvoeren
$ php maintenance/run.php CentralAuth:migratePass0.php
$ php maintenance/run.php CentralAuth:migratePass1.php
Upgraden
CentralAuth is ontworpen voor grote wiki-farms die database-updates handmatig uitvoeren om zero-downtime-upgrades mogelijk te maken. Om die reden wordt de CentralAuth-database niet bijgewerkt met het gebruikelijke upgradeproces. Er wordt verwacht dat gebruikers van derden de ontwikkeling van CentralAuth volgen en de database migraties handmatig toepassen.
Setup
Eerst moet u uw wiki-familie configureren met $wgConf
, anders kan CentralAuth niet worden gebruikt voor uw wiki-familie.
Dit omvat het instellen van $wgLocalDatabases
en het toewijzen aan $wgConf->wikis
en $wgConf->settings
(minimum is $wgCanonicalServer
, $wgServer
en $wgArticlePath
).
Bekijk de voorbeelden zorgvuldig.
Als u een nieuwe wiki-familie aan het maken bent, moet u bedenken dat het makkelijker kan zijn als de databases voor de wiki's in elke groep hetzelfde achtervoegsel hebben (bijvoorbeeld hypothetische databases enwiki
, dewiki
, frwiki
, enz., die betrekking hebben op wiki's die tot dezelfde groep behoren, alle hebben het achtervoegsel "wiki
").
Na het installeren van de extensie moet u wat gegevens verzamelen in de CentralAuth-database. Om terugwerkend globale accounts op te zetten, moet u de scripts migratePass0.php en migratePass1.php uitvoeren. De eerste opslaat informatie over uw wiki's in de CentralAuth-database, terwijl de tweede automatische migratie heuristiek gebruikt om globale accounts te genereren. Een gebruiker kan zijn accounts handmatig via Special:MergeAccount samenvoegen. Voor het testen is er een 'dry run' mogelijk, uitvoeren zonder iets in de database te wijzigen.
Om globale groepen in te schakelen, moet u een record maken in de tabel global_group_permissions
in uw CentralAuth-database, met ggp_group='steward'
en (voor toegang tot de groepsbeheersinterface) ggp_permission=globalgrouppermissions
.
Een query die wordt aanbevolen is:
INSERT INTO global_group_permissions (ggp_group,ggp_permission) VALUES ('steward','globalgrouppermissions'), ('steward','globalgroupmembership');
Vervolgens, promoveer sommige gebruikers naar stewards:
INSERT IGNORE INTO global_user_groups (gug_user, gug_group) VALUES ((SELECT gu_id FROM globaluser WHERE gu_name='Admin'), 'steward');
Er zijn verschillende instellingen die u mogelijk wilt wijzigen (bijvoorbeeld of u eenmalige aanmelding voor een heel domein wilt aanbieden) die worden vermeld in CentralAuth.php.
In het bijzonder zult u een waarde voor $wgVirtualDomainsMapping['virtual-centralauth']
willen instellen.
Zorg ervoor dat u deze instellingen na de regel wfLoadExtension
in LocalSettings.php
plaatst, bijvoorbeeld:
wfLoadExtension( 'CentralAuth' );
$wgVirtualDomainsMapping['virtual-centralauth'] = [ 'db' => 'centralauth' ];
"SUL2" gedrag
In juli 2013 veranderde WMF zijn aanpak om gebruikers in meerdere wiki's te loggen.
Na een succesvolle login en accountopbouw wordt CentralAuth bij het configureren van deze nieuwe aanpak naar Special:CentralLogin/start?token=somevalue
doorverwezen op een "centrale login wiki", die cookies op die wiki instelt en vervolgens terugverwijst naar de ingelogde wiki.
Het verwijdert de pagina "login/account creatie succes", maar verwijst terug naar de pagina "returnto" waarop de gebruiker oorspronkelijk was.
Het plaatst 1x1 pixel afbeeldingen in de voet van die pagina, in plaats van de iconen die vroeger werden gebruikt op de pagina "Aanmelden/account maken geslaagd".
De instellingen voor dit zijn, ongeveer,
# Algemene configuratie CentralAuth
$wgCentralAuthCookies = true;
// standaard is het gebruiken van de lokale wiki database
$wgVirtualDomainsMapping['virtual-centralauth'] = [ 'db' => 'centralauthDatabaseName' ];
$wgCentralAuthAutoMigrate = true;
$wgCentralAuthAutoLoginWikis = [
# Koppeling van domeinnaam naar wiki-id voor andere wiki's om automatisch in te loggen
'enwiki.mediawiki.mwdd.localhost' => 'enwiki',
];
# Activeert de doorverwijzing naar de "centrale login wiki"
$wgCentralAuthLoginWiki = 'WikiIdOfLoginWiki';
$wgCentralAuthLoginWiki
is de id (meestal de database-naam) van de wiki naar welke CentralAuth zal omleiden bij login en een account zal maken.
Cache problemen
Voor optimale resultaten wordt aanbevolen memcached of een meer persistente cache te gebruiken.
Als u maar één server hebt, kunnen ook accelerator caches (CACHE_ACCEL
) zoals APCu werken, maar gebruik die niet als u meerdere servers heeft.
Als u geen cache hebt ingesteld (d.w.z. CACHE_NONE
) voor $wgMainCacheType
, of CACHE_DB
gebruikt, dan moet u ervoor zorgen dat al uw wiki's dezelfde cachingtabel gebruiken.
Standaard gebruikt elke wiki in uw wiki-farm de tabel objectcache
in zijn eigen database (met zijn eigen db-prefix) wanneer $wgMainCacheType
is ingesteld op CACHE_NONE
of CACHE_DB
.
Om dit te laten werken met CentralAuth, moeten we de wiki's vertellen om een centrale cache-tabel te gebruiken.
Als u een centrale cachingtabel wilt maken in de centralauth
-database (en als u een bestaande wiki een databasenaam van enwiki
heeft), voer dan de volgende code uit om de tabel naar uw andere database te kopiëren (ervan uitgaande dat u een geïnstalleerde wiki heeft met een database met de naam "Enwiki" en een andere database met de naam "Centralauth"):
CREATE TABLE centralauth.objectcache LIKE enwiki.objectcache
Voeg dan de volgende config toe aan alle wiki's om ze te vertellen de centrale tabel te gebruiken in plaats van hun eigen tabel:
$wgSharedDB = 'centralauth'; // of welke database u gebruikt voor centrale gegevens
$wgSharedTables = [ 'objectcache' ]; // vergeet niet om eerst de tabelstructuur te kopiëren naar de centrale database
$wgCentralAuthSessionCacheType = CACHE_DB; // Zeg mediawiki om objectcache database te gebruiken voor centrale auth.
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 en HTTPS
Sinds 2023 ondersteunt CentralAuth geen mixed-protocol HTTP/HTTPS wiki's, alleen pure-HTTPS-wiki's (met $wgForceHTTPS ingesteld op true
) en pure-HTTP-wiki's (primair voor lokaal testen).
See issue T348852.
Configuratie
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' ];
parameter | standaardwaarde | opmerkingen |
---|---|---|
(deprecated ) $wgCentralAuthDatabase
|
null
|
Database naam waarin de centrale auth-gegevens staan.
Als dit niet op de primaire databaseverbinding is, vergeet dan niet om Om een database met een tabelprefix te gebruiken, stel deze variabele op " NOTE: This setting has been deprecated, use virtual domains mapping as described above. |
$wgCentralAuthAutoMigrate
|
false
|
Als true , worden bestaande niet-gelieerde accounts automatisch overgezet indien mogelijk bij de eerste login.
Alle nieuwe accounts moeten worden bijgevoegd. Als |
$wgCentralAuthAutoMigrateNonGlobalAccounts
|
false
|
Als true , bestaande niet-gelieerde accounts waar geen globaal account bestaat, worden vergeleken om te zien of een fusie kan worden gemaakt op basis van wachtwoorden en e-mails zonder botsingen (alle accounts worden samengevoegd).
Dit werd eerder beheerd met |
$wgCentralAuthStrict
|
false
|
Als true , een resterend account dat niet is samengevoegd / overgezet wordt verboden in te loggen totdat het probleem is opgelost.
|
$wgCentralAuthDryRun
|
false
|
Als true , samenvoegen is niet mogelijk via de Special:MergeAccount interface.
|
$wgCentralAuthCookies
|
false
|
Als true , de globale sessie- en tokencookies worden geplaatst naast de per-wiki sessie-en login-tokens wanneer gebruikers zich aanmelden met een globaal account.
Dit stelt andere wiki's op hetzelfde domein in staat om ze transparant in te loggen. |
$wgCentralAuthLoginWiki
|
false
|
Database naam van een centrale login wiki. Dit is een alternatief voor het rechtstreeks instellen van cross-domain cookies voor elke wiki in $wgCentralAuthAutoLoginWikis . Als het is ingesteld, zal een enkele-login wiki een sessie/cookie gebruiken om geunificeerde login sessies over wiki's te beheren.
Bij inloggen worden gebruikers doorverwezen naar de pagina Special:CentralLogin/login van de login wiki en vervolgens terug naar Special:CentralLogin op de oorspronkelijke wiki. In het proces worden het centrale login-wiki cookie en de sessie ingesteld. Als de gebruiker toegang zoekt naar een andere wiki, wordt de login wiki via JavaScript gecontroleerd om de inlogstatus te controleren en de lokale sessie en cookies te instellen. Hiervoor is |
$wgCentralAuthCookieDomain
|
''
|
Domein waarvoor globale cookies worden ingesteld.
Bijvoorbeeld, |
$wgCentralAuthCookiePrefix
|
'centralauth_'
|
Prefix voor de globale authenticatiecookies van CentralAuth. |
$wgCentralAuthCookiePath
|
'/'
|
Pad voor de globale authenticatiecookies van CentralAuth. Stel deze variabele in als u cookies wilt beperken tot een bepaald pad binnen het door $wgCentralAuthCookieDomain gespecificeerde domein.
|
$wgCentralAuthAutoLoginWikis
|
[]
|
Lijst van wiki-ID's die bij het inloggen moeten worden aangeroepen om te proberen cookies van derden voor de globale sessie-staat te instellen.
De wiki-ID is meestal de naam van de database, behalve wanneer tabel-prefixen worden gebruikt, in welk geval het de database naam, een streepje en dan de tabel-prefix is. Dit stelt een farm met meerdere second-level domeinen in staat om een globale sessie op te zetten op allemaal door op één wiki van elk domein te klikken (en.wikipedia.org, en.wikinews.org, enz.). Dit gebeurt door op elke wiki Als het leeg is, worden er geen andere wiki's geprobeerd. De key moet worden ingesteld op de cookie domeinnaam. |
$wgCentralAuthAutoCreateWikis
|
[]
|
Lijst met wiki-ID's waarop automatisch een bijgevoegd lokaal account moet worden aangemaakt wanneer het globale account wordt aangemaakt.
De wiki-ID is meestal de naam van de database, behalve wanneer tabel-prefixen worden gebruikt, in welk geval het de database naam, een streepje en dan de tabel-prefix is. |
$wgCentralAuthLoginIcon
|
false
|
Het lokale pad naar het pictogram dat door Special:CentralAutoLogin wordt teruggegeven. Het pictogram moet een PNG van 20x20px zijn.
|
$wgCentralAuthPrefsForUIReload
|
[ 'skin', 'language', 'thumbsize', 'underline', 'stubthreshold', 'showhiddencats', 'justify', 'numberheadings', 'editondblclick', 'editsection', 'editsectiononrightclick', 'usenewrc', 'extendwatchlist' ]
|
Gebruikersvoorkeuren waarvoor we de pagina na een succesvolle centrale login opnieuw moeten laden.
Als u iets ingewikkelder moet doen dan |
$wgCentralAuthRC
|
[]
|
Array van instellingen voor het verzenden van de CentralAuth-gebeurtenissen naar de RC Feeds.
|
$wgCentralAuthWikisPerSuppressJob
|
10
|
Grootte van wiki's die in één user job worden behandeld. Houd er rekening mee dat een wiki ~10 queries nodig heeft.
|
$wgCentralAuthReadOnly
|
false
|
Zoals $wgReadOnly , gebruikt om de extensie in te stellen op de database alleen-lezen modus.
|
$wgCentralAuthEnableGlobalRenameRequest
|
false
|
Functie vlag voor Special:GlobalRenameRequest .
|
$wgCentralAuthGlobalPasswordPolicies
|
[]
|
Globaal wachtwoord beleid. Deze worden toegepast als lokale wachtwoordbeleid, het sterkste beleid dat van toepassing is op een gebruiker wordt gebruikt. Beleid kan gelden voor een lokale groep (als de gebruiker lid is van die groep op een wiki, zal het beleid gelden voor die gebruiker) of een globale groep.
|
$wgGlobalRenameDenylist
|
null
|
Een lijst met gebruikers die geen nieuwe algemene hernoemingsverzoeken mogen doen via Special:GlobalRenameRequest.
Er zijn twee manieren om het in te stellen:
U kunt de exacte namen of reguliere expressies gebruiken.
|
$wgCentralAuthGlobalBlockInterwikiPrefix
|
"global"
|
Bij het globaal onderdrukken van een gebruiker wordt een blok tegen deze gebruiker in alle wiki's ingevoegd. CentralAuth stelt de auteur van deze blokken in als $wgCentralAuthGlobalBlockInterwikiPrefix>(bijnaam-van-de-gebruiker-die-de-onderdrukking heeft gemaakt) . Bijvoorbeeld, als $wgCentralAuthGlobalBlockInterwikiPrefix = "Admins"; , en Joe onderdrukt John, alle wiki's zullen in BlockList een blok tegen John tonen gemaakt door Admins>Joe .
|
Gebruik
Maakt een single-user login (SUL) systeem mogelijk met behulp van MediaWiki's AuthPlugin systeem. Het aanmaken en inloggen van gebruikers gebeurt globaal met behulp van één centrale gebruikerstabel op alle wiki's. Houd er echter rekening mee dat lokale gebruikersaccounts automatisch worden aangemaakt bij het aanmaken/inloggen van een account.
Deze extensie implementeert ook globale gebruikersgroepen, waartoe globale accounts kunnen behoren.
Gebruikersrechten
CentralAuth definieert verschillende nieuwe gebruikersrechten:
Gebruikersrecht | Beschrijving | Standaardgroep | Status |
---|---|---|---|
centralauth-createlocal
|
Geforceerd een lokaal account maken voor een globaal account | Stewards en sysops | Actief in MW 1.36+ |
centralauth-lock
|
Voorkomen dat gebruikers inloggen op een wiki | Stewards | Actief |
centralauth-suppress
|
Onderdrukken / weergeven van globale accounts | Stewards | Actief |
centralauth-rename
|
Globale gebruikers hernoemen | Stewards | Actief |
centralauth-unmerge
|
Globale accounts afsplitsen een lokaal account | Stewards | Actief |
centralauth-merge
|
Alle accounts van CentralAuth globaal samenvoegen | Alle gebruikers | Actief; meestal automatisch |
globalgrouppermissions
|
Rechten van globale groepen beheren | Globale stewards | Actief; niet standaard aan lokale stewards toegewezen |
globalgroupmembership
|
Lidmaatschap van globale groepen bewerken | Globale stewards | Actief; niet standaard aan lokale stewards toegewezen |
Functies
Single-user login (SUL)
Een gebruiker met een account op meer dan één wiki kan Special:MergeAccount gebruiken om zijn globale gebruikersaccount te maken, dat vervolgens op elke wiki kan worden gebruikt. Gebruikers met het recht centralauth-unmerge
(standaard verleend aan stewards) kunnen het samenvoegen van een globaal account annuleren, waarbij alle wachtwoorden worden hersteld naar de waarden voor het samenvoegen.
Gebruikersaccounts kunnen nu ook globaal een andere naam krijgen.
Blokkeren en verbergen globale gebruikers
Een globaal account kan worden geblokkeerd of verborgen door een gebruiker met respectievelijk het recht centralauth-lock
en centralauth-suppress
, die standaard worden gegeven aan de lokale groep 'stewards'.
Een geblokkeerd globaal account wordt onmiddellijk uitgelogd van elke sessie op elke wiki waar die nu is aangemeld.
De gebruikersnaam van een verborgen globaal account is niet zichtbaar in andere logs dan de globale accountslog.
Wiki sets
Een wiki set is een groep wiki's die door een gebruiker is gespecificeerd met het recht globalgrouppermissions
.
Sets kunnen opt-in zijn (wiki's staan er standaard niet in) of opt-out (wiki's staan erin, tenzij ze zich afmelden).
Globale gebruikersgroepen
Zodra u globale gebruikersgroepen heeft ingeschakeld zoals beschreven in het installatie-deel, kan een migrerende steward de interface Special:GlobalGroupPermissions gebruiken om globale gebruiksgroepen en hun rechten te configureren.
Een globale gebruikersgroep is standaard actief op alle wiki's (de gebruikers daarin hebben hun rechten op alle wiki's), tenzij de groep is gespecificeerd om alleen actief te zijn op een specifieke wiki-set (de gebruiker in de groep heeft alleen de rechten als ze zich op een wiki in de set bevinden).
Globale groepsrechten worden niet getoond op Special:ListUsers, maar op Special:GlobalUsers.
Ze worden toegewezen door een gebruiker met het recht globalgroupmembership
(standaard de globale groep stewards
), en geven de gespecificeerde rechten aan de gebruiker, zelfs als de lokale rechten die door $wgGroupPermissions
worden gedefinieerd, dit niet doen.
Licentie en downloaden
De extensie is beschikbaar onder de GNU General Public License 2.0 of hoger, en kan worden gedownload van Git, of benaderd via de web-based viewer.
De software wordt geleverd zoals deze is. Updates worden gemaakt volgens de behoeften van Wikimedia wiki's; of waar kritieke kwetsbaarheden worden ontdekt.
API
Zie Extension:CentralAuth/API .
Referenties
Zie ook
- Globaal account
- Extension:CentralAuth/authentication - CentralAuth authenticatiefuncties
$wgSharedDB
- User:Legoktm/evil-plans2.txt - Plan in 2015 om CentralAuth op het WMF uit te schakelen.
- Global session threat assessment
- Essay geïntegreerde volglijsten
- CentralAuth stroomschema
- Stuck global renames
Deze uitbreiding wordt gebruikt op een of meerdere Wikimedia projecten. Dit betekent waarschijnlijk dat de uitbreiding stabiel is en goed werkt op dergelijke vaak bezochte websites. Zoek op de naam van deze uitbreiding in Wikimedia's CommonSettings.php en InitialiseSettings.php om te zien waar deze is geïnstalleerd. Een volledige lijst van de uitbreidingen die geïnstalleerd zijn op een bepaalde wiki kan worden gevonden op de Special:Version pagina van de wiki. |
Deze uitbreiding is beschikbaar op de volgende wiki-families en/of onderdeel van de volgende pakketten: Dit is geen gezaghebbende lijst. Sommige wikifarms/hosts en/of pakketten kunnen deze extensie bevatten, zelfs als ze hier niet worden vermeld. Controleer het altijd bij uw wiki farms/hosts of bundel. |