Skip to content

Releases: EcAuth/ec-cube4-ecauth

4.0-1.1.2 (EC-CUBE 4.0/4.1系)

Choose a tag to compare

@nanasess nanasess released this 19 Sep 08:40
370cb78

パスキーと管理者の紐付けに使う識別子を、変更できる「ログイン 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

Choose a tag to compare

@nanasess nanasess released this 19 Sep 08:39
ec2790f

パスキーと管理者の紐付けに使う識別子を、変更できる「ログイン 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系)

Choose a tag to compare

@nanasess nanasess released this 21 Aug 14:30
4.0-1.1.1
68abc54

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系)

Pre-release

Choose a tag to compare

@nanasess nanasess released this 21 Aug 13:59
4.0-1.1.0
ebcc0f0

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

Choose a tag to compare

@nanasess nanasess released this 21 Aug 10:25
5d05aef

これはプレリリースです。 オーナーズストアへの申請・検証用に配布物を用意したもので、正式版としての公開ではありません。

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' >> .env

Web サーバーやコンテナの環境変数として設定しても構いません。

注意: 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

Choose a tag to compare

@nanasess nanasess released this 09 Aug 04:08
4ef2c12

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 → パスキー管理」でパスキーを登録してください。

その他

  • CI: E2E 実行前に staging EcAuth をウォームアップし、コールドスタート起因の失敗を防止(#51)
  • Dependabot の依存更新を group 化(#53)

アップグレード時の注意

破壊的変更・マイグレーションはありません。

接続先(Client ID)を変更したことがある環境では、変更時に管理者のパスキー紐付けが解除されます。解除された管理者は、パスワードでログインしたうえで「設定 → EcAuth → パスキー管理」からパスキーを登録し直してください。

Full Changelog: 1.0.3...1.0.4

v1.0.3

Choose a tag to compare

@nanasess nanasess released this 06 Aug 08:44
37f7ea3

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 呼び出しの実行時の両方で検証

その他

  • 配布パッケージから開発用ファイル(phpunit.xml.dist)を除外(#50)
  • 依存パッケージの更新(#42, #43, #44)

⚠️ アップグレード時の注意

許可リストの導入により、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

Choose a tag to compare

@nanasess nanasess released this 04 Aug 06:51
9f463fc

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

Choose a tag to compare

@nanasess nanasess released this 30 Jul 05:40
00e0543

What's Changed

  • fix: プラグイン ID をオーナーズストアのリリース版 ID に変更 by @nanasess in #39

変更点

  • オーナーズストア公開版のプラグイン 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

Choose a tag to compare

@nanasess nanasess released this 26 Jul 03:11
8ac72a9

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

Full Changelog: https://github.com/EcAuth/ec-cube4-ecauth/commits/1.0.0