Extension:LDAPProvider/fr
En tant que successeur de LDAPAuthentication2[1][2] une pile d'extensions LDAP a été créée. Elles doivent toutes interagir avec une ressource LDAP distante[3]. Cette extension a été créée pour faciliter et unifier la configuration et la maintenance. Elle fournit les classes et la configuration pour consulter les données provenant des ressources LDAP.
LDAPProvider État de la version : stable |
|
---|---|
File:MWStake LDAPStack Icon.svg | |
Description | Fournit une infrastructure commune pour se connecter à une ressource LDAP et lui envoyer des requêtes. |
Auteur(s) | |
Politique de compatibilité | Versions ponctuelles alignées avec MediaWiki. Le master n'est pas compatible arrière. |
MediaWiki | |
Tables | ldap_domains |
Licence | Aucune licence spécifiée |
Téléchargement | |
Téléchargements trimestriels | Lua error in Module:Extension at line 172: bad argument #1 to 'inNamespace' (unrecognized namespace name 'skin'). |
Utilisé par les wikis publics | Lua error in Module:Extension at line 172: bad argument #1 to 'inNamespace' (unrecognized namespace name 'skin'). |
Traduire l’extension LDAPProvider sur translatewiki.net si elle y est disponible | |
Problèmes | Tâches ouvertes · Signaler un bogue |
Installation
- <translate> [[<tvar name=2>Special:ExtensionDistributor/LDAPProvider</tvar>|Download]] and move the extracted <tvar name=name>
LDAPProvider
</tvar> folder to your <tvar name=ext>extensions/
</tvar> directory.</translate>
<translate> Developers and code contributors should install the extension [[<tvar name=git>Special:MyLanguage/Download from Git</tvar>|from Git]] instead, using:</translate>cd extensions/
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/LDAPProvider - <translate> Add the following code at the bottom of your <tvar name=1>LocalSettings.php </tvar> file:</translate>
wfLoadExtension( 'LDAPProvider' );
- Exécutez
php maintenance/update.php
pour créer les tables nécessaires de la base de données. - Configurez si nécessaire.
- File:OOjs UI icon check-constructive.svg <translate> Done</translate> – <translate> Navigate to <tvar name=special>Special:Version</tvar> on your wiki to verify that the extension is successfully installed.</translate>
Configuration
« Extension config » avec « Domain config »
Cette extension dispose de deux types de configuration.
D'un côté, il y a la classique configuration d'extension.
Elle peut être configurée en utilisant des variables globales dans LocalSettings.php
.
Notez bien que ces variables n'ont pas de préfixe wg
.
Ces paramètres affectent l'extension dans son ensemble.
D'un autre côté il existe une configuration propre à la ressource LDAP distante, comme les paramètres de connexion, le mécanisme des requêtes du groupe d'appartenance de l'utilidateur ou des DNs[4] de base. Plusieurs domaines peuvent être configurés de manière indépendante. Ces paramètres n'affectent que la communication vers la ressource LDAP, en fonction du domaine que cette ressource dessert.
Paramètres de configuration des extensions
Nom | Valeur par défaut | Description |
---|---|---|
CacheType
|
"CACHE_ANYTHING"
|
type de cache à utiliser pour les informations de connexion. |
CacheTime
|
500
|
temps pendant lequel les objets doivent rester en cache (secondes). |
ClientRegistry
|
[]
|
Permet l'enregistrement des clients consommateurs. La clé est le domaine à utiliser, la valeur est une fonction de callback qui renvoie un objet qui hérite de Client .
|
DomainConfigs
|
"/etc/mediawiki/ldapprovider.json"
|
Enregistre la configuration par domaine. Evalué uniquement si $LDAPProviderDomainConfigProvider est configuré pour utiliser la valeur par défaut LocalJSONFile . Voir ci-dessous.
|
DomainConfigProvider
|
"\\MediaWiki\\Extension\\LDAPProvider\\DomainConfigProvider\\LocalJSONFile::newInstance"
|
Détermine le mécanisme pour obtenir la configuration du domaine. Doit être une fonction de callback qui rend un IDomainConfigProvider .
|
DefaultDomain
|
""
|
Indique le domaine de repli au cas où aucun domaine n'aurait été trouvé pour un utilisateur. C'est souvent le cas lorsque vous utilisez l'Extension Auth_remoteuser pour l'authentification basée sur le réseau. |
PreSearchUsernameModifierRegistry
|
[ "removespaces": "\\MediaWiki\\Extension\\LDAPProvider\\PreSearchUsernameModifier\\RemoveSpaces::newInstance", "spacetounderscore": "\\MediaWiki\\Extension\\LDAPProvider\\PreSearchUsernameModifier\\SpacesToUnderscores::newInstance", "spacestounderscores": "\\MediaWiki\\Extension\\LDAPProvider\\PreSearchUsernameModifier\\SpacesToUnderscores::newInstance", "strtolower": "\\MediaWiki\\Extension\\LDAPProvider\\PreSearchUsernameModifier\\ToLower::newInstance", "lowercase": "\\MediaWiki\\Extension\\LDAPProvider\\PreSearchUsernameModifier\\ToLower::newInstance" ] |
Spécifie les fonctions de callback d'origine pour les objets de type MediaWiki\Extension\LDAPProvider\IPreSearchUsernameModifier . Les clés peuvent être utilisées dans la configuration du domaine dans le champ connection.presearchusernamemodifiers . Exemple pour un modificateur personnalisé :
$LDAPProviderPreSearchUsernameModifierRegistry ['custom-prefix-modifier'] = function() { return new MediaWiki\Extension\LDAPProvider \PreSearchUsernameModifier\GenericCallback( function( $username ) { return "some_prefix_$username"; } ); }; |
Paramètres de configuration du domaine
Nom | Valeur par défaut | Description |
---|---|---|
server
|
- | Un ou plusieurs noms d'hôte du serveur LDAP. Séparé par un seul espace. |
port
|
389
|
port sur lequel le serveur LDAP écoute |
user
|
""
|
Le FQDN d'un utilisateur qui possède au moins les droits de lecture |
pass
|
""
|
Mot de passe de l'utilisateur ci-dessus |
options
|
{} (objet JSON ou tableau PHP indexé)
|
Options spécifiques LDAP. Doit avoir pour clé une chaîne de caractères littérale. |
enctype
|
clear
|
Une valeur parmi 'ldapi' , 'ssl' , 'tls' , ou 'clear'
|
groupbasedn
|
""
|
Utilisé pour les requêtes d'appartenance aux groupes |
userbasedn
|
""
|
Utilisé pour les requêtes d'informations sur les utilisateurs. Également pour résoudre un nom d'utilisateur local dans un DN approprié d'utilisateurs |
searchattribute
|
""
|
Attribut à utiliser dans les recherches pour le DN de l'utilisateur. uid et samaccountname sont communs. Un searchstring sautera cette recherche si les DNs de votre utilisateur possèdent le même motif. |
searchstring
|
""
|
Fournit un motif pour le nom de DN de l'utilisateur, au lieu de le rechercher par searchattribute et nom d'utilisateur.
La valeur doit être un DN d'exemple avec USER-NAME à la place du vrai nom d'utilisateur. c'est à dire "CN=USER-NAME,OU=Users,DC=example,DC=com" |
grouprequest
|
"MediaWiki\\Extension\\LDAPProvider\\UserGroupsRequest\\GroupUniqueMember::factory"
|
Mécanisme de récupération des données des groupes d'utilisateurs. Les types suivants sont disponibles :
Le choix dépend du serveur LDAP.
GroupUniqueMember recherche les objets groupofUniqueName avec (uniqueMember=$userDN). UserMemberOf recherche les attributs memberOf de l'objet LDAP propre à l'utilisateur. Configurable effectue une recherche personnalisée, (&(objectclass=$objectClass)($groupAttribute=$userDN)). Voir groupobjectclass et groupattribute ci-dessous. GroupMemberUid recherche les objets posixGroup par (member=$userUid), ou dans les groupes imbriqués s'il est défini (voir nestedgroups ci-dessous). |
groupobjectclass
|
""
|
Dans le cas où Configurable est utilisé dans grouprequest , groupobjectclass peut être spécifié ici. c'est à dire group
|
groupattribute
|
"member"
|
Dans le cas où Configurable est utilisé dans grouprequest , groupattribute peut être spécifié ici. c'est à dire member
|
presearchusernamemodifiers
|
[]
|
Umodificateurs du sername, pour les requêtes LDAP. Utile lorsque les noms d'utilisateur LDAP ne correspondent pas au format des noms d'utilisateur MediaWiki. (par exemple, les comptes LDAP utilisent des caractères de soulignement '_' au lieu d'espaces, ou doivent être mis en minuscules) Le nom d'utilisateur modifié sera utilisé avec les méthodes searchstring ou searchattribute pour déterminer le DN de l'utilisateur.
|
nestedgroups
|
false
|
Indique que vous voulez utiliser LDAP_MATCHING_RULE_IN_CHAIN pour récupérer les groupes imbriqués. Ne fonctionne qu'avec Microsoft Active Directory et avec grouprequest = MediaWiki\\Extension\\LDAPProvider\\UserGroupsRequest\\GroupMember::factory
|
Fournisseurs de configuration de domaines
Par défaut, la configuration spécifique du domaine est stockée dans un fichier JSON statique.
Mais on peut aussi utiliser une configuration (dynamique) basée sur PHP.
La configuration de l'extension correspondante est $LDAPProviderDomainConfigProvider
.
Ce doit être une fonction de callback qui renvoie un objet de type IDomainConfigProvider
.
Fichier JSON statique
C'est la manière par défaut.
Il suffit de configurer le paramètre de configuration de l'extension $LDAPProviderDomainConfigs
en indiquant un fichier JSON valide (doit être en dehors de la racine web).
$LDAPProviderDomainConfigs = "$IP/../ldapprovider.json";
Exemple
{
"LDAP": {
"connection": {
"server": "ldap.forumsys.com",
"user": "cn=read-only-admin,dc=example,dc=com",
"pass": "password",
"options": {
"LDAP_OPT_DEREF": 1
},
"basedn": "dc=example,dc=com",
"groupbasedn": "dc=example,dc=com",
"userbasedn": "dc=example,dc=com",
"searchattribute": "uid",
"searchstring": "uid=USER-NAME,dc=example,dc=com",
"usernameattribute": "uid",
"realnameattribute": "cn",
"emailattribute": "mail"
}
}
}
Tableau PHP dynamique
Comme alternative au fichier JSON, vous pouvez utiliser un tableau PHP pour configurer les domaines. Dans ce cas, il suffit que la fonction de callback rende une instance de InlinePHPArray.
Exemple
$LDAPProviderDomainConfigProvider = function() {
$config = [
'LDAP' => [
'connection' => [
"server" => "ldap.forumsys.com",
"user" => "cn=read-only-admin,dc=example,dc=com",
"pass" => 'password',
"options" => [
"LDAP_OPT_DEREF" => 1
],
"basedn" => "dc=example,dc=com",
"groupbasedn" => "dc=example,dc=com",
"userbasedn" => "dc=example,dc=com",
"searchattribute" => "uid",
"searchstring" => "uid=USER-NAME,dc=example,dc=com",
"usernameattribute" => "uid",
"realnameattribute" => "cn",
"emailattribute" => "mail"
]
]
];
return new \MediaWiki\Extension\LDAPProvider\DomainConfigProvider\InlinePHPArray( $config );
};
Advanced configuration
Dynamic usergroup attribute
Example
ldapprovider.json
:
{
"LDAP": {
"connection": {
"server": "...",
...
"grouprequest": "...Configurable::factory",
"groupobjectclass": "groupOfUniqueNames",
"groupattribute": "uniqueMember",
"group-attribute-value-callback": "myCoolCallback"
},
},
Here "group-attribute-value-callback"
specifies the name of some callback function which contains logic for the calculation of "groupattribute"
value.
LocalSettings.php
:
function myCoolCallback( $username ) {
return new \MediaWiki\Extension\LDAPProvider\EscapedString( $username );
}
That's an example of a simple callback which returns the unchanged username as "groupattribute"
value.
Versions
Version MediaWiki | Version recommandée de l'extension | Etat du test | Date du dernier test |
---|---|---|---|
1.35 (LTS) | LDAPxxx_master | Testé | mars 2020 |
Guide de dépannage
Exception: « Pas de configuration disponible pour le domaine 'XYZ'! »
Assurez-vous que les valeurs du champ ldap_domains.domain_id
de la base de données correspondent aux valeurs établies au premier niveau de la configuration de domaine (par exemple, dans ldapprovider.json
, vous devrez remplacer LDAP du niveau supérieur par votre domaine.
Vous pouvez vérifier cela en recherchant l'entrée $_SERVER['USERDOMAIN']
dans le phpinfo()
de votre serveur).
Si ce n'est pas le cas, vous pouvez soit modifier les entrées de la base de données à l'aide de UPDATE ldap_domains SET domain = "DomainNameAsInConfiguration";
, soit adapter la configuration.
Attention: dans la version actuelle, le nom de domaine est sensible à la casse.
Exception: « Pas de section 'authorization' trouvée dans la configuration pour le domaine 'LDAP' »
Si vous avez activé l'extension LDAPAuthorization (comme recommandé dans la documentation PluggableAuth), vous devez ajouter le paramètre d'autorisation dans la configuration de domaine de LDAPProvider (plus d'informations à Configurer LDAPAuthorization)
Avertissement : Les informations fournies ne sont pas associées à un utilisateur de ce wiki.
Vérifiez que userbasedn et searchattribute sont corrects.
Exemples de bout en bout
Références
- ↑ anciennement l'Extension LDAP_Authentication
- ↑ Flux de la pile LDAP
- ↑ Lightweight Directory Access Protocol (LDAP) (fr)
- ↑ Distinguished Name (DN)
File:OOjs UI icon information-progressive.svg | <translate> This extension is included in the following wiki farms/hosts and/or packages:</translate>
<translate> This is not an authoritative list.</translate> <translate> Some wiki farms/hosts and/or packages may contain this extension even if they are not listed here.</translate> <translate> Always check with your wiki farms/hosts or bundle to confirm.</translate> |
- Pages with script errors
- Pages with broken file links
- MediaWiki Stakeholders' Group/fr
- Stable extensions/fr
- Extensions with invalid or missing type/fr
- Extensions without MediaWiki version
- Extensions with no license specified/fr
- Extensions in Wikimedia version control/fr
- All extensions/fr
- Extensions not in ExtensionJson
- LDAP extensions/fr
- LDAP Stack Member/fr