Extension:CentralAuth
CentralAuth permet de fusionner plusieurs systèmes de comptes distincts existants dans un seul système de comptes global.
Installation
Pour connaître les conditions d'utilisation de CentralAuth, voir ci-dessous le paragraphe sur la configuration. Suivez ensuite ces instructions lorsque vous êtes prêt à activer CentralAuth :
- Installez Extension:AntiSpoof/fr , car c'est une dépendance requise.
- Téléchargez la dernière image et développez-la dans votre répertoire
extensions
. - Choisissez une base de données et créez les tables de la base de données CentralAuth. Vous pouvez utiliser une base de données existante ou en créer une nouvelle (l'extension par défaut utilise la base de données locale du wiki, ce qui est pratique pour les tests automatisés mais n'a pas vraiment de sens sur une vraie ferme wiki (car elle sera différente pour chaque wiki quand le but de CentralAuth est de partager des données entre les wikis) alors vous devrez reconfigurer cela. Voir
$wgVirtualDomainsMapping['virtual-centralauth']
ci-dessous). Utilisez cette base de données puis exécuteztables-generated.sql
.- Si vous utilisez Extension:AntiSpoof/fr vous devrez créer une table globale
spoofuser
(pour bloquer les nouveaux noms d'utilisateur qui ressembleraient à des noms d'utilisateurs déjà existants sur les wikis). Une manière de faire ceci est de vider la tablespoofuser
à partir de la base de données locale du wiki et de l'importer dans le nouveau$wgVirtualDomainsMapping['virtual-centralauth']
.
- Si vous utilisez Extension:AntiSpoof/fr vous devrez créer une table globale
- Ajoutez
wfLoadExtension( 'CentralAuth' );
à votre LocalSettings.php pour chacun de vos wikis, ou dans un autre fichier PHP inclus dansLocalSettings.php
de chacun de vos wikis. - L'extension CentralAuth devrait maintenant être active.
Créer une nouvelle base de données
Voici des exemples de commandes shell et SQL pour créer la base de données centralauth
, copiez la table spoofuser
à l'intérieur, et migrez-y les données utilisateur existantes.
Remplacez $wgDBname et $wgDBuser par les valeurs concernant l'installation de votre propre wiki.
Créez la nouvelle base de données (notez que cette étape est facultative, vous pouvez utiliser à la place l'une de vos bases de données existantes, et dans ce cas passez directement à l'étape de création des tables) :
$ cd extensions/CentralAuth
$ mysql -u root -p
(entrer le mot de passe de l'utilisateur SQL racine)
CREATE DATABASE centralauth;
USE centralauth;
GRANT all on centralauth.* to '$wgDBuser'@'localhost';
quit
Exécuter les scripts de maintenance
Dans ce qui suit on suppose que votre répertoire de travail actuel est celui de votre installation MediaWiki (et non pas celui de CentralAuth).
Créez les tables central auth (il est préférable d'utiliser sql.php
.
php maintenance/run.php sql --wikidb centralauth extensions/CentralAuth/schema/<type_de_base_de_données>/tables-generated.sql
Si AntiSpoof est installé, créez la table avec la commande suivante (par ailleurs vous pouvez copier une table AntiSpoof existante si vous voulez conserver les entrées précédentes) :
php maintenance/run.php sql --wikidb centralauth extensions/AntiSpoof/sql/<type_de_base_de_données>/tables-generated.sql
Exécutez les scripts de migration des utilisateurs
$ php maintenance/run.php CentralAuth:migratePass0.php
$ php maintenance/run.php CentralAuth:migratePass1.php
Mise à jour
CentralAuth est conçu pour les grandes fermes de wiki qui exécutent manuellement des mises à jour de base de données afin de permettre des mises a jour avec un temps de panne à zéro. Pour cette raison, la base de données CentralAuth ne sera pas mise à jour avec le processus de mise à niveau habituel. A la place, les utilisateurs tiers doivent suivre le développement de CentralAuth et appliquer les migrations de la base de données manuellement.
Configuration
D'abord il faut configurer votre famille de wikis en utilisant $wgConf
, sinon CentralAuth ne peut être utilisé pour votre famille de wikis.
Cela comprend la définition de $wgLocalDatabases
et son initialisation à $wgConf->wikis
, et $wgConf->settings
(le minimum est $wgCanonicalServer
, $wgServer
et $wgArticlePath
).
Suivez les exemples soigneusement.
Si vous créez une nouvelle famille de wiki, gardez à l'esprit que cela peut être plus facile si les bases de données des wikis de chaque groupe ont le même suffixe (par exemple avec les bases de données hypothétiques enwiki
, dewiki
, frwiki
, etc., appartenant aux wikis d'un même groupe, elles ont toutes le même suffixe wiki
).
Après avoir installé l'extension, vous devez réunir quelques données dans la base de données de CentralAuth. Pour déclarer des comptes globaux a posteriori, vous devrez exécuter les scripts migratePass0.php et migratePass1.php . Le premier range les informations concernant vos wikis dans la base de données de CentralAuth, alors que le second utilise les heuristiques de migration automatique pour générer les comptes globaux. Les utilisateurs peuvent fusionner leur compte manuellement via Special:MergeAccount. Les exécutions à vide (dry runs) peuvent être utilisées à des fins de tests.
Pour autoriser les groupes globaux vous devrez créer une entrée dans la table global_group_permissions
de votre base de données CentralAuth, avec ggp_group='steward'
et (pour l'accès à l'interface de gestion des groupes) ggp_permission=globalgrouppermissions
.
Un exemple d'utilisation de requête que l'on recommande est :
INSERT INTO global_group_permissions (ggp_group,ggp_permission) VALUES ('steward','globalgrouppermissions'), ('steward','globalgroupmembership');
Then, promote some users into stewards:
INSERT IGNORE INTO global_user_groups (gug_user, gug_group) VALUES ((SELECT gu_id FROM globaluser WHERE gu_name='Admin'), 'steward');
Il existe différents paramètres que vous pouvez modifier (par exemple si vous voulez fournir la connexion unique à travers tout le domaine) listés dans CentralAuth.php.
En particulier, vous pouvez remplacer la valeur par défaut de $wgVirtualDomainsMapping['virtual-centralauth']
si votre base de données CentralAuth a un nom différent de $2.
Assurez-vous de mettre ce type de paramètre après la ligne wfLoadExtension
de LocalSettings.php
, par exemple :
wfLoadExtension( 'CentralAuth' );
$wgVirtualDomainsMapping['virtual-centralauth'] = [ 'db' => 'centralauth' ];
Comportement « SUL2 »
En juillet 2013 la Fondation Wikimedia a modifié son approche pour connecter les utilisateurs sur des wikis multiples.
Lorsqu'il est configuré pour cette nouvelle approche, après une connexion et une création de compte réussie, CentralAuth redirige vers Special:CentralLogin/start?token=somevalue
sur un wiki central de connexion, qui crée les cookies sur ce wiki puis redirige à nouveau vers le wiki à partir duquel vous vous êtes connecté.
Il supprime la page de « connexion / création réussie de compte » et à la place redirige l'utilisateur sur « retour vers » la page où il se trouvait intialement.
Il insère des images de 1 x 1 pixel dans le pied de page de cette page, à la place des icônes utilisées antérieurement sur la page de « connexion / création réussie de compte ».
Les paramètres pour ceci sont en gros :
# Configuration générale de CentralAuth
$wgCentralAuthCookies = true;
// La valeur par défaut est $1
$wgVirtualDomainsMapping['virtual-centralauth'] = [ 'db' => 'centralauthDatabaseName' ];
$wgCentralAuthAutoMigrate = true;
$wgCentralAuthAutoLoginWikis = [
# Correspondance entre le nom du domaine et l'id du wiki pour les autres wikis viennent se connecter automatiquement
'enwiki.mediawiki.mwdd.localhost' => 'enwiki',
];
# active la redirection vers le "wiki central de connexion"
$wgCentralAuthLoginWiki = 'WikiIdOfLoginWiki';
$wgCentralAuthLoginWiki
est l'id (généralement le nom de la base de données) du wiki vers lequel CentralAuth va rediriger lors de la connexion ou de la création d'un compte.
Problèmes du cache
Pour de meilleurs résultats, il est recommandé d'utiliser le cache mémoire ou un cache plus persistant.
Si vous n'avez qu'un seul serveur, les caches d'accélération (CACHE_ACCEL
) tels que APCu peuvent également fonctionner, mais il ne faut pas les utiliser si vous avez plusieurs serveurs.
Si vous utilisez aucun cache (par exemple CACHE_NONE
) pour $wgMainCacheType
, ou si vous utilisez CACHE_DB
, alors assurez-vous que tous vos wikis utilisent la même table de cache.
Par défaut, tous les wikis de votre ferme de wikis vont utiliser la table objectcache
dans leur propre base de données (avec leur propre préfixe de base de données) lorsque $wgMainCacheType
est initialisé à CACHE_NONE
ou CACHE_DB
.
Pour que cela fonctionne avec CentralAuth, nous devons dire aux wikis d'utiliser une table centrale en cache.
Si vous voulez créer une table centrale de cache dans la base de données centralauth
(et en supposant que l'un de vos wikis existant possède une base de données de nom enwiki
), exécutez un code similaire au suivant pour copier la table dans cette autre base (en supposant que vous ayez un wiki installé avec une base de données appelée « enwiki » et une autre base de données appelée « centralauth ») :
CREATE TABLE centralauth.objectcache LIKE enwiki.objectcache
Puis ajoutez la configuration suivante à tous les wikis pour leur dire d'utiliser la table centrale au lieu de leur table locale :
$wgSharedDB = 'centralauth'; // ou tout autre base de données que vous utiliser pour les données centralisées
$wgSharedTables = [ 'objectcache' ]; // rappelez-vous de copier la structure de la table dans la base de données centrale d'abord
$wgCentralAuthSessionCacheType = CACHE_DB; // dites à Mediawiki d'utiliser la base de données de l'objet en cache pour CentralAuth.
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 et HTTPS
Depuis 2023, CentralAuth ne prend pas en charge les wikis à protocole mixte HTTP/HTTPS, mais uniquement les wikis HTTPS purs (avec $wgForceHTTPS valant true
) et les wikis HTTP purs (principalement pour les tests locaux).
See issue T348852.
Configuration
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' ];
paramètre | par défaut | commentaire |
---|---|---|
(deprecated ) $wgCentralAuthDatabase
|
null
|
Nom de la base de données qui héberge les données de centralAuth.
Si elle ne correspond pas à la connexion de la base de données primaire, n'oubliez pas de définir également Pour utiliser une base de données avec un préfixe de table, initialisez cette variable avec « NOTE: This setting has been deprecated, use virtual domains mapping as described above. |
$wgCentralAuthAutoMigrate
|
false
|
Si true , les comptes existants non attachés seront automatiquement migrés à la première connexion, si cela est possible.
Toute création de nouveau compte devra s'attacher. Si |
$wgCentralAuthAutoMigrateNonGlobalAccounts
|
false
|
Si true , les comptes non attachés existants pour lesquels il n'y a pas de compte global seront comparés pour voir si une fusion peut être faite sans problème, sur la base des mots de passe et des adresses courriels (fusion de tous les comptes).
Ceci était initialement contrôlé par |
$wgCentralAuthStrict
|
false
|
Si true , il ne sera pas possible de se connecter avec les comptes restants non encore attachés, tant qu'ils n'auront pas été résolus.
|
$wgCentralAuthDryRun
|
false
|
Si true , la fusion ne sera pas actuellement possible par l'interface Special:MergeAccount.
|
$wgCentralAuthCookies
|
false
|
Si true , la session globale ainsi que les cookies des jetons seront créés au fur et à mesure des sessions par wiki et des jetons de connexion, lorsque les utilisateurs se connecteront avec leur compte global.
Ceci permet de se connecter de manière transparente aux autres wikis du même domaine. |
$wgCentralAuthLoginWiki
|
false
|
Nom de la base de données d'un wiki à connexion centralisée. C'est une alternative à la déclaration directe de cookies inter domaines pour chaque wiki de $wgCentralAuthAutoLoginWikis . S'il est initialisé, un wiki unique de connexion va utiliser une session (un cookie) pour gérer les sessions universelles de connexion sur tous les chaque wikis.
A la connexion, les utilisateurs seront redirigés vers la page Special:CentralLogin/login du wiki de connexion, puis vers Special:CentralLogin à nouveau, sur le wiki d'origine. Dans le processus, le cookie et la session du wiki de connexion centrale sont définis. Au fur et à mesure que l'utilisateur accède à d'autres wikis, le wiki de connexion sera vérifié par JavaScript afin de connaître l'état de la connexion et pour définir la session locale ainsi que les cookies. Cela nécessite |
$wgCentralAuthCookieDomain
|
''
|
Domaines pour les cookies globaux.
Par exemple, |
$wgCentralAuthCookiePrefix
|
'centralauth_'
|
Préfixe pour les cookies d'authentification globale CentralAuth. |
$wgCentralAuthCookiePath
|
'/'
|
Chemin pour les cookies d'authentification globale CentralAuth. Initialisez cette variable si vous souhaitez restreindre les cookies à un certain chemin à l'intérieur du domaine spécifié par $wgCentralAuthCookieDomain .
|
$wgCentralAuthAutoLoginWikis
|
[]
|
Liste des ID de wikis qui doivent être appelés lors de la connexion pour essayer de définir les cookies tiers pour l'état de la session globale.
L'ID du wiki est typiquement le nom de la base de données, sauf quand les préfixes de table sont utilisées, auquel cas il s'agit du nom dela base de données, un tiret séparateur, puis le préfixe de la table. Ceci permet à une ferme de wikis avec plusieurs domaines de second ordre d'établir une session globale sur chacun d'eux en accédant à l'un des wikis de chaque domaine (en.wikipedia.org, en.wikinews.org, etc). Fait en accèdant à S'il est vide, aucun autre wiki ne sera atteint. La clé doit être initialisée avec le nom de domaine du cookie. |
$wgCentralAuthAutoCreateWikis
|
[]
|
Liste des ID des wikis sur lesquels un compte local attaché doit être créé automatiquement quand le compte global est créé.
L'ID du wiki est typiquement le nom de la base de données, sauf quand vous utilisez un préfixe de table, auquel cas il correspond au nom de la base de données suivi d'un tiret séparateur et du préfixe de la table. |
$wgCentralAuthLoginIcon
|
false
|
Le chemin de l'icône, dans le système de fichiers local rendu par Special:CentralAutoLogin , doit être celui d'un PNG de 20x20 pixels.
|
$wgCentralAuthPrefsForUIReload
|
[ 'skin', 'language', 'thumbsize', 'underline', 'stubthreshold', 'showhiddencats', 'justify', 'numberheadings', 'editondblclick', 'editsection', 'editsectiononrightclick', 'usenewrc', 'extendwatchlist' ]
|
Préférences utilisateur pour lesquelles il faut recommander le rechargement de la page après une requête réussie de connexion centrale.
Si vous souhaitez faire quelque chose de plus compliqué qu'uniquement |
$wgCentralAuthRC
|
[]
|
Tableau de paramètres pour envoyer les événements CentralAuth vers les flux RC.
|
$wgCentralAuthWikisPerSuppressJob
|
10
|
Taille des wikis gérés dans une tâche de supression d'utilisateur. Gardez à l'esprit qu'un wiki nécessite ~10 requêtes.
|
$wgCentralAuthReadOnly
|
false
|
Comme $wgReadOnly , utilisé pour que l'extension mette la base de données en mode lecture seule.
|
$wgCentralAuthEnableGlobalRenameRequest
|
false
|
Drapeau de fonctionnalité pour Special:GlobalRenameRequest .
|
$wgCentralAuthGlobalPasswordPolicies
|
[]
|
Règles pour le mot de passe global. Celles-ci sont appliquées comme les règles concernant les mots de passe locaux, la règle la plus forte applicable à un utilisateur est utilisée. Les règles peuvent s'appliquer soit à un groupe local (si l'utilisateur est membre de ce groupe quelque soit le wiki, elles s'appliqueront à cet utilisateur) soit à un groupe global.
|
$wgGlobalRenameDenylist
|
null
|
liste d'utilisateurs qui ne seront pas autorisés à créer de nouvelles demandes de renommage globaux via Special:GlobalRenameRequest.
Il existe deux manières de le déclarer :
Vous pouvez utiliser les noms exacts ou des expressions régulières.
|
$wgCentralAuthGlobalBlockInterwikiPrefix
|
"global"
|
Lorsqu'on supprime un utilisateur globalement, le blocage de cet utilisateur est inséré dans tous les wikis. CentralAuth définira l'auteur de ces blocages comme $wgCentralAuthGlobalBlockInterwikiPrefix>(pseudo de l'utilisateur qui fait la suppression). . Par exemple, si $wgCentralAuthGlobalBlockInterwikiPrefix = "Admins"; , et Joe supprime John, tous les wikis afficheront dans BlockList un bloc contre John fait par Admins>Joe .
|
Utilisation
Permet au système de connexion unique des utilisateurs (SUL) d'utiliser le système AuthPlugin de MediaWiki. La création des utilisateurs ainsi que leurs connexions sont gérées globalement en utilisant une table centralisée des utilisateurs pour tous les wikis. Notez néanmoins que les comptes des utilisateurs locaux sont créés automatiquement à la création de compte ou à la connexion.
Cette extension implémente également les groupes d'utilisateurs globaux, auxquels les comptes globaux peuvent appartenir.
Droits utilisateur
CentralAuth définit plusieurs nouveaux droits utilisateur :
Droit utilisateur | Capacité | Groupe par défaut | Etat |
---|---|---|---|
centralauth-createlocal
|
Force la création d'un compte local pour un compte global. | Stewards et administrateurs système | Actif dans MW 1.36+ |
centralauth-lock
|
Empêche les utilisateurs de se connecter sur tout wiki. | Stewards | Actif |
centralauth-suppress
|
Supprimer ou démasquer les comptes globaux | Stewards | Actif |
centralauth-rename
|
Renommer les comptes globaux | Stewards | Actif |
centralauth-unmerge
|
Extraire les comptes globaux d'un compte local | Stewards | Actif |
centralauth-merge
|
Fusionner tous les comptes CentralAuth de manière globale | Tous utilisateurs | Actif; automatique habituellement |
globalgrouppermissions
|
Gérer les autorisations pour les groupes globaux | Stewards globaux | Actif; par défaut, non assigné aux stewards locaux |
globalgroupmembership
|
Modifier l'appartenance aux groupes globaux | Stewards globaux | Actif; par défaut, non assigné aux stewards locaux |
Fonctions
Connexion unique de l'utilisateur (SUL)
Les utilisateurs ayant un compte sur plusieurs wikis peuvent utiliser Special:MergeAccount pour créer leur compte global qui pourra ensuite être utilisé sur tout wiki. Les utilisateurs ayant les droits centralauth-unmerge
(attribués par défaut aux stewards) peuvent annuler une fusion de compte global et remettre les mots de passe aux valeurs qu'ils avaient avant l'opération de fusion.
Les comptes utilisateur peuvent maintenant aussi être renommés globalement.
Blocage et masquage des utilisateurs globaux
Un compte global peut être bloqué (locked) ou masqué (hidden) par un utilisateur qui a respectivement les droits centralauth-lock
et centralauth-suppress
, attribués par défaut au groupe 'stewards' local.
Un compte global verrouillé est déconnecté immédiatement de toute session, quelque soit le wiki sur lequel il se trouve actuellement connecté.
Un nom d'utilisateur global masqué n'apparaît dans aucun journal sauf dans le journal des comptes globaux.
Ensembles de wikis
Un ensemble de wikis (wiki set) est un groupe de wikis spécifié par un utilisateur ayant les droits globalgrouppermissions
.
Les valeurs sont opt-in (si les wikis ne sont pas dedans par défaut) et opt-out (si les wikis sont inclus à moins d'en avoir été sortis).
Groupes globaux d'utilisateurs
Une fois les groupes d'utilisateurs globaux activés comme décrit dans la section installation, un steward migré peut utiliser l'interface Special:GlobalGroupPermissions pour configurer les groupes d'utilisateurs globaux, avec leurs droits associés.
Un groupe d'utilisateurs globaux est actif par défaut sur tous les wikis (les utilisateurs de ce groupe possèdent partout les droits qui lui sont attribués) sauf si ce groupe a été spécifié comme étant actif sur un ensemble prédéfini de wikis (les utilisateurs du groupe n'ont alors les droits que sur le wiki prédéfini où ils se trouvent).
Les droits des groupes globaux ne sont pas listées sur Special:ListUsers, mais plutôt sur Special:GlobalUsers.
Ils sont assignés par un utilisateur ayant les droits globalgroupmembership
(par défaut il s'agit du groupe global stewards
), et donnent les droits spécifiques à l'utilisateur même si les droits locaux définis par $wgGroupPermissions
ne les donnent pas.
Licences et téléchargements
L'extension est disponible sous la licence publique générale GNU 2.0 ou supérieure, et peut être téléchargée de Git, ou accédée via l'interface web.
Le logiciel est fourni en l'état. Les mises à jour seront faites en fonction des besoins des wikis Wikimedia; ou là où des points sensibles au niveau sécurité seront découverts.
API
Voir Extension:CentralAuth/API .
Références
Voir aussi
- Connexion unifiée sur Meta-Wiki
- Extension:CentralAuth/authentication - CentralAuth authentication features
$wgSharedDB
- User:Legoktm/evil-plans2.txt - 2015 plan to phase out CentralAuth at WMF
- Global session threat assessment
- Listes de suivi intégrées
- Contrôle de flux de CentralAuth
- Stuck global renames
Cette extension est utilisée par au moins un des projets Wikimédia. Cela signifie probablement que l’extension est assez stable et fonctionnelle pour être utilisée sur des sites à fort trafic. Recherchez le nom de cette extension dans le CommonSettings.php de Wikimédia et dans le fichier de configuration InitialiseSettings.php pour situer les endroits où elle est installée. Une liste complète des extensions installées sur un Wiki donné peut être visualisée sur la page Special:Version de ce wiki. |
Cette extension est incluse dans les fermes de wikis ou les hôtes suivants et / ou les paquets : Cette liste ne fait pas autorité. Certaines fermes de wikis ou hôtes et / ou paquets peuvent contenir cette extension même s'ils ne sont pas listés ici. Vérifiez toujours cela avec votre ferme de wikis ou votre hôte ou votre paquet avant de confirmer. |