Extension:PluggableAuth

This page is a translated version of the page Extension:PluggableAuth and the translation is 40% complete.
Other languages:
English • ‎Türkçe • ‎français • ‎中文 • ‎日本語
Manuel des extensions MediaWiki
OOjs UI icon advanced.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é Master maintains backwards compatibility.
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 - dans ce cas un wiki. 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é. 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 visite le 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 no default value If set, the name of a message that will be used for the label of the login button on the Special:UserLogin form. This is useful if an authentication plugin will be showing the Special:UserLogin form to the user and needs to customize the button label with a localizable Message. If not set and if no value is set for $wgPluggableAuth_ButtonLabelMessage, the value of the pluggableauth-loginbutton-label message, which has a default value of "Log In With PluggableAuth" will be used. To override this value you can edit the page MediaWiki:Pluggableauth-loginbutton-label and its language variants. This configuration variable is usually set, if at all, by authentication plugins and not by wiki site administrators. If set by a wiki site administrator, the relevant message pages in the MediaWiki namespace will need to be created with the localized message values.
$wgPluggableAuth_ButtonLabel null If $wgPluggableAuth_ButtonLabelMessage is not set and $wgPluggableAuth_ButtonLabel is set to a string value, this string value will be used as the label of the login button on the Special:UserLogin form. This allows a wiki site administrator to set the label if a localizable Message is not provided by an authentication plugin. Note that this string is NOT localizable.
$wgPluggableAuth_ExtraLoginFields [] An array of extra fields to be added to the login form at Special:UserLogin. See the documentation for AuthenticationRequest:getFieldInfo() for the format of the array. This configuration variable may be set by authentication plugins and should not be set by wiki site administrators.
$wgPluggableAuth_Class no default value The name of a class that extends the abstract PluggableAuth class to provide authentication. This configuration variable must be set by authentication plugins and should not be set by wiki site administrators.

Notes de développement

Créer des nouveaux greffons d'authentification

Authentication plugins subclass the abstract PluggableAuth class provided by PluggableAuth. An authentication plugin must set $PluggableAuth_Class to the name of this subclass and must implement the following functions:

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

  • Called to authenticate the user.
  • The parameters are used to return the user id, username, real name, and email address of the authenticated user and, if the user cannot be authenticated, an optional error message. $id is an integer and the remaining parameters are all strings. If the user cannot be authenticated and no value is set for $errorMessage, a default error message is displayed.
  • $id must be set to null if the user is new, in which case PluggableAuth will add the user to the database.
  • Must return true if the user has been authenticated and false otherwise.
  • If the return to URL, the name of the page, or the query parameters from the page that login was initiated from are necessary in the authenticate() function, they may be accessed as follows:
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 )

  • Called after a new user has been authenticated and added to the database to add any additional information to the database required by the authentication mechanism.

public function deauthenticate( User &$user )

  • Called when the user logs out to notify the identity provider, if necessary, that cleanup such as removing the user's session should be done.

Special:UserLogin and extra login fields

The Special:UserLogin page will only be displayed to the user during authentication if there are fields on that form that the user must fill in. That is, if an authentication plugin does not add extra fields to the Special:UserLogin form using $wgPluggableAuth_ExtraLoginFields and if local login (which enables the username and password fields on the Special:UserLogin form) is not enabled by a site administrator using $wgPluggablAuth_EnableLocalLogin, the Special:UserLogin page will not be displayed. Even if Special:UserLogin is not displayed, it may be necessary for an authentication plugin to gather user input using a web page provided by an enterprise authentication system. This would be accomplished by a redirect, often from within the authentication library used by the authentication plugin. If no such library exists and you need to implement the authentication mechanism from scratch, the redirect should not go to Special:UserLogin. Instead, it should go to a custom, unlisted special page based on PluggableAuthLogin.php. Finally, if there is no user input required by the user as part of authentication from either Special:UserLogin or the remote authentication system, clicking on the Log in link will simply re-render the current page in a logged in state. If an authentication plugin adds extra fields to the Special:UserLogin form using $wgPluggableAuth_ExtraLoginFields, the fields can be accessed in the authenticate() function in an authentication plugin as follows:

use MediaWiki\Auth\AuthManager;
...
$authManager = AuthManager::singleton();
$extraLoginFields = $authManager->getAuthenticationSessionData(
    PluggableAuthLogin::EXTRALOGINFIELDS_SESSION_KEY
);

This will return an array of field values indexed by the name of the field from the field descriptor array.

Créer des nouveaux greffons d'authentification

Authorization hooks use the PluggableAuthUserAuthorization hook to register an implementation of the following function: function authorize( User $user, &$authorized )

  • $user is the User object for the user requesting authorization
  • $authorized must be set to true if the user is authorized and false otherwise.
  • Return true to call other authorization hook implementations and false to skip them.

Release notes

Version 5.7
  • Added error message when there is a rare fatal session error
Version 5.6
  • Fixed autologin so it returns to the correct page after authentication.
Version 5.5
  • Fixed issue with PluggableAuthPopulateGroups hook.
Version 5.4
  • Added $wgPluggableAuth_ButtonLabelMessage and $wgPluggableAuth_ButtonLabel.
  • Coding style fixes.
Version 5.3
  • Added $wgPluggableAuth_ExtraLoginFields.
Version 5.2
  • Converted auto login to PHP from JavaScript.
Version 5.1
  • Added PluggableAuthPopulateGroups hook. Thank you to Poikilotherm for contributing this functionality.
Version 5.0
  • Added $wgPluggableAuth_EnableLocalProperties and removed use of editmyprivateinfo
  • Added debug statement when returntourl is not set
Version 4.2
  • Fixed exception when returntoquery is undefined.
Version 4.1
  • Added session variables to hold the name of the page and the query parameters of the page from which login was initiated for use in authenticate()
Version 4.0
  • Added optional error message to authenticate()
  • Bumped version number to synchronize with SimpleSAMLphp and OpenIDConnect extensions
Version 2.2
  • Confirm email addresses coming from external authentication sources
Version 2.1
  • Update file naming conventions
Version 2.0
  • Almost completely rewritten to support the new MediaWiki 1.27 authentication and session management framework
  • Switched to new extension registration
  • Configuration variable names changed to add $wg prefix
  • $PluggableAuth_Timeout removed
  • $PluggableAuth_AutoLogin renamed to $wgPluggableAuth_EnableAutoLogin
  • $wgPluggableAuth_EnableLocalLogin added to support local password-based login to the wiki in addition to PluggableAuth
Version 1.2
  • Moved the addition of a new user to the wiki database to after successful authorization of the user
  • Added editmyprivateinfo check
Version 1.1
  • Added call to logout when session times out to ensure that the deauthenticate function in implementing classes gets called
Version 1.0
  • Initial version