Extension:GoogleLogin/ja

GoogleLogin 拡張機能は、ウィキ利用者が Google アカウントでログインできるようにします. この拡張機能はGoogle APIを使用してGoogleから基本的なプロフィール情報(アカウントID、フルネーム、メールアドレスなど)を要求します.

要件
この拡張機能を使用するには、最低限必要です.


 * MediaWiki 1.36+
 * MySQL/MariaDB (PostgreSQL、SQLiteは未対応)
 * PHP 7.3+
 * Google Developer アクセス
 * WebアプリケーションのAPI認証情報（クライアントID、クライアントシークレット）
 * を実行できるようになりました.

設定
The extension provides two configuration variables to set the Client ID and Client Secret (you get this pair in the Google Developer Console, remove "<" and ">").

Google Developer Consoleでの設定
To use this extension you need a Google developer account and access to the developer console. This is a very simple step-by-step guide (see also Googles help page on this):


 * 1) Open Google developer console
 * 1) 利用規約を読み、同意する
 * 2) 最初のプロジェクトを作成する
 * 3) APIとサービスに移動します.
 * 4) + 証明書を作成(CREATE CREDENTIALS)をクリックします.
 * 5) OAuthクライアントIDを選択
 * 1) Select as Web application as APPLICATION TYPE, as Authorized JavaScript origins type in your domain name (no wildcards and directories allowed!)
 * 1) 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: https://example.com/index.php/Special:GoogleLoginReturn
 * 1) Click create and copy the Client ID and Client Secret to the configuration variables in LocalSettings.php

特別ページ"Special:GoogleLoginReturn"
The allowed redirect URI in Google developer console must be in the wiki's content language. If your wiki was set to German as the content language, then use. In case you used the wrong language, all authentication requests will fail with the error code redirect uri mismatch.

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

非公開ウィキでの使用
Wikiを非公開にした場合

you have to whitelist the "Special:GoogleLoginReturn" 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:

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. In case you used the wrong language, all authentication requests will fail and redirect you to "Special:Login".

wikiで許可されたドメインを管理する
GoogleLoginは、Googleへのログインを特定のメールアドレスドメイン（gmail.com、googlemail.com、その他すべての独自ドメインなど）に限定する機能を提供します. この機能は、Google Appsで独自ドメイン名を使用している企業にとって、特に興味深いものです. The list of domains, which are allowed to login with Google, are managed in an array in the LocalSettings.php (the  configuration option). Since version 0.4.0, GoogleLogin also provides a way to manage the list of allowed domains on the wiki itself. The allowed domains are saved in the database when this feature is enabled and can be change (remove/add) through a graphical user interface (a special page) or through the MediaWiki API.

Note: The list of allowed domains cannot be managed in LocalSettings.php anymore, once the administration of the domains in the database is enabled.

To enable the feature to manage the allowed domains in the database, just set the  configuration variable to   in your LocalSettings.php. You also want to assign the new  user right to one group you're a member of (please keep in mind, that all users with this user right are allowed to change the list of allowed domains, so consider to add this right to an administrator-level group only!). An example configuration could look like:

You now need to run the  script again, so that the necessary database changes are applied to your database. After the update process is completed, you can navigate to the special page  on your wiki. You'll get a page where you can add new domains, which are allowed to login with their Google account and you can remove them, once they was added.

Configuration parameter "$wgGLAPIKey"
This configuration option still exists, but it's now used for more than just the Special:ManageGoogleLogin special page. It's now used to get the name of a user on Special:RemoveCredentials to make it easier to the user to identify the correct Google account (instead of just showing the Google ID). If the key isn't correct or isn't supplied, GoogleLogin will show the Google ID only. For a good user experience, it's highly suggested to supply this api key now.

Automatic account creation
Googleログインはいわゆるauthoritativeモードをサポートしており、これを有効にすると、ログインに使用されたGoogleアカウントがローカルのMediaWikiアカウントとすでに関連付けられていない場合、ユーザーアカウントが自動的に作成されます. このオプションはデフォルトでは無効になっており、設定オプションで有効にする必要があります. しかし、これを行う前に以下の重要な情報を読んでください. この機能を利用するためには、Wikiの設定で以下を厳密にサポートする必要があります.


 * GoogleLoginは唯一の一次認証プロバイダである必要があり、例えば以下のように設定します.
 * The @ sign needs to be whitelisted in the  configuration and adapt  accordingly, e.g.
 * アカウントの自動作成を有効にする必要があります.
 * GoogleLoginの認証モードが有効になっている必要があります.
 * GoogleLoginの認証モードが有効になっている必要があります.
 * GoogleLoginの認証モードが有効になっている必要があります.

また、この機能を有効にすることで、以下のような影響があります.


 * アカウントのユーザー名は、Googleから返される情報の主要なメールフィールドです. これは設定できません.
 * ローカルWikiのアカウントが既に接続されている場合は、このアカウントでログインします. つまり、新規にアカウントを作成するよりも、既に存在するアカウントが優先されるのです.
 * 新しく作成されたアカウントは、自動的にGoogleアカウントと連携されます.
 * GoogleLoginは、ユーザーがログインできなくなるのを防ぐために、Googleアカウントの接続（または自動的に作成されるリンク）をさらに追加または削除することを許可しません.
 * GoogleLoginは、アカウント作成時にパスワードを追加しません、権威モードが無効にされ、パスワードログインが再び有効にしなければならない場合、ユーザーは自分のパスワードをリセットする必要があります.

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. Note that the special pages need to be added in the wiki language. Enabling manual account creation has the same influence as automatic account creation does (see above), however with the following difference:
 * Creation of accounts needs to be enabled (also for private wikis):
 * If on a private wiki the following pages need to be accessible by everybody, e.g. for English language wikis:
 * If on a private wiki the following pages need to be accessible by everybody, e.g. for English language wikis:
 * The primary authentication provider needs to be disabled, i.e. set
 * 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.

Google API PHP クライアント
この拡張機能は Google API PHP Client (0.2.1 より前のバージョンに同梱) を使用しており、Apache 2.0 License の下で配布されています. このクライアントは、GitHub からダウンロードすることができます.

updatePublicSuffixArray.php
メンテナンススクリプトは、世界で使用するのに有効なドメイン名のリストをダウンロードします. これは、GoogleLoginで特定のドメインのログインを制限している場合に、特定のメールドメインのサブドメインを許可するために必要なものです. これは、 がfalseに設定されている場合（これがデフォルト）にのみ必要です.

バージョン ライフサイクル
なお、GoogleLoginは最新版のみサポートしています. 現在のリリース（つまり現在のMediaWikiのリリースブランチ）および現在の開発版（別名master）以外のバージョンはもうサポートされていません.

脚注

 * Gerrit コードレビュー