Extension:OAuth
OAuth État de la version : stable |
|
---|---|
Implémentation | Identité de l'utilisateur , Droits utilisateur , API |
Description | Permet aux utilisateurs d'autoriser en sécurité une autre application (cliente) d'utiliser l'API action de MediaWiki pour son compte. |
Auteur(s) | Aaron Schulz, Chris Steipp, Brad Jorsch, Robert Vogel, Dejan Savuljesku |
Dernière version | 1.1.0 (continuous updates) |
Politique de compatibilité | Versions ponctuelles alignées avec MediaWiki. Le master n'est pas compatible arrière. |
MediaWiki | >= 1.43 |
Modifie la base de données |
Oui |
Tables | oauth_accepted_consumer oauth_registered_consumer |
Licence | Licence publique générale GNU v2.0 ou supérieur |
Téléchargement | |
Aide | Help:OAuth |
|
|
|
|
|
|
Téléchargements trimestriels | 82 (Ranked 65th) |
Utilisé par les wikis publics | 982 (Ranked 246th) |
Traduire l’extension OAuth sur translatewiki.net si elle y est disponible | |
Rôle Vagrant | oauth |
Problèmes | Tâches ouvertes · Signaler un bogue |
L'extension OAuth implémente un serveur OAuth dans MediaWiki qui prend en charge à la fois les versions de protocole OAuth 1.0a et OAuth 2.0. Il permet à des développeurs tiers de créer de manière sécurisée, des applications (les consommateurs), auxquelles les utilisateurs peuvent attribuer un nombre limité de droits (les grants), pour qu'elles puissent utiliser l'API action de MediaWiki au nom de ces utilisateurs.
Prérequis
- OAuth utilise le cache des objets pour les sessions et les jetons temporaires. Ceci fonctionne tant que les paramètres de configuration du cache restent cohérents. (Les versions antérieures demandent explicitement Memcached ).
- Actuellement, seules les bases de données MySQL et SQLite sont prises en charge
- Si l'installation de MediaWiki est privée (c'est à dire que les utilisateurs doivent se connecter pour avoir un accès en lecture), il faudra ajouter Special:OAuth à la liste blanche.
Installation
- Téléchargez et placez le(s) fichier(s) dans un répertoire appelé
OAuth
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/OAuth - Seulement lorsque vous installez à partir de Git, exécutez Composer pour installer les dépendances PHP, en entrant
composer install --no-dev
après vous être positionné dans le répertoire de l'extension. (Voir tâche T173141 pour des complications potentielles.) - Ajoutez le code suivant à la fin de votre fichier LocalSettings.php :
wfLoadExtension( 'OAuth' );
- Exécutez le script de mise à jour qui va créer automatiquement les tables de base de données dont cette extension a besoin.
- Configurez les paramètres généraux selon les besoins.
- Configurez les droits des utilisateurs en les plaçant dans les groupes appropriés dans
$wgGroupPermissions
. - Fait – Accédez à Special:Version sur votre wiki pour vérifier que l'extension a bien été installée.
Installation Vagrant :
- Si vous utilisez Vagrant , installez avec
vagrant roles enable oauth --provision
Pour attribuer les droits à un groupe donné, par exemple aux administrateurs système (sysops), ajoutez la ligne suivante à LocalSettings.php
:
$wgGroupPermissions['sysop']['mwoauthproposeconsumer'] = true;
Configuration
Paramètres
Nom de variable | Valeur par défaut | Description |
---|---|---|
$wgMWOAuthCentralWiki
|
false
|
ID du wiki qui gère l'OAuth. Dans les fermes de wikis, il est logique de mettre ici le wiki qui sert de portail et qui est dédié à la gestion, ou qui ne gère que les connexions et l'authentification. Il peut néanmoins être initialisé à n'importe quel wiki de la ferme de wikis. Pour les sites qui n'ont qu'un seul wiki, ou les fermes pour lesquelles chaque wiki gère séparément ses clients, il faut laisser false .
|
$wgMWOAuthSharedUserIDs
|
false
|
(obsolète) Utiliser $wgMWOAuthSharedUserSource à la place
Indique si les IDs des utilisateurs globaux sont stockés dans les tables de OAuth.
Sur les fermes de wikis qui possèdent un système central d'authentification (avec des IDs entiers d'utilisateur) et qui se partagent un wiki unique pour la gestion OAuth, ceci doit être mis à |
$wgMWOAuthSharedUserSource
|
null
|
Fournisseur de l'ID central lorsque les données confidentielles OAuth sont partagées sur une ferme de wikis
Source des IDs pour les utilisateurs partagés, si disponible.
Si CentralIdLookup est disponible, il s'agit du $providerId pour CentralIdLookup::factory().
En général, null est souhaité pour le fournisseur par défaut.
Si cette classe n'est pas disponible, ou si le fournisseur nommé n'est pas trouvé, ceci est passé aux accroches OAuthGetUserNamesFromCentralIds, OAuthGetLocalUserFromCentralId, OAuthGetCentralIdFromLocalUser, OAuthGetCentralIdFromUserName.
Ceci n'a pas d'effet si $wgMWOAuthSharedUserIDs est mis à |
$wgMWOAuthRequestExpirationAge
|
2 592 000 (30 jours)
|
Nombre de secondes après lequel une requête idle de nouveau consommateur passe à l'état expired |
$wgMWOAuthSecureTokenTransfer
|
true
|
Nécessite SSL/TLS pour renvoyer le client et les informations secrètes de l'utilisateur. Ceci est nécéssaire pour RFC 5849, néanmoins si un wiki souhaite utiliser OAuth mais qu'il ne prend pas en charge SSL, cette option permet d'utiliser cette configuration. Doit être mis à true dans la plupart des configurations de production.
|
$wgOAuthSecretKey
|
$wgSecretKey
|
Chaîne secrète servant à la configuration (valeur aléatoire de 32 bits générée avec base64_encode(random_bytes(32)) ) et utilisée pour le HMAC avec la clé secrète trouvée dans la base de données, afin de générer les clés secrètes des consommateurs. Cela fournit une certaine protection contre un attaquant qui lirait les valeurs dans la table des consommateurs (il lui faudrait aussi $wgOAuthSecretKey pour générer les clés secrètes valides), et contre certaines faillles potentielles dans la génération des clés secrètes. Si la chaîne pose problème, le site doit générer un nouveau $wgOAuthSecretKey qui invalide les permissions du consommateur utilisant les signatures secrètes partagées de HMAC à la place des clés privées et publiques. Les consommateurs peuvent regénérer une nouvelle clé secrète en utilisant l'option de regénération « Reset the secret key » de Special:MWOAuthConsumerRegistration/update. Si nul, la valeur est mise à $wgSecretKey.
|
$wgOAuthGroupsToNotify
|
[]
|
Liste des goupes utilisateur à notifier pour les propositions de nouveaux consommateurs. Cette initialisation ne sera effective que si Echo est installé. |
$wgMWOauthDisabledApiModules
|
[]
|
Liste des classes des modules API à désactiver quand OAuth est utilisé pour la requête |
$wgMWOAuthReadOnly
|
false
|
Empêche toute écriture dans la base de données. Lorsque ceci est initialisé, les consommateurs ne peuvent pas être ajoutés ni mis à jour et les nouvelles autorisations ne sont plus délivrées. Les entêtes d'autorisation pour les autorisations existantes, continueront à fonctionner. Sert lors de la migration des tables de la base de données |
$wgMWOAuthSessionCacheType
|
$wgSessionCacheType
|
Mécanisme de stockage pour les données de session. Si nul, la valeur est $wgSessionCacheType par défaut. |
$wgOAuthAutoApprove
|
[]
|
Allows automatic immediate approval of low-risk apps. In the form of [ 'grants' => [ 'grant1', 'grant2', ... ] ]
|
$wgOAuth2EnabledGrantTypes
|
[
"authorization_code",
"refresh_token",
"client_credentials"
]
|
Liste des autorisations OAuth2 que les applications du client peuvent utiliser. Les autorisations actuelles que les applications du client pourront utiliser peuvent faire partie de n'importe quel sous ensemble des autorisations qui figurent ici. Les droits autres que ceux listés ici, sont considérés comme des droits historiques et ne sont pas pris en charge par cette extension |
$wgOAuth2PrivateKey
|
""
|
Clé privée ou chemin vers la clé privée utilisée pour signer le OAuth2 JWT à transmettre. See the OAuth 2.0 Server documentation for how to generate the keys. |
$wgOAuth2PublicKey
|
""
|
Clé publique ou chemin vers la clé publique utilisée pour vérifier les requêtes de ressources OAuth2. |
$wgOAuth2RequireCodeChallengeForPublicClients
|
true
|
Indique si les clients doivent envoyer des défis de code avec les requêtes OAuth2. Ceci ne s'applique qu'aux clients non confidentiels. |
$wgOAuth2GrantExpirationInterval
|
"PT1H" (1 heure)
|
Contrôle la période de validité des jetons d'accès (présent dans le cache et configuré dans MWOAuthSessionCacheType). Ne concerne pas les clients du propriétaire pour lesquels les jetons d'accès n'expirent jamais. Accepte les durées au format ISO 8601 ou peut être mis à infinity ou à false pour les jetons qui n'expirent jamais.
|
$wgOAuth2RefreshTokenTTL
|
"P1M" (1 mois)
|
Contrôle la période de validité des jetons de rafraîchissement (présent dans le cache et configuré dans MWOAuthSessionCacheType). Accepte les durées au format ISO 8601 ou peut être mis à infinity ou à false pour les jetons qui n'expirent jamais.
|
Droits utilisateur
Droit | Description |
---|---|
mwoauthproposeconsumer |
Proposer de nouveaux consommateurs OAuth |
mwoauthupdateownconsumer |
Mettre à jour les consommateurs OAuth que vous contrôlez |
mwoauthmanageconsumer |
Gérer les consommateurs OAuth |
mwoauthsuppress |
Supprimer des consommateurs OAuth |
mwoauthviewsuppressed |
Afficher les consommateurs OAuth supprimés |
mwoauthviewprivate |
Afficher les données privées OAuth |
mwoauthmanagemygrants |
Gérer les autorisations OAuth |
Points d'accès
Points d'accès REST de OAuth 2.0
Les points d'accès REST suivants sont fournis pour interagir avec OAuth 2.0
Chemin | Description | Paramètres autorisés | Méthode autorisée | ||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
/oauth2/authorize | Sert à récupérer le code d'autorisation si authorization_code est diffusable (grant). |
|
GET | ||||||||||||||||||||||||||||||||||||||||||||||||||
/oauth2/access_token | Sert à demander des jetons d'accès |
|
POST | ||||||||||||||||||||||||||||||||||||||||||||||||||
/oauth2/resource/{{type}} | Sert à récupérer les ressources protégées en utilisant le jeton d'accès obtenu précédemment.
Actuellement, deux types de ressources peuvent être récupérés via ce point d'accès, en remplaçant
|
Aucun paramètre n'est autorisé, autre que le paramètre {{type}} figurant dans le chemin
|
GET/POST | ||||||||||||||||||||||||||||||||||||||||||||||||||
/oauth2/client | Liste les clients OAuth 1.0a ou 2.0 de l'utilisateur connecté. L'authentification peut se faire par CentralAuth ou en insérant un jeton d'accès dans l'entête d'autorisation.
|
|
GET | ||||||||||||||||||||||||||||||||||||||||||||||||||
/oauth2/client/{client_key}/reset_secret | Réinitialise les données secrètes d'un client. Pour les clients propriétaires seulement, ce point d'accès réinitialise également le jeton d'accès.
|
|
POST | ||||||||||||||||||||||||||||||||||||||||||||||||||
/oauth2/client | Crée un client OAuth 2.0
|
|
POST |
Voir aussi
- Extension:OATHAuth - extension de nom similaire qui implémente un deuxième facteur d'authentification à l'aide de mots de passe à usage unique basés sur OATH.
- Extension:WSOAuth – extension MediaWiki qui permet à votre wiki de déléguer l'authentification à n'importe quel fournisseur OAuth utilisant PluggableAuth, y compris un wiki qui exécute Extension:OAuth.
- Oauthclient-php – bibliothèque cliente pour les consommateurs OAuth.
Cette extension est utilisée par au moins un des projets Wikimédia. Cela signifie probablement que l’extension est assez stable et fonctionnelle pour être utilisée sur des sites à fort trafic. Recherchez le nom de cette extension dans le CommonSettings.php de Wikimédia et dans le fichier de configuration InitialiseSettings.php pour situer les endroits où elle est installée. Une liste complète des extensions installées sur un Wiki donné peut être visualisée sur la page Special:Version de ce wiki. |
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. |