Extension:PluggableAuth

![]() État de la version : stable |
|
---|---|
![]() |
|
Implémentation | Identité de l'utilisateur , Droits utilisateur , Accroche |
Description | Fournit un cadre pour les extensions d'authentification et d'autorisation. |
Auteur(s) | Cindy Cicalese (cindy.cicalesediscussion) |
Dernière version | 6.2 (2023-01-15) |
Politique de compatibilité | Versions ponctuelles alignées avec MediaWiki. Le master n'est pas compatible arrière. |
MediaWiki | >= 1.35.0 |
Composer | mediawiki/pluggable-auth |
Licence | Licence MIT |
Téléchargement | |
|
|
Quarterly downloads | 2,085 (Ranked 1st) |
Public wikis using | 194 (Ranked 414th) |
Traduire l’extension PluggableAuth sur translatewiki.net si elle y est disponible | |
Problèmes | Tâches ouvertes · Signaler un bogue |
L'extension PluggableAuth fournit un cadre pour la création d'extensions d'authentification et d'autorisation.
L'authentification est le processus qui consiste à prouver qu'un utilisateur est bien celui qu'il prétend être. Cela peut être fait, par exemple, en fournissant un nom d'utilisateur et un mot de passe ou un jeton ou un élément biométrique.
Les extensions d'autorisation suivantes peuvent être utilisées avec PluggableAuth :
- SimpleSAMLphp - utilise SAML
- OpenID Connect - utilise OpenID Connect
- LDAPAuthentication2 - utilise LDAP
- WSOAuth - utilise OAuth
- Shibboleth - utilise Shibboleth
- DiscourseSsoConsumer - uses Discourse
- NaylorAMS - utilise le logiciel de gestion d'association Naylor
- PHPBB Auth - uses phpBB
Autorisation est le processus permettant de déterminer si un utilisateur authentifié particulier doit avoir accès à une ressource particulière. Cela peut être fait, par exemple, en vérifiant une liste d'adresses électroniques autorisées ou en vérifiant les valeurs des attributs d'utilisateur fournis par un serveur d'identité.
Dans le cas de PluggableAuth, les extensions d'autorisation déterminent si un utilisateur authentifié peut continuer à se connecter à un wiki. Cependant, les extensions « d'authentification » (plutôt que les extensions d'autorisation) prennent en charge les groupes d'utilisateurs pour lesquels un utilisateur doit être autorisé, en fonction des attributs transmis par le fournisseur d'identité (IdP).
Les extensions d'autorisation suivantes peuvent être utilisées avec PluggableAuth :
- Email Authorization - utilise une liste d'adresses email et de domaines
- LDAP Authorization - utilise LDAP
Cette extension peut utilisé un plugin d'authentification, zéro ou plusieurs plugins d'authentification
If more than one authentication plugin is used, a button for each authentication plugin will be added to the Special:UserLogin
page. If a single authentication plugin is used and local login is disabled, the Special:UserLogin
page will be bypassed.
Si aucun plugin d'autorisation n'est utilisé, tous les utilisateurs authentifiés sont autorisé à utiliser le wiki.
PluggableAuth definit deux accroches importantes:
- PluggableAuthUserAuthorization - permet aux greffons d'autorisation de fournir du code pour prendre une décision d'autorisation
- PluggableAuthPopulateGroups - utilisé pour compléter les informations de groupe de MediaWiki avec celles d'un fournisseur externe
Installation
- Téléchargez et placez le(s) fichier(s) dans un répertoire appelé
PluggableAuth
dans votre dossierextensions/
. - Ajoutez le code suivant à la fin de votre fichier
LocalSettings.php
:wfLoadExtension( 'PluggableAuth' );
- Les droits d'utilisateur createaccount ou autocreateaccount doivent être accordés à tous les utilisateurs. Voir Droits d'utilisateur.
- Configuration requise
Fait – Accédez à Special:Version sur votre wiki pour vérifier que l'extension a bien été installée.
$wgPluggableAuth_Config
is required in version 6.0. The plugins must be compatible with the version of PluggableAuth installed.Plugin | PluggableAuth version 6.0 or later | PluggableAuth version 5.7 or earlier |
---|---|---|
DiscourseSsoConsumer | - | 2.0.0 |
LDAPAuthentication2 | - | 1.0.1 |
NaylorAMS | - | 0.1.0 |
OpenID Connect | 6.0 | 5.4 |
PHPBB Auth | 4.1.0 | 4.0.0 |
Shibboleth | - | v1.0.0-rc.1 |
SimpleSAMLphp | 5.0.0 | 4.5.2 |
WSOAuth | 6.0 | 5.0 |
EmailAuthorization | 3.0 | 2.0 |
LDAPAuthorization | - | 1.0.0 |
Configuration
All versions
Variable | Valeur par défaut | Description |
---|---|---|
$wgPluggableAuth_EnableAutoLogin
|
false
|
La connexion doit-elle se produire automatiquement lorsqu'un utilisateur se connecte au wiki? |
$wgPluggableAuth_EnableLocalLogin
|
false
|
L'utilisateur doit-il également être présenté avec des champs de nom d'utilisateur/mot de passe sur la page de connexion pour permettre une connexion locale basée sur un mot de passe au wiki? |
$wgPluggableAuth_EnableLocalProperties
|
false
|
Si vrai, les utilisateurs peuvent modifier leur adresse e-mail et leur vrai nom sur le wiki. Si faux, (valeur par défaut), ce n'est pas possible Notez que, si vous voulez de quelque manière que ce soit que l'adresse e-mail et/ou le nom réel renvoyé par le fournisseur d'authentification soit utilisé, vous devez laisser ce paramètre à sa valeur par défaut.
Après l'appel à |
Version 6.0 or later
Flag | Default | Description |
---|---|---|
$wgPluggableAuth_Config
|
no default value | An array of arrays containing configuration for the authentication plugins. The keys to the outer array are used as the button labels on Special:UserLogin if no button message is provided in the respective inner array. The valid keys to the inner arrays are:
|
Version 5.7 or earlier
Flag | Default | Description |
---|---|---|
$wgPluggableAuth_ButtonLabelMessage
|
Pas de valeur par défaut | S'il est défini, le nom d'un message qui sera utilisé pour l'étiquette du bouton de connexion sur le formulaire Special:UserLogin . Ceci est utile si un plugin d'authentification affichera le formulaire Special:UserLogin à l'utilisateur et doit personnaliser l'étiquette du bouton avec un message localisable. Si non défini et si aucune valeur n'est définie pour $wgPluggableAuth_ButtonLabelMessage , la valeur du message pluggableauth-loginbutton-label , qui a la valeur par défaut "Log In With PluggableAuth" sera utilisée. Pour remplacer cette valeur, vous pouvez modifier la page MediaWiki:Pluggableauth-loginbutton-label et ses variantes de langue. Cette variable de configuration est généralement définie, le cas échéant, par les plugins d'authentification et non par les administrateurs de site wiki. Si elle est définie par un administrateur de site wiki, les pages de message pertinentes dans l'espace de noms MediaWiki devront être créées avec les valeurs de message localisées.
|
$wgPluggableAuth_ButtonLabel
|
null
|
Si $wgPluggableAuth_ButtonLabelMessage n'est pas défini et que $wgPluggableAuth_ButtonLabel est défini sur une valeur de chaîne, cette valeur de chaîne sera utilisée comme étiquette du bouton de connexion sur le formulaire Special : UserLogin . Cela permet à un administrateur de site wiki de définir l'étiquette si un Message localisable n'est pas fourni par un plugin d'authentification. Notez que cette chaîne n'est PAS localisable.
|
$wgPluggableAuth_ExtraLoginFields
|
[]
|
Tableau de champs supplémentaires à ajouter au formulaire de connexion à Special:UserLogin . Voir la documentation de AuthenticationRequest:getFieldInfo() pour le format de la baie. Cette variable de configuration peut être définie par les plugins d'authentification et ne doit pas être définie par les administrateurs de site wiki.
|
$wgPluggableAuth_Class
|
Pas de valeur par défaut | Nom d'une classe qui étend la classe abstraite PluggableAuth pour fournir l'authentification. Cette variable de configuration doit être définie par les plugins d'authentification et ne doit pas être définie par les administrateurs de site wiki.
|
Notes de développement
Créer des nouveaux greffons d'authentification
Version 6.0 and later:
- Les greffons d'authentification sous-classe la classe abstraite
MediaWiki\Extension\PluggableAuth\PluggableAuth
fournie par PluggableAuth. - In version 6.0 and later, an authentication plugin must specify at
attributes
section inextension.json
. For example:
"attributes": {
"PluggableAuth": {
"OpenIDConnect": {
"class": "MediaWiki\\Extension\\OpenIDConnect\\OpenIDConnect",
"services": [
"MainConfig",
"AuthManager",
"OpenIDConnectStore"
]
}
}
},
Version 5.7 and earlier:
- Authentication plugins subclass the abstract
PluggableAuth
class provided by PluggableAuth. - Un plug-in d'authentification doit définir
$PluggableAuth_Class
sur le nom de cette sous-classe et doit implémenter les fonctions suivantes :
The authentication plugin subclass must implement the following methods:
public function authenticate( ?int &$id, ?string &$username, ?string &$realname, ?string &$email, ?string &$errorMessage ): bool;
- Appelé pour authentifier l'utilisateur.
- Les paramètres sont utilisés pour renvoyer l'identifiant utilisateur, le nom d'utilisateur, le vrai nom et l'adresse e-mail de l'utilisateur authentifié et, si l'utilisateur ne peut pas être authentifié, un message d'erreur facultatif.
$id
est un entier et les autres paramètres sont toutes des chaînes. Si l'utilisateur ne peut pas être authentifié et qu'aucune valeur n'est définie pour$errorMessage
, un message d'erreur par défaut s'affiche. $id
doit être défini surnull
si l'utilisateur est nouveau, auquel casPluggableAuth
ajoutera l'utilisateur à la base de données.- Doit retourner true si l'utilisateur a été authentifié et false dans le cas contraire.
- Si le retour à l'URL, le nom de la page ou les paramètres de requête de la page à partir de laquelle la connexion a été initiée sont nécessaires dans la fonction authenticate(), ils peuvent être consultés comme suit :
$returnToUrl = $this->authManager->getAuthenticationSessionData(
PluggableAuthLogin::RETURNTOURL_SESSION_KEY
);
$returnToPage = $this->authManager->getAuthenticationSessionData(
PluggableAuthLogin::RETURNTOPAGE_SESSION_KEY
);
$returnToQuery = $this->authManager->getAuthenticationSessionData(
PluggableAuthLogin::RETURNTOQUERY_SESSION_KEY
);
public function saveExtraAttributes( int $id ): void
- Appelé après qu'un nouvel utilisateur a été authentifié et ajouté à la base de données pour ajouter des informations supplémentaires à la base de données requises par le mécanisme d'authentification.
public function deauthenticate( UserIdentity &$user ): void
- Appelé lorsque l'utilisateur se déconnecte pour informer le fournisseur d'identité, si nécessaire, que le nettoyage, tel que la suppression de la session de l'utilisateur, doit être effectué.
Special:UserLogin et champs supplementaires login
La page Special:UserLogin
ne sera affichée à l'utilisateur pendant l'authentification que s'il y a des champs sur ce formulaire que l'utilisateur doit remplir.
Autrement dit, si un greffon d'authentification n'ajoute pas de champs supplémentaires au formulaire Special:UserLogin
en utilisant $wgPluggableAuth_ExtraLoginFields
et si la connexion locale (qui active les champs de nom d'utilisateur et de mot de passe sur le formulaire Special:UserLogin
) n'est pas activée par un administrateur de site en utilisant $wgPluggablAuth_EnableLocalLogin
, la page Special:UserLogin
ne sera pas affichée.
Même si Special:UserLogin
n'est pas affiché, il peut être nécessaire pour un plugin d'authentification de recueillir l'entrée utilisateur à l'aide d'une page Web fournie par un système d'authentification d'entreprise.
Ceci serait réalisé par une redirection, souvent à partir de la bibliothèque d'authentification utilisée par le greffon d'authentification.
Si aucune bibliothèque de ce type n'existe et que vous devez mettre en oeuvre le mécanisme d'authentification à partir de zéro, la redirection ne doit pas aller à Special:UserLogin
.
Au lieu de cela, il devrait aller à une page spéciale personnalisée, non répertoriée basée sur PluggableAuthLogin.php
.
Enfin, s'il n'y a pas d'entrée utilisateur requise par l'utilisateur dans le cadre de l'authentification à partir de Special:UserLogin
ou du système d'authentification à distance, cliquer sur le lien "Se connecter" rendra simplement la page actuelle dans un état connecté.
Si un plug-in d'authentification ajoute des champs supplémentaires au formulaire Special:UserLogin
en utilisant $wgPluggableAuth_ExtraLoginFields
, les champs sont accessibles dans la fonction authenticate()
dans un plug-in d'authentification comme suit :
...
$authManager = MediaWikiServices::getInstance()->getAuthManager();
$extraLoginFields = $authManager->getAuthenticationSessionData(
PluggableAuthLogin::EXTRALOGINFIELDS_SESSION_KEY
);
Cela retournera un tableau de valeurs de champ indexées par le nom du champ du tableau descripteur de champ.
Créer des nouveaux greffons d'authentification
Les crochets d'autorisation utilisent le crochet PluggableAuthUserAuthorization pour enregistrer une implémentation de la fonction suivante :
function authorize( UserIdentity $user, bool &$authorized ): void
$user
est l'objet Utilisateur pour l'utilisateur demandant l'autorisation$authorized
doit avoir la valeur true si l'utilisateur est autorisé et false dans le cas contraire.
Notes des versions
- Version 6.2
- added compatibility with MW 1.39
- Switch from deprecated PersonalUrls hook to SkinTemplateNavigation::Universal
- Only set real name if it is not null
- Use setter and getter for user's real name
- Version 6.1
- restored backward compatibility with MW 1.35 (T308865)
- Version 6.0
- Support multiple authentication plugins using
$wgPluggableAuth_Config
- Requires MediaWiki 1.35+
- Drop support for the following configuration variables:
$wgPluggableAuth_ButtonLabelMessage
(use thebuttonLabelMessage
field in the corresponding$wgPluggableAuth_Config
entry)$wgPluggableAuth_ButtonLabel
(use the index of the corresponding$wgPluggableAuth_Config
entry)$wgPluggableAuth_ExtraLoginFields
(use static function inPluggableAuth
class)$wgPluggableAuth_Class
(now specified by an attribute in the authentication plugin's extension.json and referred to by theplugin
field in the corresponding$wgPluggableAuth_Config
entry)
- Version 5.7
- Ajout d'un message d'erreur lorsqu'il y a une erreur de session fatale rare
- Version 5.6
- Correction de l'ouverture de session automatique pour qu'elle retourne à la page correcte après l'authentification.
- Version 5.5
- Correction d'un problème avec le crochet
PluggableAuthPopulateGroups
.
- Version 5.4
- Ajout de
$wgPluggableAuth_ButtonLabelMessage
et$wgPluggableAuth_ButtonLabel
. - Corrections de style de codage.
- Version 5.3
- Ajout de
$wgPluggableAuth_ExtraLoginFields
.
- Version 5.2
- Connexion automatique convertie en PHP à partir de JavaScript
- Version 5.1
- Ajout d'un crochet. Merci à Poikilotherm d'avoir contribué à cette fonctionnalité.
- Version 5.0
- Ajout de
$wgPluggableAuth_EnableLocalProperties
et suppression de l'utilisation de editmyprivateinfo - Instruction debug ajoutée lorsque return ntourl n'est pas défini
- Version 4.2
- Exception corrigée lorsque return toquery n'est pas défini.
- Version 4.1
- Ajout de variables de session pour contenir le nom de la page et les paramètres de requête de la page à partir de laquelle la connexion a été initiée pour être utilisée dans
authenticate()
- Version 4.0
- Ajout d'un message d'erreur facultatif à
authenticate()
- Numéro de version bossé à synchroniser avec les extensions SimpleSAMLphp et OpenIDConnect
- Version 2.2
- Confirmer les adresses de messagerie provenant de sources d'authentification externes
- Version 2.1
- Mettre à jour les conventions de dénomination des fichiers
- Version 2.0
- Presque entièrement réécrit pour prendre en charge le nouveau cadre d'authentification et de gestion de session MediaWiki 1.27
- Basculé vers l'enregistrement d'une nouvelle extension
- Noms de variables de configuration modifiés pour ajouter le préfixe $wg
$PluggableAuth_Timeout
supprimé$PluggableAuth_AutoLogin
renommé en$wgPluggableAuth_EnableAutoLogin
$wgPluggableAuth_EnableLocalLogin
ajouté pour prendre en charge la connexion locale par mot de passe au wiki en plus de PluggableAuth
- Version 1.2
- Déplacé l'ajout d'un nouvel utilisateur à la base de données wiki après une autorisation réussie de l'utilisateur
- Validation
editmyprivateinfo
ajouté
- Version 1.1
- Ajout d'un appel à la déconnexion lorsque la session expire pour s'assurer que la fonction deauthenticate dans les classes d'implémentation est appelée
- Version 1.0
- Version initiale
![]() | Cette extension est incluse dans les paquets et / ou les fermes de wikis suivants : Cette liste ne fait pas autorité. Certaine fermes de wikis ou d'hébergeurs peuvent contenir ce extension même s'ils ne figurent pas ici. Vérifiez toujours cela dans votre environement avant de confirmer. |
- MediaWiki Stakeholders' Group/fr
- Stable extensions/fr
- User identity extensions/fr
- User rights extensions/fr
- Hook extensions/fr
- Extensions supporting Composer/fr
- MIT licensed extensions/fr
- Extensions in Wikimedia version control/fr
- AuthChangeFormFields extensions/fr
- BeforeInitialize extensions/fr
- LocalUserCreated extensions/fr
- SkinTemplateNavigation::Universal extensions/fr
- SpecialPage initList extensions/fr
- TitleReadWhitelist extensions/fr
- UserLogoutComplete extensions/fr
- All extensions/fr
- Extensions included in BlueSpice/fr
- Extensions included in Canasta/fr
- Extensions included in MyWikis/fr
- Extensions included in semantic::core/fr
- Login extensions/fr
- Extensions by MITRE/fr