Jump to content

Extension:GoogleLogin

From mediawiki.org
This page is a translated version of the page Extension:GoogleLogin and the translation is 94% complete.
MediaWiki 拡張機能マニュアル
GoogleLogin
リリースの状態: ベータ
実装 利用者識別 , 特別ページ
説明 Googleアカウントでのログインを可能にする
作者 Florian Schmidt (Florianschmidtwelzowトーク)
最新バージョン 0.4.0-git
MediaWiki >= 1.39.0
データベースの変更 はい
テーブル googlelogin_allowed_domains
user_google_user
ライセンス MIT ライセンス
ダウンロード
README
  • $wgGLAPIKey
  • $wgGLAllowedDomainsStrict
  • $wgGLAppId
  • $wgGLAllowedDomainsDB
  • $wgGLAuthoritativeMode
  • $wgGLSecret
  • $wgGLEnableEchoEvents
  • $wgGLAllowedDomains
  • managegooglelogin
  • managegooglelogindomains
互換性については、バージョン周期を参照してください。
四半期ごとのダウンロード数 55 (Ranked 81st)
translatewiki.net で翻訳を利用できる場合は、GoogleLogin 拡張機能の翻訳にご協力ください
問題点 未解決のタスク · バグを報告

GoogleLogin 拡張機能は、WikiへのログインにGoogle アカウントを使用できるようにします。この拡張機能は、Google APIから基本的なアカウントプロフィール情報(アカウントID、名前、メールアドレスなど)を取得します。

要件

この拡張機能を使用するには、以下の環境が必要です。

  • MediaWiki 1.36+
  • MySQL/MariaDB (PostgreSQL、SQLiteは未対応)
  • PHP 7.3+
  • Google デベロッパーコンソールでのセットアップ
  • WebアプリケーションのAPI認証情報(クライアントID、クライアントシークレット)
  • composer update --no-devを実行することができます。

インストール

  • ダウンロードして、ファイルをextensions/フォルダー内のGoogleLoginという名前のディレクトリ内に配置します。
    開発者とコード寄稿者は、上記の代わりに以下を使用してGitからインストールします:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/GoogleLogin
  • Gitでのインストールの場合のみ、PHPの依存関係をインストールするためComposerを実行します。 (合併症の可能性についてはT173141を参照。)
  • 以下のコードを LocalSettings.php ファイルの末尾に追加します:
    wfLoadExtension( 'GoogleLogin' );
    
  • 更新スクリプトを実行します。このスクリプトは、この拡張機能が必要とするデータベーステーブルを自動的に作成します。
  • 必要なパラメータを設定します
  • Webサーバーのユーザーが ./wiki/extensions/GoogleLogin/cache を書き込み可能になっていることを確認します
  • Yes 完了 – ウィキの「Special:Version」に移動して、拡張機能が正しくインストールされたことを確認します。

設定

この拡張機能は、「クライアントID」と「クライアントシークレット」の2つの変数を使用します。(これらの値はGoogle開発者コンソール(詳細は下の別項を参照)から取得してください。以下の"<"と">"は入力しないでください。)

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

追加の設定パラメータ

構成変数 既定値 説明
$wgGLAllowedDomains[gerrit 1] '' GoogleLogin でログインを許可するメールアドレスのドメイン。 [ 'example.com' ];。標準ではすべてのドメインを許可します。 この値を設定/変更した際は、"updatePublicSuffixArray.php" メンテナンス スクリプトを実行する必要があります。
$wgGLAllowedDomainsDB[gerrit 2] false メールアドレスのドメイン許可リストをデータベースに保存するかどうか。
$wgGLAllowedDomainsStrict[gerrit 1] false ドメインをサブドメインも厳密に制限するかどうか。

$wgGLAllowedDomainsが配列である場合にのみ有効です。有効な場合、メールアドレスは許可ドメインとトップレベルドメインだけでなく厳密に検証されます。
$wgGLAllowedDomainsStrictが有効な場合、example.comが許可されていてもtest.example.comはブロックされます。
$wgGLAllowedDomainsStrictが無効の場合、example.comが許可されているならtest.example.comも許可されます。

$wgGLAPIKey[gerrit 3] '' 公開 API アクセス用のキー。利用者が Google Plus のプロファイルを持っているかどうかを確認するための管理操作にのみ使用されます。
$wgGLAuthoritativeMode[gerrit 4] false GoogleLoginの権威モードを有効にするかどうか。
$wgGLEnableEchoEvents true

Google デベロッパーコンソールの設定

この拡張機能を使用するには、GoogleデベロッパーコンソールでOAuth APIをセットアップする必要があります。簡単にこれら設定方法を紹介します。 (これについてはGoogleの支援ページも参照してください)

Google 開発者コンソールを開く

  1. 利用規約を読み、同意する
  2. プロジェクトを作成する
  3. APIとサービスに移動する
  4. クライアントを作成をクリック
  5. OAuthクライアントIDを選択
  6. 「アプリケーションの種類」には「ウェブアプリケーション」を選択し、「承認済みの JavaScript 生成元」の欄にはあなたのドメイン名を入力します(ワイルドカードやパスは指定できません)

例:https://example.com

  1. 「承認済みのリダイレクト URI」の欄に、以下の例のように入力します
    仮にWikiのドメインが"example.com"だとして、ドキュメントルートの直下にWikiがある場合、リダイレクトURIは、https://example.com/index.php/特別:GoogleLoginReturnのようになります。(日本語が含まれるURLを保存しようとするとエラーになることがあるので、その場合はURLをエンコードする)

「作成」をクリックし、「クライアントID」と「クライアントシークレット」をLocalSettings.phpの変数に設定します。

特別ページ "特別:GoogleLoginReturn"

承認済みのリダイレクトURIの欄にはそのWikiの言語のページ名で指定する必要があります。例として日本語の設定の場合、特別:GoogleLoginReturnとなります。 もし誤ったページ名で保存すると、ログイン認証は「リダイレクトURIの不一致」で失敗するでしょう。

デバッグ

通常、すべてのエラーメッセージは一般的なエラーページで確認できます。時々、例外と呼ばれる内部エラーが発生する場合もあります。 その場合は、LocalSettings.phpに変数$wgShowExceptionDetails を追加し、その値をtrueに設定してください。 サポートをリクエストする場合、必ず例外のエラーメッセージをお知らせください。

非公開ウィキでの使用

非公開のMediaWikiで使用する場合、

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

未ログインの利用者が Google の認証プロバイダーからコールバック URL にリダイレクトされるので、このように「Special:GoogleLoginReturn」ページを LocalSettings.php でホワイトリストに追加する必要があります。

$wgWhitelistRead = [ 'Special:GoogleLoginReturn' ];

特別ページの名前はあなたのMediaWiki言語のページ名である必要があります。(日本語では「特別:○○」) 例えばドイツ語のWikiの場合は、Spezial:Benutzerkonto_anlegenのように設定します。 ページ名が誤っている場合、すべての認証は失敗し"Special:Login"ページへリダイレクトされます。

使用できるドメインの制限

使用可能なドメインを管理するインターフェイス

GoogleLoginでは、Wikiへのログインを特定のメールアドレスのドメイン(gmail.com、googlemail.com、その他の独自ドメインなど)に制限することができます。この機能はGoogle Appsで独自ドメインを使用している組織には便利です。 Googleログインを許可するドメインのリストは、 LocalSettings.php ($wgGLAllowedDomains、アレイ型) から設定できます。 バージョン0.4.0では、許可するドメインリストの管理機能が追加されました。 この機能が有効の際は、許可ドメインリストはデータベースに保存され、GUI(特別ページ)または MediaWiki API を介して変更 (削除/追加) することができます。

注: データベースでのドメインの管理が有効化された場合、許可ドメインリストはLocalSettings.phpからは変更できなくなります。

ドメイン制限の管理をデータベースで行うには、LocalSettings.phpで$wgGLAllowedDomainsDBtrueに設定してください。 また、あなたが所属いずれかのグループにmanagegooglelogindomains権限を割り当てる必要があります。(権限を割り当てたグループのユーザーは、許可ドメインのリストを変更することができるため、管理者にのみ付与することをおすすめします)以下が設定例です。

$wgGLSecret = 'your-secret';
$wgGLAppId = 'your-app-id';
$wgGLAllowedDomainsDB = true;
$wgGroupPermissions['sysop']['managegooglelogindomains'] = true;

LocalSettings.phpを設定できたら、最後にupdate.phpスクリプトを実行し、データベースにこの変更を適用する必要があります。 ここまで完了すれば、遂に特別ページ 特別:GoogleLoginAllowedDomainsからGoogleログインできるドメインのリストを管理できるようになります。

Configuration parameter "$wgGLAPIKey"

この設定オプションはまだ存在していますが、特別:ManageGoogleLogin以外のページでも使用されるようになりました。Special:RemoveCredentialsでユーザー名を取得し、ユーザーが正しい Google アカウントを識別しやすくするために使用されます。 (Google ID のみを表示するのではなく) このAPIキーが正しく設定されていない場合、GoogleLoginはGoogleIDのみを表示します。ユーザー体験を向上させるためにも、このキーを設定しておくことを強くおすすめします。

権威モード

自動アカウント作成

GoogleLoginは権威モードと呼ばれるモードが存在します。 これを有効にすると、ログインする際そのGoogleアカウントがローカルのMediaWikiアカウントと紐付けられていない場合、紐付けられたアカウントを自動的に作成します。このモードは既定では無効になっており、設定オプションで有効化することができます。 ただし、これを有効化する際は以下の重要な情報をご覧ください。 この機能を利用するためには、Wikiの設定を以下に従う必要があります。

  • GoogleLoginは唯一のメイン認証プロバイダである必要があり、以下のように設定します。
$wgAuthManagerConfig = [
    'primaryauth' => [
        GoogleLogin\Auth\GooglePrimaryAuthenticationProvider::class => [
            'class' => GoogleLogin\Auth\GooglePrimaryAuthenticationProvider::class,
            'sort' => 0
        ]
    ],
    'preauth' => [],
    'secondaryauth' => []
];

メールアドレスをユーザー名に使用するにあたり、「@」マークを、$wgInvalidUsernameCharacters 変数でホワイトリストに設定し、それに応じて$wgUserrightsInterwikiDelimiter も変更します。以下は変更例です。

$wgInvalidUsernameCharacters = ':~';
$wgUserrightsInterwikiDelimiter = '~';
  • 匿名ユーザーのアカウント自動作成権限を有効にします。
$wgGroupPermissions['*']['autocreateaccount'] = true;
  • GoogleLoginの権威モードが有効にします。
$wgGLAuthoritativeMode = true;

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

  • アカウントの利用者名は、Googleアカウントのメールアドレスとなります。これは変更できません。
  • ローカルWikiのアカウントが既に連携されている場合は、そのアカウントでログインします。既にGoogleアカウントに連携されたアカウントが存在する場合は作成されません。
  • 新しく作成されたアカウントは、自動的にGoogleアカウントと連携されます。
  • GoogleLoginは、ユーザーがログインできなくなるのを防ぐために、Googleアカウントの接続(または自動的に作成されるリンク)をさらに追加・削除することを許可しません。
  • GoogleLoginは、アカウント作成時にパスワードを設定しません。権威モードを無効にし、再びパスワードでのログインを有効にする場合、利用者はパスワードを再設定する必要があります。

手動によるアカウント作成 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'] = [ ];

手動でのアカウント作成は基本的に自動アカウント作成の場合と変わりませんが(上記参照)、次のような違いがあります。

  • アカウント作成したユーザーは利用者名を自由に設定できます。つまり、ユーザー名をメールアドレスに強制しません。

ローカルのWikiアカウントにGoogleが連携されている場合は、別の新しいアカウントを手動で作成することはできません。つまり、既存のアカウントが新しいアカウントの作成よりも優先されます。

Google API PHP クライアント

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

Maintenance script "updatePublicSuffixArray.php"

"updatePublicSuffixArray.php" メンテナンス スクリプトは、世界で使用するのに有効なドメイン名のリストをダウンロードします。 これは、GoogleLoginで特定のドメインのログインを制限している場合に、特定のメールドメインのサブドメインを許可するために必要なものです。 This is only needed if $wgGLAllowedDomainsStrict is set to false (which is the default) and every time the setting configuration parameter $wgGLAllowedDomains was changed.

バージョン周期

GoogleLoginは最新のバージョンのみサポートされていることにご注意ください。 現在のリリース (現在のMediaWikiリリースブランチ) と現在の開発バージョン (マスターブランチ) 以外にはどのバージョンもサポートされていません。

脚注

Gerrit コードレビュー

関連項目

  • OpenID Connect - Googleでのログインを含む認証と承認を可能にします。