Releases: EcAuth/ec-cube4-ecauth
Release list
4.0-1.1.2 (EC-CUBE 4.0/4.1系)
パスキーと管理者の紐付けに使う識別子を、変更できる「ログイン ID」から変わらない「管理者 ID」へ切り替えたリリースです。4.2/4.3 系版(EcAuthLogin43)の 1.1.1 と同じ内容です。
What's Changed
- fix: パスキー登録の external_id を login_id から member:{member_id} に変える by @nanasess in #71
- ci: Dockerfile の apt 参照先を archive.debian.org に切り替える by @nanasess in #72
- chore(release): version を 1.1.2 に更新する by @nanasess in #74
変更点
ログイン ID を変更するとパスキーの紐付けが壊れる問題を修正しました (#71)
これまで本プラグインは、EcAuth にパスキーを登録する際の識別子として dtb_member.login_id(管理画面の「ログイン ID」)を送っていました。ログイン ID は管理画面からいつでも変更できるため、変更すると EcAuth 側では別の管理者として扱われ、プラグインを再インストールしたときなどに、以前のパスキーへ戻れなくなることがありました。
本バージョンから、採番後に変わることがなく再利用もされない dtb_member.member_id(管理者 ID)を使います。
- 通常の運用では設定も再登録も不要です。登録済みのパスキーはそのまま使えます
- 新しい識別子は、各管理者が次にパスキーを追加したときに自動で登録されます(古い識別子も残るため、どちらでも解決できます)
- ログイン ID を変更してもパスキーの紐付けは保たれるようになります
注意: 新しい識別子が登録されるまでの間に、プラグインの再インストールや接続先テナント(Client ID)の変更を行うと、古い識別子での復旧ができず、パスキーの再登録が必要になります。移行を早く完了させたい場合は、各管理者にパスキーを 1 つ追加していただくのが確実です。
認証器(iCloud キーチェーンや Google パスワードマネージャーなど)に表示されるアカウント名は、これまでどおりログイン ID のままです。
動作要件
本バージョンは EcAuth 側の対応(2026-09-19 リリース済み)を前提にしています。ec-auth.io をご利用であれば追加の作業はありません。
アップデート方法
EC-CUBE 管理画面の オーナーズストア > プラグイン一覧 からアップデートしてください。4.0 系では Composer v1 のメタデータ提供終了の影響で管理画面からの操作が失敗しやすいため、EC-CUBE 公式の案内にならいコマンドラインでの導入を推奨します。
bin/console eccube:plugin:install --path=/path/to/ec-cube4-ecauth-4.0-1.1.2.tar.gz
検証環境の Dockerfile の修正(#72)も含みますが、配布物には含まれません(Debian 11 の EOL により CI のイメージビルドが失敗していたための対応)。
🤖 Generated with Claude Code
v1.1.1
パスキーと管理者の紐付けに使う識別子を、変更できる「ログイン ID」から変わらない「管理者 ID」へ切り替えたリリースです。
What's Changed
- fix: パスキー登録の external_id を login_id から member:{member_id} に変える by @nanasess in #70
- chore(release): v1.1.1 のバージョン更新 by @nanasess in #73
変更点
ログイン ID を変更するとパスキーの紐付けが壊れる問題を修正しました (#70)
これまで本プラグインは、EcAuth にパスキーを登録する際の識別子として dtb_member.login_id(管理画面の「ログイン ID」)を送っていました。ログイン ID は管理画面からいつでも変更できるため、変更すると EcAuth 側では別の管理者として扱われ、プラグインを再インストールしたときなどに、以前のパスキーへ戻れなくなることがありました。
本バージョンから、採番後に変わることがなく再利用もされない dtb_member.member_id(管理者 ID)を使います。
- 通常の運用では設定も再登録も不要です。登録済みのパスキーはそのまま使えます
- 新しい識別子は、各管理者が次にパスキーを追加したときに自動で登録されます(古い識別子も残るため、どちらでも解決できます)
- ログイン ID を変更してもパスキーの紐付けは保たれるようになります
注意: 新しい識別子が登録されるまでの間に、プラグインの再インストールや接続先テナント(Client ID)の変更を行うと、古い識別子での復旧ができず、パスキーの再登録が必要になります。移行を早く完了させたい場合は、各管理者にパスキーを 1 つ追加していただくのが確実です。
認証器(iCloud キーチェーンや Google パスワードマネージャーなど)に表示されるアカウント名は、これまでどおりログイン ID のままです。
動作要件
本バージョンは EcAuth 側の対応(2026-09-19 リリース済み)を前提にしています。ec-auth.io をご利用であれば追加の作業はありません。
アップデート方法
EC-CUBE 管理画面の オーナーズストア > プラグイン一覧 からアップデートしてください。手動で導入する場合は添付の tar.gz をご利用ください。
🤖 Generated with Claude Code
4.0-1.1.1 (EC-CUBE 4.0/4.1系)
EC-CUBE 4.0 / 4.1 系向けの EcAuth 認証プラグイン(EcAuthLogin40)です。4.0/4.1 系で最初に利用可能となるリリースです。
Note
4.0-1.1.0 はオーナーズストア申請時のプレリリースで、プラグイン ID 採番前の状態です。導入には本リリース(1.1.1)をお使いください。
対応環境
| 項目 | 対応 |
|---|---|
| EC-CUBE | 4.0 系 / 4.1 系 |
| PHP | 7.1 以上 |
CI では EC-CUBE 4.0.6-p5 / 4.1.2-p5 の実環境を構築し、通常フローとパスワードログイン無効時の E2E テストを実施しています。
4.2/4.3 系版(EcAuthLogin43)との関係
- 提供する機能は 4.2/4.3 系版の 1.1.0 と同等です
- プラグインコードと名前空間が異なる別パッケージです(
EcAuthLogin40/Plugin\EcAuthLogin40) - オーナーズストアにも別商品として登録しています(プラグイン ID: 3581、4.2/4.3 系版は 3557)
- 4.2/4.3 系をお使いの場合は EcAuthLogin43 をご利用ください
4.0/4.1 系に合わせた主な実装差分
| 項目 | 4.2/4.3 系版 | 本リリース |
|---|---|---|
| 管理画面のパスワードログイン遮断 | CheckPassportEvent(Symfony 5.1+) |
kernel.request(priority 10、ファイアウォールの手前) |
| HTTP クライアント | PSR-18 / PSR-17 | プラグイン内に抽象を持ち Guzzle を 1 クラスに封じ込め |
| 環境変数の既定値 | env プロセッサの default: |
parameters での既定値定義(Symfony 3.4 に default: がないため) |
| 管理画面テンプレート | Bootstrap 5 | Bootstrap 4.3.1 |
| Composer | v2 | v1 のメタデータ提供終了に対応(依存を ec-cube/plugin-installer のみに限定) |
インストール
EC-CUBE 管理画面のオーナーズストアから導入できます。
手動で導入する場合、EC-CUBE 4.0 系では Composer v1 のメタデータ提供終了(2025-08-01)の影響で管理画面からの操作が失敗しやすいため、EC-CUBE 公式の案内にならいコマンドラインでの導入を推奨します。
bin/console eccube:plugin:install --path=/path/to/ec-cube4-ecauth-4.0-1.1.1.tar.gz
bin/console eccube:plugin:enable --code=EcAuthLogin40
本プラグインは ec-cube/plugin-installer 以外の依存を持たないため、上記ドキュメントにある「依存パッケージを本体の composer.json に vcs リポジトリとして書き足す」対応は不要です。
4.0-1.1.0 (EC-CUBE 4.0/4.1系)
Important
これはオーナーズストア申請時のプレリリースです。導入には 4.0-1.1.1 をお使いください。
申請に使用した時点ではオーナーズストアのプラグイン ID が未採番で、composer.json の extra.id は暫定値 0 でした。採番後に extra.id: 3581 を反映しましたが、オーナーズストアは同一バージョンの再登録ができないため、正式版は 1.1.1 として公開しています。
EC-CUBE 4.0 / 4.1 系向けの EcAuth 認証プラグイン(EcAuthLogin40)の申請用プレリリースです。
対応環境
| 項目 | 対応 |
|---|---|
| EC-CUBE | 4.0 系 / 4.1 系 |
| PHP | 7.1 以上 |
経緯
| リリース | extra.id |
位置づけ |
|---|---|---|
4.0-1.1.0(本リリース) |
3581(申請時のアーカイブは 0) | オーナーズストア申請用のプレリリース |
4.0-1.1.1 |
3581 | 正式リリース |
v1.1.0
これはプレリリースです。 オーナーズストアへの申請・検証用に配布物を用意したもので、正式版としての公開ではありません。
What's Changed
- feat: 管理画面のパスワード認証を環境変数で無効化できるようにする by @nanasess in #61
- chore(release): v1.0.5 のバージョン更新 by @nanasess in #62
- chore(release): v1.1.0 のバージョン更新 by @nanasess in #63
1.0.5 について: いったん 1.0.5 として採番しましたが、本リリースは利用者向けの新機能を含むため SemVer 上は MINOR が適切です。1.0.5 はプレリリースのまま誰も取得していない状態だったので取り下げ、1.1.0 として出し直しています。1.0.5 と 1.1.0 で配布物の中身に違いはありません。
変更点
管理画面のパスワード認証を無効化できるようにしました (#61)
管理画面のログインをパスキーだけに絞り、ID とパスワードによるログインを受け付けなくするオプションを追加しました。
管理画面ユーザーを不正に作成される脆弱性が問題になっていますが、不正に作られたアカウントには EcAuth 側にパスキーが登録されていないため、そのアカウントで管理画面にログインされることを防げます。
設定方法
環境変数 ECAUTH_DISABLE_ADMIN_PASSWORD_LOGIN で切り替えます。1 / true / on / yes のいずれかで無効化され、未設定・0・空文字なら従来どおりパスワードでログインできます。
EC-CUBE の .env に追記する方法が最も手軽です。
echo 'ECAUTH_DISABLE_ADMIN_PASSWORD_LOGIN=1' >> .envWeb サーバーやコンテナの環境変数として設定しても構いません。
注意: EC-CUBE の
index.phpはサーバー側にAPP_ENVが設定されている場合、.envを読み込みません。APP_ENVを渡している環境(Docker など)では.envではなく環境変数として設定してください。
現在の状態は「管理画面 > 設定 > EcAuth > EcAuth 設定」で確認できます。この設定は管理画面からは変更できません。 設定画面から切り替えられるようにすると、その画面に入れた時点で無効化を解除できてしまうためです。
⚠️ 無効化する前に必ずご確認ください
少なくとも 1 人の管理者がパスキーを登録済みであることを確認してください。 誰も登録していない状態で無効化すると、誰も管理画面にログインできなくなります。
パスキーを紛失した場合
ECAUTH_DISABLE_ADMIN_PASSWORD_LOGIN を 0 にする(または設定ごと削除する)と、パスワードでログインできる状態に戻ります。通常はこの方法で復旧してください。
なお、本プラグインを無効化・アンインストールしてもパスワード認証は復活します(緊急時の復旧経路として使えますが、パスキーログインも同時に使えなくなります)。
無効化中の制限
- 新しく作成した管理者はログインできません。 パスキーの登録には一度管理画面へログインする必要があるためです。メールログインなどの導線は別途検討中です
- 2 個目以降のパスキーを登録する際の本人確認は、従来どおりパスワードの再入力です(ログインではなくログイン済みセッションの再確認のため、無効化の対象外)
アップグレード時の注意
破壊的変更・マイグレーションはありません。
既定(環境変数を設定しない状態)では従来どおりパスワードでログインできるため、アップグレードしただけで挙動が変わることはありません。パスキーへの一本化を行う場合のみ、上記の設定と注意事項をご確認ください。
Full Changelog: 1.0.4...1.1.0
v1.0.4
What's Changed
- ci: E2E 実行前に staging EcAuth をウォームアップする by @nanasess in #51
- chore: Dependabot の依存更新を group 化 by @nanasess in #53
- fix: 別テナント切替時のパスキー登録失敗と、無言で終わる認証を直す by @nanasess in #59
- chore(release): v1.0.4 のバージョン更新 by @nanasess in #60
変更点
接続先テナントを切り替えるとパスキー登録が必ず失敗する問題を修正 (#52)
テスト用テナントの Client ID でパスキーを試したあと本番用の Client ID に差し替えると、パスキー登録が必ず失敗する(EcAuth が register/options で 400 を返す)状態でした。
プラグインが dtb_member.ecauth_subject に保持する識別子を、接続先が変わっても再利用していたためです。EcAuth 側ではこの識別子がテナントをまたいで一意のため、別テナントに同じ値を登録できません。
- 接続先(Client ID)が変わった場合、保存時に管理者の
ecauth_subjectを自動でクリアするようにしました。次回登録時に新しい識別子が発番されます - 設定画面で Client ID を変更して保存しようとすると確認ダイアログを表示します
- Client ID を変更する場合は、新しい接続先の Client Secret の入力を必須にしました。前の接続先の Client Secret がそのまま残ることを防ぎます
- Client ID を変更した場合、EcAuth URL は入力欄に残った前の接続先の値をそのまま使わず、新しい Client ID から解決し直します(解決できない場合は既存の URL を引き継ぎ、その旨を警告表示します)
会員側(dtb_customer)の識別子は EcAuth が発番するもので衝突しないため、変更していません。
パスキー未登録の管理者に何も表示されない問題を修正 (#58)
管理画面ログイン画面の「パスキーでログイン」を押しても、エラーも案内も一切表示されずボタンのラベルが戻るだけで、利用者からは「押しても何も起きない」ように見える状態でした。
同じ組織内に他の管理者のパスキーが登録済みで、自分のアカウントにはパスキーが未登録の場合に発生します。
- パスキーが見つからない場合に案内ダイアログを表示するようにしました
- 「パスキーでログイン」ボタンに初回利用者向けの案内をツールチップ(
title)で常設しました
このアカウントで初めてパスキーを使う場合は、パスワードでログインしてから「設定 → EcAuth → パスキー管理」でパスキーを登録してください。
その他
アップグレード時の注意
破壊的変更・マイグレーションはありません。
接続先(Client ID)を変更したことがある環境では、変更時に管理者のパスキー紐付けが解除されます。解除された管理者は、パスワードでログインしたうえで「設定 → EcAuth → パスキー管理」からパスキーを登録し直してください。
Full Changelog: 1.0.3...1.0.4
v1.0.3
What's Changed
- chore(deps): Bump actions/setup-node from 6 to 7 by @dependabot[bot] in #42
- chore(deps-dev): Bump @playwright/test from 1.61.1 to 1.62.0 by @dependabot[bot] in #44
- chore(deps): Bump anthropics/claude-code-action from 1.0.159 to 1.0.183 by @dependabot[bot] in #43
- fix: id_token の署名・iss・aud を検証してから管理者セッションを確立する (EcAuthDocs#101) by @nanasess in #49
- chore(release): v1.0.3 のバージョン更新とパッケージング修正 by @nanasess in #50
変更点
セキュリティ修正 (High)
管理画面のパスキーログインで、EcAuth から受け取った id_token を署名検証せずに sub を採用していた問題を修正しました(#49)。トークン応答を差し込める攻撃者が任意の sub で管理者になりすませる状態でした。
- JWKS による RS256 署名検証と、
iss/aud/exp/nbf/iatの検証を追加 algは RS256 のみ許可(alg=none/ HS256 への差し替えを拒否)expが欠落したトークンを拒否(従来は「存在する場合のみ」の判定で、削除されると無期限に通っていました)azpを検証し、別クライアント向けに発行されたトークンの使い回しを防止
あわせて、EcAuth URL のホストを許可リストで制限しました。EcAuth URL はトークン交換先かつ JWKS の取得先になるため、ここが攻撃者のホストに向くと署名検証ごと無効化されます。
- 既定は
ec-auth.ioのサブドメインのみ - 環境変数
ECAUTH_ALLOWED_HOSTS(カンマ区切り)で上書き可能 - 設定画面での保存時と、API 呼び出しの実行時の両方で検証
その他
⚠️ アップグレード時の注意
許可リストの導入により、ec-auth.io 配下に無いホストを EcAuth URL に設定している環境では、環境変数 ECAUTH_ALLOWED_HOSTS に完全なホスト名の追加が必要です。設定されていない場合、パスキーログインができなくなります。
ECAUTH_ALLOWED_HOSTS=.ec-auth.io,ecauth-example.your-domain.example
.example.com のような共有ホスティングのサフィックス指定は避けてください。そのサービスの全利用者を信頼することになり、本修正の意味が失われます。
Full Changelog: 1.0.2...1.0.3
v1.0.2
What's Changed
- fix: 管理者パスキーログインが customer firewall のセッションを汚染する問題を修正 by @nanasess in #46
- chore(release): v1.0.2 のバージョン更新とパッケージング修正 by @nanasess in #48
変更点
- 管理画面に EcAuth パスキーでログインしたブラウザで、フロントの会員がマイページに入れなくなる不具合を修正(#45)。コールバックが customer firewall 配下で処理されるため、
TokenStorageに載せた管理者トークンが_security_customerに書き出され、会員が/mypage/loginでログインフォームに到達できず 403 になっていました - 配布パッケージから開発用ファイル(
Tests/、.env*.tpl)を除外
注意: 本修正の適用後も、すでに汚染されたセッションは自動的には解消しません。該当ブラウザでフロントの /logout にアクセスするか Cookie を削除してください。
Full Changelog: 1.0.1...1.0.2
v1.0.1
What's Changed
変更点
- オーナーズストア公開版のプラグイン ID (
extra.id) を設定(999999→3557) - 対応 EC-CUBE バージョン表記を「4.2/4.3系」に統一
- システム要件を「PHP 7.4 以上」に修正(README の誤記修正。PHP 7.4.33 環境で動作確認済み)
Full Changelog: 1.0.0...1.0.1
v1.0.0
What's Changed
- feat: EC-CUBE 4.3系 B2Bパスキー認証プラグイン初期実装 by @nanasess in #2
- chore: パッケージマネージャーを yarn から pnpm に移行 by @nanasess in #11
- chore(deps): Bump actions/setup-node from 4 to 6 by @dependabot[bot] in #6
- chore(deps): Bump actions/checkout from 4 to 6 by @dependabot[bot] in #7
- chore(deps): Bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in #9
- 設定画面・パスキー管理画面のUI改善 by @nanasess in #14
- chore(deps): Bump pnpm/action-setup from 4 to 5 by @dependabot[bot] in #13
- Migrate from webauthn.js to @ecauth/auth-js by @nanasess in #15
- chore(deps-dev): Bump @ecauth/auth-js from 0.1.1 to 0.1.3 by @dependabot[bot] in #18
- chore(deps): Bump actions/setup-node from 4 to 6 by @dependabot[bot] in #17
- feat: CDN 配信への移行 - script src を cdn.ec-auth.io に変更 by @nanasess in #19
- feat: EcAuth APIパスを /v1 プレフィックスに更新 by @nanasess in #20
- feat(admin): Client ID によるテナント自動解決で設定画面を簡素化 by @nanasess in #22
- test(e2e): パスキーログインフロー完遂までの E2E を追加 by @nanasess in #25
- fix(admin): パスキー一覧表示の修正と改善 by @nanasess in #26
- ci: Claude Code Review を導入 by @nanasess in #28
- fix: Claude Code Review のコメント投稿者を claude[bot] に変更 by @nanasess in #34
- feat: B2B パスキー認証を PKCE (RFC 7636 / S256) 対応させる by @nanasess in #36
- chore(deps): Bump pnpm/action-setup from 5 to 6 by @dependabot[bot] in #23
- chore(deps): Bump softprops/action-gh-release from 2 to 3 by @dependabot[bot] in #24
- chore(deps): Bump actions/checkout from 6 to 7 by @dependabot[bot] in #29
- chore(deps): Bump anthropics/claude-code-action from 1.0.140 to 1.0.159 by @dependabot[bot] in #32
- chore(deps-dev): Bump @playwright/test from 1.58.2 to 1.61.1 by @dependabot[bot] in #33
- feat(admin): 設定画面に EcAuth 申込・マイページ導線を追加 by @nanasess in #37
New Contributors
- @nanasess made their first contribution in #2
- @dependabot[bot] made their first contribution in #6
Full Changelog: https://github.com/EcAuth/ec-cube4-ecauth/commits/1.0.0