Extension:Auth remoteuser
![]() État de la version : stable |
|
---|---|
Implémentation | Identité de l'utilisateur , Accroche |
Description | Connecte automatiquement les utilisateurs s'ils sont déjà authentifiés par une source distante (par exemple la variable environnement REMOTE_USER ). |
Auteur(s) |
|
Dernière version | 2.1.1 |
MediaWiki | >= 1.35.0 |
PHP | 5.4+ |
Modifie la base de données |
Non |
Composer | mediawiki/auth-remoteuser |
Licence | Licence publique générale GNU v2.0 ou supérieur |
Téléchargement | README |
Legacy parameters:
|
|
Téléchargements trimestriels | 289 (Ranked 16th) |
Traduire l’extension Auth remoteuser | |
Problèmes | Tâches ouvertes · Signaler un bogue |
L'extension Auth remoteuser connecte automatiquement les utilisateurs s'ils sont déjà authentifiés par une source distante arbitraire. L'extension fait correspondre le nom d'utilisateur distant donné, à un nom d'utilisation existant dans la base de données locale du wiki (ou le crée d'abord s'il a l'autorisation pour le faire). La source externe assume la responsabilité totale de l'authentification de cet utilisateur.
Cela permet de s'intégrer au système d'authentification du serveur Web (par exemple via la variable environnement REMOTE_USER
, qui est définie par HTTP-Auth[1], LDAP[2], CAS[3], PAM[4], etc.) ou tout autre type d'autentification externe (authentification par client SSL[5], comptes utilisateur fournis par différents logiciels de forum, etc.).
Installation
- Téléchargez et placez le(s) fichier(s) dans un répertoire appelé
Auth_remoteuser
dans votre dossierextensions/
.
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/Auth_remoteuser - Ajoutez le code suivant à la fin de votre fichier LocalSettings.php :
wfLoadExtension( 'Auth_remoteuser' );
- Fait – Accédez à Special:Version sur votre wiki pour vérifier que l'extension a bien été installée.
Configuration
Prenez en compte les autorisations globales de MediaWiki pour la création de compte (createaccount
ou autocreateaccount
) dans votre fichier LocalSettings.php
.
Au moins une d'entre elles doit valoir true
pour que les utilisateurs anonymes permettent à cette extension de créer des comptes pour les utilisateurs inconnus de la base de données du wiki.
Si vous initialiser à false
, alors la connexion automatique ne fonctionne que pour les utilisateurs qui ont déjà un compte wiki.
- Exemples
// l'extension peut créer des comptes, parce que tous les utilisateurs anonymes le peuvent. $wgGroupPermissions['*']['createaccount'] = true;
// si la création d'un compte par des utilisateurs anonymes est interdite, permettez qu'il soit créé automatiquement (par l'extension). $wgGroupPermissions['*']['createaccount'] = false; $wgGroupPermissions['*']['autocreateaccount'] = true;
// seuls les utilisateurs qui se connectent automatiquement si le wiki le sait déjà. $wgGroupPermissions['*']['createaccount'] = false; $wgGroupPermissions['*']['autocreateaccount'] = false;
Paramètres
Ajoutez les variables globales suivantes nécessaires dans votre LocalSettings.php
pour adapter le comportement des extensions à vos besoins spécifiques.
Les valeurs par défaut de chaque variable globale sont marquées du commentaire // default
dans la section exemples.
Variables globales | Description et exemples |
---|---|
$wgAuthRemoteuserUserName
|
Définir le ou les noms à utiliser pour le mappage dans la base de données utilisateur locale du wiki. Cela peut être une simple string , une Closure [6], ou un tableau mixte de strings et / ou Closure . Si la valeur est null , l'extension utilise par défaut les variables d'environnement REMOTE_USER et REDIRECT_REMOTE_USER . Le premier nom de la liste fournie, qui peut être utilisé comme le nom valide d'un utilisateur de MediaWiki, sera utilusé pour la connexion (soit en se connectant à un compte wiki existant, ou en le créant d'abord) :
|
$wgAuthRemoteuserUserNameReplaceFilter
|
L'extension est livrée avec des filtres prédéfinis pour les noms d'utilisateurs distants (qui utilisent l'accroche fournie). Si vous souhaitez remplacer quelque chose, définissez un tableau d'expressions de recherche et de remplacement dans la variable de configuration suivante (chaque motif peut aussi être une expression régulière dans la syntaxe PCRE[7]) :
|
$wgAuthRemoteuserUserNameBlacklistFilter
|
Si vous voulez empêcher certains noms de se connecter automatiquement, mettez-les en liste noire avec le filtre suivant. Vous pouvez passer une liste de noms, où chacun peut aussiv être une expression régulière dans la syntaxe PCRE :
|
$wgAuthRemoteuserUserNameWhitelistFilter
|
L'opération opposée à UserNameBlacklistFilter peut être réalisée en utilisant le filtre suivant qui autorise la connexion automatique au lieu de l'interdire :
|
$wgAuthRemoteuserUserPrefs
|
Lorsque vous avez des informations supplémentaires sur l'utilisateur disponibles dans votre environnement, qui peuvent être liées à un utilisateur créé, par exemple une adresse courriel ou un vrai nom, utilisez l'une des variables de configuration suivantes. Soit UserPrefs ou UserPrefsForced , qui les applique aux nouveaux utilisateurs seulement, ou qui les force à les appliquer à chaque demande. Cela peut être utile si vous ne voulez pas que l'utilisateur modifie cette préférence à l'intérieur de MediaWiki (par exemple, l'adresse courriel de votre entreprise fournie par une source distante). On attend un tableau de paires clé-valeur pour lesquelles realname et email correspondent au vrai nom et à l'adresse courriel des nouveaux utilisateurs. Toute autre paire de valeurs de clé spécifiée est mappée sur une préférence utilisateur du même nom. Mais notez les MediaWikis $wgDefaultUserOptions et $wgHiddenPrefs pour déclarer les options de préférence des utilisateurs. Dans la plupart des cas, ces variables globales sont mieux adaptées à la définition d'une valeur par défaut et pour empêcher la modification.
Vous pouvez spécifier une fonction anonyme pour les valeurs aussi.
Ces closures sont appelées lorsque la valeur actuelle est nécessaire, et non quand elle est déclarée à l'intérieur de votre
Prenons comme exemple le cas suivant d1ns lequel une fonction coûteuse (en temps) n'est exécutée qu'une seule fois par utilisateur et non à chaque demande :
|
$wgAuthRemoteuserUserUrls
|
Vous pouvez remplacer les URL dans MediaWiki, si votre source distante est mieux adaptée pour gérer un comportement spécifique. Par exemple, par défaut, aucun utilisateur connecté automatiquement n'est autorisé à se déconnecter (car il sera automatiquement connecté à nouveau lors de la prochaine demande). Mais peut-être que votre source distante doit gérer cette déconnexion (pour que, avec la prochaine demande, il n'y ait plus de nom d'utilisateur distant fourni à cette extension). Définir une URL appropriée pour l'une des clés suivantes du tableau associatif $wgAuthRemoteuserUserUrls :
|
$wgAuthRemoteuserAllowUserSwitch
|
Par défaut, cette extension imite le comportement des versions Auth_remoteuser antérieures à la v2.0.0 , qui interdisent d'utiliser un autre utilisateur local, quand celui-ci a été identifié par la source distante. Vous pouvez modifier ce comportement avec la configuration suivante :
|
$wgAuthRemoteuserRemoveAuthPagesAndLinks
|
En tant que fournisseur de session immuable SessionProvider (voir le paramètre AllowUserSwitch ci-dessus), toutes les pages spéciales et les liens de connexion / déconnexion pour l'authentification ne sont plus nécessaires par l'utilisateur identifié. Si vous souhaitez toujours qu'ils soient affichés, par exemple si vous utilisez d'autres fournisseurs de session en plus de celui-ci, alors définissez les éléments suivants :
|
$wgAuthRemoteuserPriority
|
Si vous utilisez d'autres extensions de SessionProvider en plus de celle-ci, vous devez spécifier leur signification en utilisant une priorité ascendante :
|
Anciens paramètres
Vous pouvez encore utiliser l'ensemble des anciens paramètres des versions antérieures à la v2.0.0
mais leur emploi est obsolète en faveur des nouveaux paramètres :
$wgAuthRemoteuserAuthz = true; /* votre propre test d'autorisation */
$wgAuthRemoteuserName = $_SERVER["AUTHENTICATE_CN"]; /* nom d'utilisateur */
$wgAuthRemoteuserMail = $_SERVER["AUTHENTICATE_MAIL"]; /* courriel de l'utilisateur */
$wgAuthRemoteuserNotify = false; /* ne pas envoyer de notifications par courriel */
$wgAuthRemoteuserDomain = "NETBIOSDOMAIN"; /* supprimez NETBIOSDOMAIN\ au début ou @NETBIOSDOMAIN à la fin du nom des utilisateurs IWA */
/* domaine courriel de l'utilisateur, à ajouter au nom d'utilisateur pour créer son adresse courriel */
$wgAuthRemoteuserMailDomain = "example.com";
Accroches fournies
Lorsque vous devez traiter avec votre nom d'utilisateur distant avant qu'il ne puisse être utilisé comme identifiant dans la liste des utilisateurs du wiki, par exemple pour retirer un principal Kerberos de la fin, pour remplacer des caractères non valides ou mettre certains noms en liste noire, utilisez l'accroche AuthRemoteuserFilterUserName
fournie par cette extension.
Voir simplement la documentation à propos des accroches MediaWiki pour connaître la manière d'enregistrer des fonctions supplémentaires sur cette accroche.
Il fournit dans le premier paramètre, le nom de l'utilisateur distant en référence à la fonction d'accroche.
Si la fonction renvoie false
, le nom d'utilisateur distant sera ignoré pour une connexion automatique.
(voir les paramètres $wgAuthRemoteuserUserNameReplaceFilter
, $wgAuthRemoteuserUserNameBlacklistFilter
ou $wgAuthRemoteuserUserNameWhitelistFilter
pour les filtres prédéfinis qui utilisent cette accroche).
Configurer différentes sources distantes
- définir la variable d'environnement
REMOTE_USER
Cette variable d'environnement peut être initialisée par de nombreux systèmes d'authentification différents et leur configuration dépend fortement du système que vous utilisez.
Vous pouvez toujours utiliser phpinfo();
pour vérifier le contenu de REMOTE_USER
et pour résoudre les problèmes de votre configuration.
Ce qui suit sont des exemples de différents environnements de serveurs Web et la manière de déclarer un nom d'utilisateur dans cette variable d'environnement.
Apache
Voir la documentation Apache pour les détails.
Vous pouvez utiliser mod_auth_ldap
, mod_auth_cas
, mod_auth_pam
, mod_auth_kerb
, mod_auth_vas4
, ou tout autre module d'authentification qui utilise REMOTE_USER
.
Une fois que vous avez vérifié que la variable d'environnement REMOTE_USER
est initialisée avec le nom d'utilisateur approprié, continuez l'installation ou la configuration de l'extension.
Quelques exemples :
- Pour une authentification HTTP simple, ajoutez ce
.htaccess
:
AuthType Digest AuthName Wiki AuthUserFile /etc/passwd-apache Require valid-user
- La variable d'environnement
REMOTE_USER
est évaluée par défaut à partir de l'extension, donc le code suivant est tout ce dont vous avez besoin dans votreLocalSettings.php
:wfLoadExtension( 'Auth_remoteuser' );
- Configurez HTTP SPNEGO[8] avec les services d'authentification Vintella/Quest pour votre réseau hétérogène, en utilisant
.htaccess
:
AuthType VAS4 AuthVasRemoteUserMap default AuthVasUseBasic On AuthName Wiki Require valid-user
- Maintenant, la variable d'environnement
REMOTE_USER
contient le nom principal complet, donc supprimez le realm du nom d'utilisateur à l'intérieur de votreLocalSettings.php
avec :wfLoadExtension( 'Auth_remoteuser' ); $wgAuthRemoteuserUserNameReplaceFilter = [ '@INTRA.EXAMPLE.COM$' => '' ];
Kerberos SSO AD
Prérequis :
Pour les installer et les activer dans Devuan :
apt install libapache2-mod-auth-kerb a2enmod authnz_ldap
Configurer Kerberos dans le système d'exploitation (longue histoire raccourcie) :
- Rejoindre le domaine AD :
- realm join corp.ds.company.net -U domain_user_with_rights_to_join --computer-ou="use dsquery computer in windows cmd domain joined machine to get the value" --verbose
- Générer le clavier sur le serveur Windows AD cmd :
- ktpass -princ HTTP/en.mediawiki.company.net@CORP.DS.COMPANY.NET -mapuser mediawiki_windows_domain_user@CORP.DS.COMPANY.NET -pass mediawiki_windows_domain_user_secret_password -crypto all -ptype KRB5_NT_PRINCIPAL -out C:\Temp\en-mediawiki.keytab
- setspn -A HTTP/en.mediawiki.company.net@CORP.DS.COMPANY.NET mediawiki_windows_domain_user@CORP.DS.COMPANY.NET
Fichier con de Apache :
AuthType Kerberos Krb5Keytab /path/to/your/keytab_file.keytab KrbServiceName Any KrbLocalUserMapping On AuthLDAPBindDN "user_name_to_authenticate_to_LDAP_server" AuthLDAPBindPassword "password_for_the_user_from_above" AuthLDAPURL "http://ldap_server_url/DC=CORP,DC=DS,DC=COMPANY,DC=NET?sAMAccountName,mail,displayName?sub?(objectClass=*)" Require ldap-attribute attribute="value"
Il est nécessaire d'utiliser l'autorisation LDAP avec Kerberos SSO[9] si vous voulez obtenir les informations utilisateur (courriel, nom réel) de AD.
Les informations de LDAP doivent être publiées aux variables d'environnement AUTHORIZE_, donc assurez-vous de les utiliser, pas AUTHENTICATE_ dans LocalSettings.php.
L'utilisation de ldap-group n'a pas publié les variables d'environnement pour moi, mais l'utilisation de ldap-attribute l'a fait (bogue de Apache ?).
IIS
En fonction de votre gestionnaire Internet Information Services (IIS), la navigation peut être un peu différente. Les instructions ci-dessous sont spécifiées pour un serveur d'entreprise exécutant IIS v7.5 sur Windows Server 2008 R2 Enterprise. (Croyez-moi, je voulais Linux et Apache mais IT ne les autorisent pas)
Pour permettre une simple authentification, utiliser les chemins suivants.
- IIS
- (Server Name) > Sites > Default Web Site
- De Voir les fonctionnalités double cliquer sur Authentification
- Disable — "Anonymous Authentication"
- Enable — "Windows Authentication" (HTTP 401 Challenge)
Support
Problèmes connus
Cette extension est gérée en tant que projet dans Phabricator. Vous y trouverez une liste de tous les problèmes connus et encore ouverts. S'il n'existe pas encore de tâche associée au problème ou à l'erreur que vous avez rencontrée, veuillez lire Comment rapporter les erreurs.
Comment déboguer
Lire le Manuel MediaWiki sur la manière de débogguer ou commencer par ceci :
- Activer les traces en initialisant
$wgDebugLogFile
dans votre fichierLocalSettings.php
avec un fichier sur lequel votre serveur web a un accès en écriture. - Interrogez votre installation MediaWiki comme vous l'avez fait quand l'erreur est apparue. Cette extension enregistre toutes ses sorties dans le canal
[session]
de votre fichier journal. - Parcourez le fichier journal et recherchez toutes les lignes commençant par
[session]
. - Décidez si vous pouvez corriger l'erreur par vous-même ou si elle est liée au fonctionnement de cette extension. Si c'est le cas, veuillez lire Comment rapporter des erreurs.
Rapporter les erreurs
Réunir les informations relatives au déboggage (c'est à dire permettant de reproduire l'erreur) et :
- Lire soit Comment rapporter des bogues de MediaWiki, soit
- créer une nouvelle tâche dans ce projet Phabricator des extensions (si vous avez un compte Phabricator), ou
- envoyer un courriel aux membres du projet Phabricator, ou
- utiliser cette page de discussion de l'extension.
Contribuer
Votre aide est la bienvenue pour améliorer cette extension. Lire Comment devenir un hacker MediaWiki, prendre un des problèmes ouverts sur le projet Phabricator (ou créer une nouvelle tâche) et téléversez votre correction sur le projet Gerrit de cette extension. Vous pouvez aussi y voir :
- liste des mainteneurs d'extensions actuels qui ont accès en écriture (si vous avez un compte Gerrit),
- une liste des ensembles de corrections téléversées.
Demandes de fonctionnalités
Utilisez simplement le même flux de travail que pour le rapport d'erreur.
Notes
- ↑ authentification par HTTP (RFC 2617)
- ↑ Lightweight Directory Access Protocol (LDAP)
- ↑ Central Authentication Service (CAS)
- ↑ Pluggable authentication module (PAM)
- ↑ Secure Sockets Layer (SSL)
- ↑ closure — function anonyme sans nom
- ↑ Perl Compatible Regular Expressions (PCRE)
- ↑ Simple and Protected GSSAPI Negotiation Mechanism (SPNEGO)
- ↑ Single sign-on
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. |