Erweiterung:GoogleLogin

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Extension:GoogleLogin/PreAuthManager and the translation is 29% complete.

Other languages:
Deutsch • ‎English • ‎Nederlands • ‎español • ‎italiano • ‎occitan • ‎polski • ‎português • ‎português do Brasil • ‎sicilianu • ‎русский • ‎日本語
MediaWiki-Erweiterungen
OOjs UI icon advanced.svg
GoogleLogin
Erscheinungsstatus: Beta
GoogleLogin-Screenshot.PNG
Einbindung User identity, Special page
Beschreibung Stellt ein Login mit einem Google Konto zur Verfügung (unter Verwendung der Google API)
Autor(en) Florian Schmidt (Florianschmidtwelzowtalk)
Letzte Version see the version lifecycle (2015-04-23)
MediaWiki see the version lifecycle
PHP 5.3+ (since 0.4.0: 5.5+)
Datenbankänderungen Ja
Lizenz MIT License
Herunterladen
Extension:GoogleLogin/Changelog
Verwendete Hooks
UserLogoutComplete
LoadExtensionSchemaUpdates
UserLoginForm
UserCreateForm
PersonalUrls
SpecialPage_initList
GetPreferences
RecentChange_save
ListDefinedTags
ChangeTagsListActive
Übersetze die GoogleLogin/PreAuthManager Erweiterung wenn sie auf translatewiki.net verfügbar ist
Prüfe die Benutzungs- und Versionsmatrix.
Probleme Offene Aufgaben · Einen Fehler melden
Die GoogleLogin Erweiterung erlaubt es Nutzer eines Wikis, sich mit ihrem Google Konto anzumelden. Die Erweiterung verwendet die Google API, um die Nutzerdaten anzufordern. Wenn ein Nutzer sich das erste mal anmeldet, erlaubt es die Erweiterung einen neuen Nutzer mit der Google-Mail-Adresse und dem Google Nutzernamen (oder dem Vornamen, oder einem eigenen, ausgewählten Namen) zu erstellen.

The GoogleLogin extension allows wiki users to login with their Google Account. The extension uses Google API to request user data. If the user logged in first time, the extension allows to create a user with the Google email address and Google username (or given name, or an own name).

Voraussetzungen

Um diese Erweiterung zu verwenden, wird benötigt:

  • MediaWiki 1.23+ (für Version v0.2.0 und darüber wird mindestens MediaWiki 1.24 benötigt)
  • MySQL (zur Zeit keine PostgreSQL oder SQLite Unterstützung)
  • PHP 5.3+
  • Google Developer Zugang
  • Zugang zur Google+ API
  • API-Zugangsdaten für Webapplikationen (Client ID und Client Secret)
  • Version v0.2.1 und darüber benötigen zudem die Erweiterung GoogleAPIClient[3]

To use this extension you need:

  • MediaWiki 1.23+ (for version v0.2.0 and above you need at least MediaWiki 1.24)
  • MySQL (no PostgreSQL or SQLite support for now!)
  • PHP 5.3+
  • Google Developer Access
  • Google+ API access
  • API Credentials for Webapplication (Client ID and Client Secret)
  • Version v0.2.1 until version 0.3.1 requires the Extension GoogleAPIClient[4], otherwise run composer update, only.

Installation

  • Füge folgenden Code am Ende deiner LocalSettings.php hinzu:
    require_once "$IP/extensions/GoogleLogin/GoogleLogin.php";
    
  • Führe das Aktualisierungsskript aus, welches automatisch die notwendigen Datenbanktabellen erstellt, die diese Erweiterung braucht.
  • Konfiguriere die benötigten Parameter
  • Make sure ./wiki/extensions/GoogleLogin/cache is writeable for root
  • Yes Erledigt – Navigiere zu Special:Version in deinem Wiki (bei Einstellung auf deutsch nach Spezial:Version), um zu prüfen, dass die Erweiterung erfolgreich installiert ist.

Configuration

Ensure that all settings reside under the "require_once" directive added for this plugin. Otherwise any custom settings will be overwritten by the default settings, as referenced here: Topic:Si6ituq6hmxb07xm

Konfiguration

Diese Erweiterung stellt zwei Konfigurationsvariablen für die Client ID und den Client Secret (beide bekommst du in der Google Developer Console, lösche "<" und ">") zur Verfügung.

$wgGLSecret = '<your-client-secret>';
$wgGLAppId = '<your-client-id>';

Zusätzliche Konfigurationsparameter

Konfigurationsvariable seit Version Standardwert Beschreibung
$wgGLShowCreateReason[gerrit 1] v0.1.1 (entfernt in 0.4.0) false Wenn true, fügt "via GoogleLogin" als Grund im Eintrag im Neuanmeldungs-Logbuch hinzu.
$wgGLAllowedDomains[gerrit 2] v0.1.1 '' Ein Array von E-Mail-Domains, welche für den Login mit GoogleLogin erlaubt sind, bspw. array( 'example.com' );. Standard: alle Domains sind erlaubt.
$wgGLAllowedDomainsStrict[gerrit 2] v0.1.1 false Nur beachtet, wenn $wgGLAllowedDomains ein Array ist. Wenn auf true gesetzt, wird die E-Mail-Domain komplett gegen die erlaubten geprüft (anstelle nur der Top Level Domain), bspw.:

test.example.com ist nicht erlaubt, wenn $wgGLAllowedDomainsStrict true ist und example.com eine erlaubte Domain ist.
test.example.com ist erlaubt, wenn $wgGLAllowedDomainsStrict false ist und example.com eine erlaubte Domain ist.

$wgGLShowKeepLogin[gerrit 3] v0.1.2 (entfernt in 0.4.0) true Wenn true, das "Angemeldet bleiben" Kontrollkästchen für GoogleLogin (vor dem Login mit Google Button) ist sichtbar.
$wgGLAllowAccountCreation[gerrit 4] v0.1.2 (entfernt in 0.4.0) $wgGroupPermissions['*']['createaccount'] Steuert, ob der Nutzer ein neues Konto mit GoogleLogin erstellen kann oder nicht. Als Standardwert gilt der Wert der Gruppenrechte für nicht angemeldete Nutzer.
$wgGLReplaceMWLogin[gerrit 4] v0.1.2 (entfernt in 0.4.0) false If true, the MediaWiki Login-workflow will be replaced with GoogleLogin. Includes:
  • Login-Link in Personal URLs
  • replace of Special:UserLogin to Special:GoogleLogin
$wgGLForceKeepLogin[gerrit 5] v0.2.0 (entfernt in 0.4.0) false Control, if Keep login (which means longer login sessions) is always enabled (even if the user doesn't checked the keep log box or GoogleLogin replaces MediaWiki's login!)
This configuration doesn't overwrite $wgGLShowKeepLogin, but it will overwrite the value of the keep login checkbox, so make sure, that you set this configuration to false if you want to avoid confusion.
$wgGLAPIKey[gerrit 6] v0.2.1 '' Key for public API access. Used only for admin actions to check, if the user has a Google Plus profile or not.
$wgGLShowRight[gerrit 7] v0.3.0 (entfernt in 0.4.0) false If set to true, the Google Login button on Special:UserLogin will move to the right side of the form.
$wgGLNeedsConfirmEmail[gerrit 8] v0.3.0 (entfernt in 0.4.0) true Whether the user needs to confirm the google mail address after registration of a new local MediaWiki account, or not.

Settings in Google Developer Console

To use this extension you need a Google developer account and access to the developer console. This is a simple (a very simple!) step-by-step guide (use Step 1 of the official step-by-step example with these settings):

  1. Open Google developer console
  2. Read and accept the terms of service
  3. Create your first project
  4. Go to APIS & AUTH
  5. Go to APIs and enable Google+ API (read and accept the terms)
  6. Go to Credentials
  7. In Section OAuth click Create new Client ID
  8. Select as Web application as APPLICATION TYPE, as Authorized JavaScript origins type in your domain name (no wildcards and directories allowed!)
  9. Type in your Authorized redirect URI like this example:
    If your domain is example.com and you have installed MediaWiki in Root of your domain, the redirect URI is as follows: http://example.com/index.php/Special:GoogleLogin
  10. Click create and copy the Client ID and Client Secret to the configuration variables in LocalSettings.php

"Special:GoogleLogin" or (in German for example) "Spezial:Mit_Google_anmelden"

The allowed redirect URI in Google developer console must be in content language. So, if your wiki has content language German, then type in "Spezial:Mit_Google_anmelden" and not "Special:GoogleLogin". If you used the wrong language, all Authentication requests will fail with redirect uri mismatch.

Debug

Normally, you can see the error message on all generic error pages. Sometimes there are Internal Errors, called Exceptions. In this case, please add $wgShowExceptionDetails with value true in LocalSettings.php to see the complete Exception message. For a support request, please provide always the lines of the Exception.

Use on a private wiki

If you have set your Wiki to private with

$wgGroupPermissions['*']['read'] = false;

you have to whitelist the "Special:GoogleLogin" page, so that anonymous users can access the callback URL after being redirected from the authentication provider. You can do this by adding the following line to your LocalSettings.php:

$wgWhitelistRead = array( 'Special:GoogleLogin' );

Allow account creation only via GoogleLogin

It's possible to deactivate the account creation function of MediaWiki. Normally GoogleLogin don't give the option to create a new account, too. It's possible to change this, that Users can still create an account with GoogleLogin, but can't with the vanilla account creation form. For this you need to set up the following configuration varaibles in your LocalSettings.php:

$wgGroupPermissions['*']['createaccount'] = false;
$wgGLAllowAccountCreation = true;

If you want to remove the Login form of MediaWiki, too, you can set this configuration variable, too:

$wgGLReplaceMWLogin = true;

If you want to remove GoogleLogin in the future for any reason, your users can still login into your MediaWiki installation without to register a new account. GoogleLogin creates normal MediaWiki-accounts with a random password. Your users just have to reset their password with the special page Special:PasswordReset.

MobileFrontend <-> GoogleLogin conflict (only with $wgGLReplaceMWLogin = true; and MediaWiki <= 1.26!)

MediaWiki version: 1.25

MobileFrontend, the extension to provide a mobile optimized version of your wiki, actually conflicts with GoogleLogin if you set $wgGLReplaceMWLogin to true (to disallow login with the vanilla login form). In the case, that MobileFrontend is loaded after GoogleLogin (the require_once line of MobileFrontend in your LocalSettings.php is after the one of GoogleLogin), the special page UserLogin (which handles the login with username and password) will be overwritten by GoogleLogin the first time and by MobileFrontend the second time (to provide a mobile optimized login page). In this case, MobileFrontends Replacement will win and mobile users can still login with username and passwords.

Actually this problem is solved in the MediaWiki release branch/version 1.26 (tracked in task T74910) of MobileFrontend. For older versions of MediaWiki/MobileFrontend you need to change the order in which the Extensions are loaded. Put the require_once and configuration lines of GoogleLogin somewhere after the ones of MobileFrontend in your LocalSettings.php. This workaround should be obsolete in one of the next versions of MobileFrontend.

What can this extension do

With the database update, the extension will create a new table called prefix_user_google_user which contains the needed connection between the wiki users and Google accounts. It stores only the Google UserId and the Wiki UserId.

If a user calls the special page GoogleLogin, he will instantly redirected to Google Authentication request to give your application access to some user information stored by Google . The user must accept this request (or he can not use the login with Google). After accepting, the user has the possibility, if he isn't logged in as a wiki user, to create a new account. The username he can choose self or choose one of the suggestions, based on the Google user name and given name (if one s free and createable). If the chosen username is creatable (free, valid and not blocked), a new user with the username and the Google-Mail as e-mail-address will be created and linked to the Google Account.

If the user is logged in (means: he has already a wiki account) he can link this account with the Google account, this the user must do only once. If the connection is created, the user will be able to login simply by clicking Login with Google button on Special:Login.

If the wiki account and Google account is connected, the user can, if he navigates to "Special:GoogleLogin", unlink his account and Google account.

Google API PHP Client

This Extension uses the Google API PHP Client (included in versions before 0.2.1), distributed under the Apache 2.0 License. The Client can be downloaded from GitHub.

Version lifecycle

In der folgenden Tabelle findest du Versionsnummern der GoogleLogin Erweiterung, die entsprechende MediaWiki Version für welche die GoogleLogin Version erstellt wurde und ob diese unterstützt wird (und bis wann) oder nicht. In den meisten Fällen ist der Supportzeitraum nahezu identisch mit dem Lebenszyklus der entsprechenden MediaWiki Version.

Version Entsprechende MediaWiki Version Status Veröffentlichungsdatum Lebensende
0.4.x 1.28.x aktuelle Version 2016-06-18 November 2017(2017-11)
0.4.0 1.27.x (LTS) aktuelle Version 2016-07-20 Juni 2019(2019-06)
0.3.1 1.27.x (LTS) obsolet (durch 0.4.0 ersetzt) 2016-06-10 2017-07-20
0.3.0 1.26.x Legacy-Version n/a November 2016(2016-11)
0.2.1 1.25.x nicht mehr unterstützt n/a 2016-06-18
0.2.0 1.24.x nicht mehr unterstützt n/a 2016-06-18
0.1.3 1.23.x (LTS) nicht mehr unterstützt n/a 2016-06-18

Versionen aus der oben zu sehenden Tabelle, welche als nicht mehr unterstützt markiert sind, erhalten keinerlei Fehlerbehebungen. Sie können kritische Sicherheitslücken oder andere kritische Fehler enthalten, einschließlich der Gefahr von Datenverlust und/oder -korruption. Der Entwickler empfiehlt dringendst, ausschließlich oben gelistete Versionen in einem Produktivsystem zu verwenden, die als aktuelle Version oder zumindest als Legacy-Version. Legacy-Versionen erhalten meistens Fehlerbehebungen für gemeldete Fehler, die die Kernfunktionalität der Erweiterung beeinträchtigen, wohingegen aktuelle Versionen Behebungen für die meisten gemeldeten Fehler erhalten (auch wenn diese nicht Teil der Kernfunktionalität sind). Neue Funktionen werden meist Teil einer neuen Version sein. Die Entscheidung über die Rückportierung von Funktionen zu älteren Versionen von GoogleLogin obliegt den Entwicklern.

References

Gerrit Code review