EC-CUBE 4.2/4.3系管理画面向けの EcAuth B2Bパスキー認証プラグインです。
- 管理画面へのパスキー(WebAuthn/FIDO2)ログイン
- パスキー管理画面(登録・一覧・削除)
- 管理画面のパスワード認証の無効化(パスキーへの一本化)
- EcAuth Identity Provider との連携
- EC-CUBE 4.2/4.3系
- PHP 7.4以上
- HTTPS環境(WebAuthn必須)
- オーナーズストアからプラグインをダウンロード
- 管理画面 > オーナーズストア > プラグイン > プラグイン一覧 からインストール
- プラグインを有効化
bin/console eccube:composer:require ecauth/ec-cube4-ecauth
bin/console eccube:plugin:enable --code=EcAuthLogin43- 管理画面 > 設定 > EcAuth 設定 を開く
- EcAuth Base URL、Client ID、Client Secret を入力して保存
管理画面のログインをパスキーだけに絞り、ID とパスワードによるログインを受け付けなくします。 管理者アカウントを不正に作成される脆弱性を踏んでも、作られたアカウントには EcAuth 側に パスキーが登録されていないため、そのアカウントで管理画面にログインされることはありません。
環境変数 ECAUTH_DISABLE_ADMIN_PASSWORD_LOGIN で切り替えます。1 / true / on / yes の
いずれかで無効化され、未設定・0・空文字なら従来どおりパスワードでログインできます。
EC-CUBE の .env に追記する方法が最も手軽です。
echo 'ECAUTH_DISABLE_ADMIN_PASSWORD_LOGIN=1' >> .envWeb サーバーやコンテナの環境変数として設定しても構いません(Docker なら
docker-compose.yml の environment:、Apache なら SetEnv など)。
注意: EC-CUBE の
index.phpはサーバー側にAPP_ENVが設定されている場合、.envを 読み込みません。APP_ENVを渡している環境(Docker など)では.envではなく 環境変数として設定してください。
現在の状態は「管理画面 > 設定 > EcAuth > EcAuth 設定」で確認できます。 この設定は管理画面からは変更できません。管理画面から戻せるようにすると、乗っ取られた 時点でパスワード認証を復活させられてしまい、対策になっていないためです。
少なくとも 1 人の管理者がパスキーを登録済みであることを必ず確認してください。 誰も登録していない状態で無効化すると、誰も管理画面にログインできなくなります。
ECAUTH_DISABLE_ADMIN_PASSWORD_LOGIN を 0 にする(または設定ごと削除する)と、
パスワードでログインできる状態に戻ります。通常はこの方法で復旧してください。
なお、本プラグインを無効化・アンインストールしてもパスワード認証は復活します。 無効化されたプラグインのサービスは EC-CUBE 本体がタグごと無効化するため、環境変数を 有効にしたままでも本プラグインのリスナーが動かなくなるためです。緊急時の復旧経路として 使えますが、パスキーログインも同時に使えなくなります。
管理者アカウントを不正に作成されても、そのアカウントでのログインは防げます。
プラグイン設定(plg_ecauth_login43_config)を消しても、dtb_member を書き換えても、
パスワード認証は戻りません。切り替えを DB ではなく環境変数に置いているのはこのためです。
一方、プラグインを無効化できる者は迂回できます。具体的には次の両方が必要です。
dtb_plugin.enabledをfalseにする(またはbin/console eccube:plugin:disable)- DI コンテナの再構築(
bin/console cache:clear、デプロイ、管理画面からのプラグイン操作など)
1 だけでは迂回できません。 プラグインの有効・無効はコンテナのコンパイル時に解決される ため、キャッシュを再構築するまで反映されないからです。したがって迂回には、DB 書き込みに 加えてファイルシステムまたは CLI へのアクセスが必要になります。また、管理画面 UI からの プラグイン無効化には管理画面へのログインが必要なので、無効化中は使えません。
プラグインは EC-CUBE の Web インストーラーからインストールできることが要件で、コア側に
パッチを当てないため、この迂回経路をプラグイン内で塞ぐことはできません。本番運用では
app/Plugin/ と var/cache/ への書き込み権限を、デプロイ経路以外から与えないでください。
- 新しく作成した管理者はログインできません。パスキーの登録には一度管理画面へ ログインする必要があるためです。メールログインなどの導線は別途検討中です。
- 2 個目以降のパスキーを登録する際の本人確認は、従来どおりパスワードの再入力です (ログインではなくログイン済みセッションの再確認のため、無効化の対象外)。
# Docker環境起動
docker compose up -d --build
# 管理画面: https://localhost:4430/admin
# デフォルトID: admin / passwordLGPL-2.1-or-later