Extension:WSOAuth

From mediawiki.org
This page is a translated version of the page Extension:WSOAuth and the translation is 100% complete.
A ne pas confondre avec Extension:OAuth.
Cette extension nécessite que l'extension PluggableAuth soit d'abord installée.
Manuel des extensions MediaWiki
WSOAuth
État de la version : stable
Implémentation Identité de l'utilisateur , Droits utilisateur
Description Etend l'extension PluggableAuth pour fournir l'authentification en utilisant un fournisseur OAuth
Auteur(s) Xxmarijnw (Wikibase Solutions) and others
Dernière version 9.0.0 (2023-06-16)
Politique de compatibilité Versions ponctuelles alignées avec MediaWiki. Le master n'est pas compatible arrière.
MediaWiki 1.35+
PHP 7.3+
Modifie la base
de données
Oui
Licence Licence MIT
Téléchargement
  • $wgOAuthCustomAuthProviders
  • $wgOAuthAutoPopulateGroups
  • $wgOAuthMigrateUsersByUsername
  • $wgOAuthDisallowRemoteOnlyAccounts
  • $wgOAuthUseRealNameAsUsername
Téléchargements trimestriels 92 (Ranked 66th)
Traduire l’extension WSOAuth
Rôle Vagrant wsoauth
Problèmes Tâches ouvertes · Signaler un bogue

L'extension WSOAuth (Wikibase Solutions OAuth) permet l'authentification à l'aide d'un fournisseur OAuth. Elle fournit une couche au-dessus de l'extension PluggableAuth pour permettre l'authentification via OAuth.[1]

Les fournisseurs OAuth suivants sont actuellement disponibles par défaut :

  • MediaWiki (instance de MediaWiki qui exécute OAuth )
  • Facebook

WSOAuth facilite l'ajout de nouveaux fournisseurs AOuth. D'autres informations sur la façon d'ajouter un nouveau fournisseur OAuth sont disponibles sur WSOAuth pour les développeurs .

Compatibilité

Matrice de compatibilité
WSOAuth PluggableAuth MediaWiki
9.0+ 7.0+
Version de MediaWiki :
1.35
6.0-8.x 6.0-6.x
Version de MediaWiki :
1.35
1.0-5.x 5.7
Version de MediaWiki :
1.31

Configuration

Les valeurs doivent être fournies pour les variables de configuration obligatoires suivantes :

Drapeau Valeur par défaut Description
$wgPluggableAuth_Config (voir Extension:PluggableAuth#Configuration) [] Tableau obligatoire de tableaux spécifiant les fournisseurs OAuth et leur configuration. Le champ data du tableau doit être un tableau avec les clés suivantes :
type The OAuth provider the extension will use (e.g. mediawiki or facebook) obligatoire
uri URI[2] d'authentification de l'application OAuth. optionnel avec certains fournisseurs
clientId clé du consommateur reçue à partir de la demande OAuth. obligatoire
clientSecret secret du consommateur reçu à partir de la demande OAuth. obligatoire
redirectUri URI[2] de callback par défaut que l'application OAuth renvoie après une demande d'authentification réussie. nécessaire avec certains fournisseurs
extensionData tableau contenant des données supplémentaires demandées par le fournisseur. nécessaire avec certains fournisseurs
migrateUsersByUsername Indique si l'usurpation des comptes existants est autorisée ou non. Cela redéfinit la variable globale $wgOAuthMigrateUsersByUsername. optionnel
disallowRemoteOnlyAccounts Indique si les comptes peuvent avoir ou pas une contrepartie locale. Cela redéfinit la variable globale $wgOAuthDisallowRemoteOnlyAccounts. optionnel
useRealNameAsUsername Indique si le nom d'utilisateur à utiliser est le vrai nom. Cela redéfinit la variable globale $wgOAuthUseRealNameAsUsername. optionnel
autoPopulateGroups tableau contenant une liste des noms de groupes MediaWiki qui doivent être attribués automatiquement à l'utilisateur après son authentification. Ceci redéfinit la variable globale $wgOAuthAutoPopulateGroups. Depuis WSOAuth 9.0, cela vous oblige également à configurer la synchronisation des groupes. optionnel

De plus les variables de configuration optionnelles suivantes sont fournies :

Drapeau Valeur par défaut Description
$wgOAuthCustomAuthProviders false Tableau contenant une liste de fournisseurs OAuth avec leur nom de classe (voir WSOAuth pour les développeurs pour plus d'informations).
$wgOAuthAutoPopulateGroups [] Tableau contenant une liste des noms de groupes MediaWiki qui doivent être attribués automatiquement à l'utilisateur après son authentification. Depuis WSOAuth 9.0, cela vous oblige également à configurer la synchronisation des groupes.
$wgOAuthMigrateUsersByUsername false Indique si l'usurpation des comptes existants est permise ou pas. Si un utilisateur est déjà enregistré sur votre wiki avant que WSOAuth ne soit installé et qu'il a le même nom d'utilisateur qu'un utilisateur qui se connecte via OAuth, ce paramètre détermine si ce compte existant sera attribué à l'utilisateur qui se connecte (true), ou si l'utilisateur qui se connecte via OAut sera empêché de le faire parce qu'il existe déjà (false). Une fois qu'un compte a été migré, l'utilisateur associé à ce compte pourra toujours s'inscrire via OAuth, même si ce paramètre est changé en false. Il est plus sûr de laisser cette valeur à false et laisser l'utilisateur se connecter son compte à distance manuellement via Special:Preferences.
$wgOAuthDisallowRemoteOnlyAccounts false Indique si on permet ou pas que les comptes n'aient pas de contrepartie locale.
$wgOAuthUseRealNameAsUsername false Indique s'il faut utiliser le nom réel comme nom d'utilisateur.

Exemple de $wgPluggableAuth_Config pour un seul fournisseur :

$wgPluggableAuth_Config['nlwiki'] = [
    'plugin' => 'WSOAuth',
    'data' => [
        'type' => 'mediawiki',
        'uri' => 'https://nl.wikipedia.org/wiki/Special:OAuth',
        'clientId' => '...',
        'clientSecret' => '...'
    ],
    'buttonLabelMessage' => 'dutch-wikipedia-login-button-label'
];
Clé de configuration (dans l'exemple ci-dessus nlwiki) utilisée pour identifier le fournisseur OAuth en interne et NE DOIT PAS être changée.

Exemple de $wgPluggableAuth_Config pour plusieurs fournisseurs :

$wgPluggableAuth_Config['nlwiki'] = [
    'plugin' => 'WSOAuth',
    'data' => [
        'type' => 'mediawiki',
        'uri' => 'https://nl.wikipedia.org/wiki/Special:OAuth',
        'clientId' => '...',
        'clientSecret' => '...'
    ],
    'buttonLabelMessage' => 'dutch-wikipedia-login-button-label'
];

$wgPluggableAuth_Config['facebook'] = [
    'plugin' => 'WSOAuth',
    'data' => [
        'type' => 'facebook',
        'clientId' => '...',
        'clientSecret' => '...',
        'redirectUri' => '...'
    ],
    'buttonLabelMessage' => 'facebook-login-button-label'
];

Synchronisation de groupe

Voir aussi : PluggableAuth


Pour configurer la synchronisation de groupe, vous devez ajouter un tableau groupsyncs dans le tableau $wgPluggableAuth_Config. Ce tableau doit contenir zéro sous-tableau (ou plus) spécifiant la manière dont les groupes sont synchronisés. Pour des informations détaillées, voir PluggableAuth.

Le cas d'utilisation le plus courant est la synchronisation de tous les groupes, ce qui peut être réalisé à l'aide de l'algorithme syncall de synchronisation des groupes. La configuration ci-dessous réalise la fonction équivalente mais pour des versions plus anciennnes de WSOAuth (c'est à dire 8.0.0-).

$wgPluggableAuth_Config['nlwiki'] = [
    'plugin' => 'WSOAuth',
    'data' => [
        'type' => 'mediawiki',
        'uri' => 'https://nl.wikipedia.org/wiki/Special:OAuth',
        'clientId' => '...',
        'clientSecret' => '...',
        'autoPopulateGroups' => ['mygroups' => ['sysop', 'bureaucrat']]
    ],
    'groupsyncs' => [
        'mygroupsync' => [
            'type' => 'syncall',
            'groupattributename' => 'mygroups'
        ]
    ]
    'buttonLabelMessage' => 'dutch-wikipedia-login-button-label'
];

Fournisseurs OAuth

Pour ajouter un nouveau fournisseur OAuth, voir WSOAuth pour les développeurs.

Actuellement, les fournisseurs AOuth suivants sont pris en charge :

  • MediaWiki OAuth (instance de MediaWiki exécutant OAuth )
  • Facebook

OAuth MediaWiki

Suivez les étapes ci-dessous pour activer l'authentification et l'autorisation via MediaWiki OAuth.

  1. Enregistrez une nouvelle application OAuth 1.0a sur le wiki auquel vous déléguez l'accès.
    • Par exemple pour s'enregistrer avec Wikimedia, voir : https://meta.wikimedia.org/wiki/Special:OAuthConsumerRegistration/propose
    • N'utilisez pas de paire de clés RSA pour l'authentification et laissez MediaWiki générer le secret pour vous. Utilisez https://<local wiki url>/wiki/index.php?title=Special:PluggableAuthLogin comme URL[3] OAuth de callback. Sélectionnez Vérifier uniquement l'identité de l'utilisateur, sans pouvoir lire les pages ni agir pour le compte d'un utilisateur. sous Types de droits demandés.
  2. Écrivez la clé et le secret que vous avez reçus de MediaWiki.
  3. Dans votre fichier LocalSettings.php initialisez :
    $wgPluggableAuth_Config['mywikiauth'] = [
        'plugin' => 'WSOAuth',
        'data' => [
            'type' => 'mediawiki',
            'uri' => 'https://<central wiki>/w/index.php?title=Special:OAuth',
            'clientId' => '<The client ID (key) you received from MediaWiki when you registered your app>',
            'clientSecret' => '<The secret you received from MediaWiki when you registered your app>'
        ]
    ];
    
    clé de configuration (mywikiauth dans l'exemple ci-dessus) est utilisée pour identifier le fournisseur OAuth en interne et NE DOIT PAS être modifiée.

Pour utiliser exclusivement MediaWiki comme système de connexion et pour vous connecter automatiquement lors de la visite du wiki, définissez également ceci dans LocalSettings.php :

$wgPluggableAuth_EnableAutoLogin = true;
$wgPluggableAuth_EnableLocalLogin = false;

Pour les applications OAuth qui utilisent un préfixe de callback, un URI[2] de redirection doit être fourni par la clé $1. Cet URI redirigé doit contenir le préfixe spécifié.

Facebook

Suivez les étapes ci-dessous pour activer l'authentification et l'autorisation via Facebook.

  1. Créer une nouvelle application sur Facebook pour les développeurs.
  2. Dans Ajouter un produit, sélectionnez Connexion Facebook.
  3. Dans le menu à gauche, sélectionnez Paramètres sous Connexion à Facebook.
  4. Ajoutez le domaine de votre wiki à la liste des URIs de redirection d'autorisation valides et cliquez sur sauvegarder.
  5. Dans le menu à gauche, cliquez sur Paramètres, puis sur Paramètres et notez le App ID ainsi que le App Secret.
  6. Définissez ceci dans votre LocalSettings.php :
    $wgPluggableAuth_Config['myfacebookauth'] = [
        'plugin' => 'WSOAuth',
        'data' => [
            'type' => 'facebook',
            'clientId' => '<The App ID>',
            'clientSecret' => '<The App Secret>',
            'redirectUri' => 'https://<wiki domain>/index.php/Special:PluggableAuthLogin'
        ]
    ];
    
    Clé de configuration (dans l'exemple ci-dessus myfacebookauth) utilisée pour identifier le fournisseur OAuth en interne et NE DOIT PAS être modifiée.

Pour utiliser exclusivement Facebook comme système de connexion et pour vous connecter automatiquement lors de la visite du wiki, définissez également ceci dans LocalSettings.php :

$wgPluggableAuth_EnableAutoLogin = true;
$wgPluggableAuth_EnableLocalLogin = false;

Mise à jour des versions 6.0-

Pour les versions 6.0+, le schéma de la base de données a dû être modifié pour prendre en compte plusieurs fournisseurs d'authentification. Si vous exécutez une instance MediaWiki avec une version de WSOAuth plus ancienne que la 6.0, vous devez migrer vos utilisateurs externes existants vers le nouveau schéma de base de données si vous souhaitez vous mettre à niveau.

Vous pouvez utiliser le script de maintenance multiAuthMigrate.php situé dans le dossier maintenance de l'extension pour migrer :

$ php extensions/WSOAuth/maintenance/multiAuthMigrate.php --provider=mywikiauth

L'option provider dans l'exemple ci-dessus détermine le fournisseur vers lequel seront migrés les utilisateurs existants.

Messages système

Voici quelques messages système utiles liés à cette extension, et pouvant être personnalisés :

Titre du message Message par défaut Position Indication
wsoauth-user-already-exists-message
Le nom d'utilisateur "{{{1}}}" est déjà pris. Texte affiché comme message d'erreur de l'écran de connexion lorsqu'un utilisateur tente de se connecter avec OAuth, et qu'un utilisateur de ce wiki possède déjà ce nom d'utilisateur. Cela se produit quand un utilisateur s'inscrit d'abord sur le wiki via l'enregistrement standard des utilisateurs et qu'il tente ensuite de se connecter via OAuth. Si cela se produit dans votre wiki, vous pouvez personnaliser ce message pour inviter les utilisateurs à autoriser les connexions à distance à partir de leurs préférences. Capture d'écran :[upref 1]
Page Special:Preferences avec WSOAuth installé montrant le bouton de connexion à distance
  1. selon le poste
Pour modifier un message système, éditer la page MediaWiki:Message title de votre wiki

Installation

Cette extension nécessite que PluggableAuth soit installé.
  • Téléchargez et placez le(s) fichier(s) dans un répertoire appelé WSOAuth dans votre dossier extensions/.
    Les développeurs et les contributeurs au code doivent à la place installer l'extension à partir de Git en utilisant:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/WSOAuth
  • Seulement lorsque vous installez à partir de Git, exécutez Composer pour installer les dépendances PHP, en entrant composer install --no-dev après vous être positionné dans le répertoire de l'extension. (Voir tâche T173141 pour des complications potentielles.)
  • Ajoutez le code suivant à la fin de votre fichier LocalSettings.php  :
    $wgGroupPermissions['*']['autocreateaccount'] = true;
    
    wfLoadExtension( 'PluggableAuth' );
    wfLoadExtension( 'WSOAuth' );
    
  • Exécutez le script de mise à jour qui va créer automatiquement les tables de base de données dont cette extension a besoin.
  • Configurez si nécessaire.
  • Yes Fait – Accédez à Special:Version sur votre wiki pour vérifier que l'extension a bien été installée.


Installation Vagrant :

  • Si vous utilisez Vagrant , installez avec vagrant roles enable wsoauth --provision

Notes

  1. Open Authorization (OAuth).
  2. 2.0 2.1 2.2 Uniform Resource Identifier (URI)
  3. Uniform Resource Locator (URL)

Galerie