Extension:GoogleLogin
GoogleLogin État de la version : bêta |
|
---|---|
Implémentation | Identité de l'utilisateur , Page spéciale |
Description | Permet de vous connecter avec votre compte Google. |
Auteur(s) | Florian Schmidt (Florianschmidtwelzowdiscussion) |
Dernière version | 0.4.0-git |
MediaWiki | >= 1.39.0 |
Modifie la base de données |
Oui |
Tables | googlelogin_allowed_domains user_google_user |
Licence | Licence MIT |
Téléchargement | README |
|
|
|
|
Voir le cycle de vie des versions pour un aperçu de la compatibilité | |
Téléchargements trimestriels | 53 (Ranked 83rd) |
Traduire l’extension GoogleLogin sur translatewiki.net si elle y est disponible | |
Problèmes | Tâches ouvertes · Signaler un bogue |
L'extension GoogleLogin permet aux utilisateurs wiki de se connecter avec leur compte Google. L'extension utilise l'API Google pour demander à Google les informations de base du profil (tel que l'identifiant du compte, le nom complet et l'adresse courriel).
Prérequis
Pour utiliser cette extension vous devez avoir au moins :
- MediaWiki 1.36+
- MySQL/MariaDB (pas de prise en charge de PostgreSQL ni de SQLite)
- PHP 7.3+
- Un accès développeur Google
- API Credentials pour Webapplication (Client ID et Client Secret)
- Pouvoir exécuter
composer update --no-dev
Installation
- Téléchargez et placez le(s) fichier(s) dans un répertoire appelé
GoogleLogin
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/GoogleLogin - 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( 'GoogleLogin' );
- Exécutez le script de mise à jour qui va créer automatiquement les tables de base de données dont cette extension a besoin.
- Configurer les paramètres nécessaires
- Vous assurer que l'utilisateur du serveur web a le droit d'écrire dans ./wiki/extensions/GoogleLogin/cache
- Fait – Accédez à Special:Version sur votre wiki pour vérifier que l'extension a bien été installée.
Configuration
L'extension fournit deux variables de configuration pour mettre le Client ID et le Client Secret (vous obtenez cette paire dans la console développeur Google, en enlevant '<' et '>').
$wgGLSecret = '<your-client-secret>';
$wgGLAppId = '<your-client-id>';
Paramètres supplémentaires de configuration
Variable de configuration | valeur par défaut | Description |
---|---|---|
$wgGLAllowedDomains [gerrit 1]
|
''
|
Tableau de domaines de courriels, autorisés à utiliser GoogleLogin, par exemple [ 'example.com' ]; . Par défaut : tous les domaines sont autorisés. Si initialisé, vous devez exécuter le script de maintenance "updatePublicSuffixArray.php" .
|
$wgGLAllowedDomainsDB [gerrit 2]
|
false
|
Si fixé à true, GoogleLogin utilise la base de données pour vérifier si un domaine de courriel de l'adresse courriel primaire d'un compte Google est autorisé à se connecter. |
$wgGLAllowedDomainsStrict [gerrit 1]
|
false
|
Pris en compte seulement si $wgGLAllowedDomains est un tableau. Si fixé à true, le domaine de courriel sera vérifié complètement avec les domaines autorisés (au lieu du TLD uniquement), par exemple :test.example.com n'est pas autorisé si |
$wgGLAPIKey [gerrit 3]
|
''
|
Clé pour l'accès public à l'API. Utilisé seulement pour les actions administrateur pour vérifier, si l'utilisateur a un profile Google Plus ou pas. |
$wgGLAuthoritativeMode [gerrit 4]
|
false
|
Contrôle le mode faisant autorité de GoogleLogin. |
$wgGLEnableEchoEvents
|
true
|
Déclarations dans la console développeur de Google
Pour utiliser cette extension vous devez disposer d'un compte Google développeur et avoir accès à la console developpeur. Ceci est un guide pas à pas (très) simple (voir aussi la page d'aide de Google à ce sujet) :
- Ouvrez la console Google développeur
- Lire et accepter les termes du service
- Créez votre propre projet
- Allez dans APIs and services
- Cliquez sur + CREATE CREDENTIALS
- Choisir OAuth client ID
- Sélectionnez Web application, APPLICATION TYPE, Authorized JavaScript origins, entrez le nom de votre domaine (pas de joker autorisé, ni de répertoires !)
- Entrez votre Authorized redirect URI (URI de redirection autorisée) comme ceci par exemple :
- Si votre domaine est example.com et que vous avez installé MediaWiki à la racine de votre domaine, l'URI de redirection est de la forme : https://example.com/index.php/Special:GoogleLoginReturn
- Cliquez sur create et copiez Client ID et Client Secret dans les variables de configuration de LocalSettings.php
Page spéciale "Special:GoogleLoginReturn"
L'URI de redirection autorisée dans la console Google developeur doit être dans la langue du contenu. Donc, si par exemple votre wiki a l'allemand comme langue de contenu, vous aurez Spezial:GoogleLoginReturn
. Si vous n'utilisez pas la bonne langue, toutes les demandes d'authentification vont échouer avec le code d'erreur redirect uri mismatch indiquant que l'URI de redirection ne correspond pas.
Debogage
Normalement, vous pouvez voir le message d'erreur sur toutes les pages d'erreur génériques. Quelques fois apparaissent des erreurs internes appelées exceptions.
Dans ce cas, veuillez ajouter dans LocalSettings.php $wgShowExceptionDetails initialisé à true
pour voir le message complet de l'exception. Pour une demande de support, veuillez toujours fournir le contenu du message affiché par l'exception.
For a support request, please provide always the lines of the Exception.
Utilisation sur un wiki privé
Si vous avez déclaré votre wiki comme privé avec
$wgGroupPermissions['*']['read'] = false;
vous devez mettre en liste blanche la page « Special:GoogleLoginReturn » , de sorte que les utilisateurs anonymes puissent accéder à l'URL de callback après avoir été redirigés du fournisseur d'authentification. Vous pouvez faire cela en ajoutant la ligne suivante à votre LocalSettings.php :
$wgWhitelistRead = [ 'Special:GoogleLoginReturn' ];
The name of the special page must be in the wiki's content language.
If your wiki was e.g. set to German as the content language, then use Spezial:Benutzerkonto_anlegen
.
In case you used the wrong language, all authentication requests will fail and redirect you to "Special:Login".
Domaines du wiki autorisés par l'administrateur
GoogleLogin fournit une fonctionalité pour restreindre la connexion avec Google à des domaines d'adresses courriel spécifiques (comme gmail.com, googlemail.com ou tout autre (propre) domaine). Cette fonction est particulièrement intéressante pour les entreprises qui utilisent leur propre nom de domaine avec Google Apps.
La liste des domaines, qui sont autorisés pour la connexion avec Google, est gérée sous forme de tableau dans LocalSettings.php (option de configuration $wgGLAllowedDomains
). Depuis la version 0.4.0, GoogleLogin fournit aussi un moyen pour gérer la liste des domaines autorisés sur le wiki lui-même. Les domaines autorisés sont enregistrés dans la base de données quand cette fonctionalité est activée et peuvent être modifiés (supprimés/ajoutés) via une interface utilisateur graphique (page spéciale) ou via l'API MediaWiki.
Note: la liste des domaines autorisés ne peut plus être gérée dans LocalSettings.php, une fois que l'administration des domaines dans la base de données est activée.
Pour activer cette fonctionalité afin de pouvoir gérer les domaines autorisés dans la base de données, il suffit de fixer la variable de configuration $wgGLAllowedDomainsDB
à true
dans votre fichier LocalSettings.php. Vous pouvez aussi assigner le nouveau droit utilisateur managegooglelogindomains
à un groupe dont vous êtes membre (mais rappelez-vous, que tous les utilisateurs qui ont ce droit seront autorisés à modifier la liste des domaines autorisés, donc veillez à ajouter ce droit à un groupe de niveau administrateur uniquement!). Une configuration d'exemple serait :
$wgGLSecret = 'your-secret';
$wgGLAppId = 'your-app-id';
$wgGLAllowedDomainsDB = true;
$wgGroupPermissions['sysop']['managegooglelogindomains'] = true;
Vous devez maintenant exécuter encore le script update.php
, afin d'appliquer les modifications nécessaires à la base de données. Après que la procédure de mise à jour se soit terminée, vous pouvez aller sur la page spéciale Special:GoogleLoginAllowedDomains
de votre wiki. Vous obtiendrez une page où vous pourrez ajouter de nouveaux domaines, qui sont autorisés pour vous connecter avec un compte Google et vous pourrez ensuite éventuellement les supprimer.
Configuration parameter "$wgGLAPIKey"
Cette option de configuration existe encore, mais elle est utilisée maintenant plus largement que pour la page spéciale Special:ManageGoogleLogin. Elle sert dorénavant pour obtenir le nom d'un utilisateur sur Special:RemoveCredentials afin de rendre plus facile à l'utilisateur l'identification du compte Google correct (au lieu d'afficher simplement l'ID Google). Si la clé n'est pas correcte ou n'est pas fournie, GoogleLogin va afficher seulement l'ID Google. Pour une bonne expérience utilisateur, il est fortement suggéré de fournir cette clé d'API maintenant.
Mode faisant autorité
Automatic account creation
Google Login prend en charge un mode dit faisant autorité, dans lequel, lorsqu'il est activé, un compte d'utilisateur est automatiquement créé lorsque le compte Google, qui a été utilisé pour se connecter, n'est pas déjà associé à un compte MediaWiki local. Cette option est désactivée par défaut et doit être activée avec une option de configuration. Cependant, veuillez lire les informations importantes suivantes avant de le faire. Cette fonctionnalité nécessite que la configuration du wiki prenne en charge strictement ceci :
- GoogleLogin nécessite d'être le seul fournisseur primaire d'authentification, déclarez par exemple
$wgAuthManagerConfig = [ 'primaryauth' => [ GoogleLogin\Auth\GooglePrimaryAuthenticationProvider::class => [ 'class' => GoogleLogin\Auth\GooglePrimaryAuthenticationProvider::class, 'sort' => 0 ] ], 'preauth' => [], 'secondaryauth' => [] ];
- Le caractère @ doit être mis en liste blanche dans le paramètre
$wgInvalidUsernameCharacters
et adaptez en conséquence $wgUserrightsInterwikiDelimiter comme par exemple
$wgInvalidUsernameCharacters = ':~'; $wgUserrightsInterwikiDelimiter = '~';
- La création automatique de compte doit être activée :
$wgGroupPermissions['*']['autocreateaccount'] = true;
- Le mode faisant autorité de GoogleLogin doit être activé :
$wgGLAuthoritativeMode = true;
L'activation de cette fonctionnalité influe aussi sur les éléments suivants :
- Le nom d'utilisateur du compte est le champs primaire du courriel de l'information retournée par Google. Ceci n'est pas configurable.
- Si un compte local de wiki est déjà connecté, ce compte est utilisé pour se connecter, ce qui signifie qu'un compte déjà existant a la priorité sur la création d'un nouveau compte.
- Le compte nouvellement créé sera automatiquement lié au compte Google.
- GoogleLogin ne permet pas à l'utilisateur d'ajouter ou de supprimer d'autres connexions aux comptes Google (ou le lien créé automatiquement) afin que l'utilisateur puisse toujours se connecter.
- GoogleLogin n'ajoute pas de mot de passe pendant la création de compte; si le mode faisant autorité est désactivé et que la connexion avec mot de passe doit être réexécutée, l'utilisateur doit modifier son mot de passe.
Manual account creation
Google Login also supports a variant of the so called authoritative mode, in which, when configured, a user account is still manually created by the respective user but automatically mapped to the Google account, which was used when creating the account, if it is not already associated with a local MediaWiki account. Moreover only permissive Google accounts can register an account manually.
- Creation of accounts needs to be enabled (also for private wikis):
$wgGroupPermissions['*']['createaccount'] = true;
- If on a private wiki the following pages need to be accessible by everybody, e.g. for English language wikis:
$wgWhitelistRead = [ 'Special:Login', 'Special:GoogleLoginReturn', 'Special:CreateAccount', 'Special:CreateAccount/return' ];
- Note that the special pages need to be added in the wiki language.
- The primary authentication provider needs to be disabled, i.e. set
$wgAuthManagerAutoConfig['primaryauth'] = [ ];
Enabling manual account creation has the same influence as automatic account creation does (see above), however with the following difference:
- The user who creates the account is free in its naming, i.e. some sort of user name logic cannot be enforced.
- If a local wiki account is already connected, an additional new account cannot be created manually, which means that an already existing account takes precedence over creating a new one.
Client PHP de l'API Google
Cette extension utilise le client de API PHP Google (inclu dans les versions avant la 0.2.1), distribué sous la licence Apache 2.0. Le client peut être téléchargé de GitHub. The Client can be downloaded from GitHub.
Maintenance script "updatePublicSuffixArray.php"
Le script de maintenance "updatePublicSuffixArray.php" télécharge une liste de noms de domaines valides pouvant être utilisés dans le monde entier.
Ceci est nécessaire pour que GoogleLogin autorise les sous-domaines d'un domaine d'adresses courriel donné, lorsque vous avez restreint la connexion avec GoogleLogin pour des domaines spécifiques.
Nécessaire que si $wgGLAllowedDomainsStrict
vaut false (valeur par défaut).
Cycle de vie des versions
Notez bien que je prends en charge uniquement la dernière version de GoogleLogin. Ne sont plus maintenues: toutes les versions différentes de la version actuelle (c'est à dire la branche Mediawiki de déploiement actuelle - release branch), et de la version de développement courante du master. Any versions apart from the current release (which means the current MediaWiki release branch) and the current development version (aka master) are not supported anymore.
Références
- Relecture du code dans Gerrit
See also
- OpenID Connect - Allows for authentication and authorization, including logging in with Google.