Extension:PluggableAuth

This page is a translated version of the page Extension:PluggableAuth and the translation is 100% complete.
Other languages:
MediaWiki Stakeholders' Group Logo.svg This extension is maintained by a member of the Groupe des acteurs de MediaWiki .
Manuel des extensions MediaWiki
OOjs UI icon advanced-invert.svg
PluggableAuth
État de la version : stable
px
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 5.7 (2018-11-26)
Politique de compatibilité Le master conserve la compatibilité arrière.
MediaWiki 1.27+
Licence Licence MIT
Téléchargement
  • $wgPluggableAuth_EnableLocalLogin
  • $wgPluggableAuth_EnableLocalProperties
  • $wgPluggableAuth_ExtraLoginFields
  • $wgPluggableAuth_EnableAutoLogin
Traduire l’extension PluggableAuth sur translatewiki.net

Vérifier la matrice des utilisations et des versions.

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 :

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 :

Cette extension peut utilisé un plugin d'authentification, zéro ou plusieurs plugins d'authentification Si aucun plugin d'autorisation n'est utilisé, tous les utilisateurs authentifiés sont autorisé à utiliser le wiki.

PluggableAuth definit deux accroches importantes:

Installation

  • Téléchargez et placez le(s) fichiers (s) dans un répertoire appelé PluggableAuth dans votre dossier extensions/.
  • 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.

Configuration

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 à authenticate(), PluggableAuth vérifie si le vrai nom ou l'adresse e-mail renvoyés sont différents de ceux enregistrés dans la base de données du wiki. Si l'un ou l'autre sont différent, on vérifie si ce paramètre est vrai. Si tel est le cas, cela est compris par PluggableAuth pour indiquer que le vrai nom et l'adresse e-mail sont gérés dans le wiki sur la page Special:Preferences. Sinon, le vrai nom et l'adresse e-mail sont gérés par le fournisseur d'authentification, de sorte que les nouvelles valeurs de nom réel et d'adresse e-mail sont enregistrées dans la base de données du wiki. Autrement dit, si ce paramètre est faux, toute modification du nom réel ou de l'adresse e-mail du fournisseur d'authentification distant écrasera les valeurs locales lorsque l'utilisateur se connectera.

$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

Les greffons d'authentification sous-classe la classe abstraite PluggableAuth fournie par 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 :

public function authenticate( &$id, &$username, &$realname, &$email, &$errorMessage )

  • 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 sur null si l'utilisateur est nouveau, auquel cas PluggableAuth 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 :
use \MediaWiki\Auth\AuthManager;

...

$authManager = AuthManager::singleton();
$returnToUrl = $authManager->getAuthenticationSessionData(
    PluggableAuthLogin::RETURNTOURL_SESSION_KEY
);
$returnToPage = $authManager->getAuthenticationSessionData(
    PluggableAuthLogin::RETURNTOPAGE_SESSION_KEY
);
$returnToQuery = $authManager->getAuthenticationSessionData(
    PluggableAuthLogin::RETURNTOQUERY_SESSION_KEY
);

public function saveExtraAttributes( $id )

  • 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( User &$user )

  • 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 :

use MediaWiki\Auth\AuthManager;
...
$authManager = AuthManager::singleton();
$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( User $user, &$authorized )

  • $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.
  • Retourne true pour appeler d'autres implémentations de hook d'autorisation et false pour les ignorer.

Notes des versions

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