【EC-CUBE 4】管理画面のログインIDとパスワードが分からないときの対処法

管理画面にログインしようとして、上図のように表示されるとかなり焦りますよね。
管理画面のログインIDはすぐ確認できますが、パスワードはセキュリティ面から暗号化されており、良くも悪くも簡単に確認することができません。本記事では、そんな困った状態を解決する方法を紹介します。

この対処法の過程では、一時的ですがセキュリティレベルが下がってユーザー操作に影響を及ぼします。本番環境のサイトを操作する場合は、事前にメンテナンスモードを設定しておくと安心です。(メンテナンスモードの設定方法は こちら。)

全体の流れ
  1. app/config/eccube/packages/eccube.yamlを開き、eccube_auth_type: HMACeccube_auth_type: PLAINに変更する。
  2. データベースを開き、dtb_memberテーブルからログインしたいユーザーを探す。
    • login_id(ログインID)はそのままコピーしておく。
    • password(パスワード)を、仮のパスワードとして適当な文字列(8~32文字)に変更する。
  3. サーバーにSSH接続してキャッシュをクリアする。【任意】
    これは必須ではないかもしれませんが、筆者はクリアしないとログインできませんでした。
  4. ②のIDとパスワードで管理画面にログインする。
  5. ログインできたら、①の変更を戻す。(app/config/eccube/packages/eccube.yamlを開き、eccube_auth_type: PLAINeccube_auth_type: HMACに戻す。)
  6. 管理画面にて「設定」→「システム設定」→「メンバー管理」から、パスワードを再設定する。
目次

パスワードの暗号化を無効化

EC-CUBEでは、パスワードはハッシュ関数により暗号化されているため、データベースに格納された文字列をそのまま入力してもログインできません。

暗号化を解除するには、app/config/eccube/packages/eccube.yamlを開き、eccube_auth_typeの値をHMACからPLAINに変更します。これにより、データベースに保存されているパスワードをそのまま使うことができます。

eccube.yaml
~~~略~~~
    # EC-CUBE parameter
    eccube_database_url: '%env(DATABASE_URL)%'
    eccube_mailer_url: '%env(MAILER_URL)%'
    eccube_admin_route: '%env(ECCUBE_ADMIN_ROUTE)%'
    eccube_user_data_route: '%env(ECCUBE_USER_DATA_ROUTE)%'
    eccube_admin_allow_hosts: '%env(json:ECCUBE_ADMIN_ALLOW_HOSTS)%'
    eccube_admin_deny_hosts: '%env(json:ECCUBE_ADMIN_DENY_HOSTS)%'
    eccube_force_ssl: '%env(bool:ECCUBE_FORCE_SSL)%'
    eccube.theme: '%env(ECCUBE_TEMPLATE_CODE)%'
    eccube_theme_code: '%eccube.theme%'
    eccube_auth_magic: '%env(ECCUBE_AUTH_MAGIC)%'
    eccube_auth_type: PLAIN
    eccube_password_hash_algos: SHA256
    eccube_theme_app_dir: '%kernel.project_dir%/app/template'
~~~略~~~
eccube_auth_type: HMAC

HMACは「Hash-based Message Authentication Code」で、認証情報が暗号化ハッシュ関数を使用して送信される。セキュリティリスクが低い。

eccube_auth_type: PLAIN

認証情報が暗号化されず、プレーンテキストで送信される。管理はしやすいがセキュリティリスクが高く、実働での利用は推奨されない。

PLAINに変更すると、他のユーザーや一般会員も含めて通常のパスワードではログインができなくなります。

データベースから直接パスワードを変更

phpMyAdmin等を用いてデータベースに接続し、dtb_memberテーブルからログインしたいユーザーを探します。
ユーザー毎に暗号化されたパスワードが保存されており、一時的に適当なパスワード(8~32字)に変更します。(下の例では「password」。)

「dtb_member」テーブル(パスワード変更前)
「dtb_member」テーブル(パスワード変更後)

ログインIDが分からない場合は、このテーブルで各ユーザーのログインID(login_id)も確認できます。

元のパスワード(暗号化されたパスワード)では、文字数が長すぎる等の理由でログインできない場合があります。(筆者はログインできませんでした。)

キャッシュをクリア(必要に応じて対応)

キャッシュが残っていると、ログインIDとパスワードが正しくてもログインできない場合がありました(筆者経験談)。
うまくいかない場合は、ファイルやテーブルを変更したタイミングでキャッシュをクリアしておくと上手くいくケースがあります。

サーバーにSSH接続して、以下コマンドを実行するとキャッシュがクリアになります。

bin/console cache:clear --no-warmup
SSH接続(Xserver)の方法についてはこちらの記事にて解説しています↓

管理画面にログインし、パスワードを再設定

変更したパスワード(本記事の場合「password」)で管理画面にログインします。

ログイン後は、再びapp/config/eccube/packages/eccube.yamlを開き、eccube_auth_typeの値をPLAINからHMACに変更します。その後すぐに「設定」→「システム設定」→「メンバー管理」からパスワードを再設定します。(これを忘れてログアウトすると、またログインできなくなります。)再設定するパスワードは今後ログインするときに通常利用するものなので、第三者に悟られない強固なパスワードにしてください。

以上が、パスワードを忘れてログインできなくなった際の対応です。

メンテナンスモードの設定(必要に応じて対応)

本記事の対処法では、パスワードの暗号化を無効する処理を行う関係上、一時的とはいえセキュリティレベルが下がり、その間は通常のパスワードでログインすることができなくなります。(一般ユーザーも同じ。)本番環境では少々危険な対応となるため、事前にメンテナンスモードにしておくと安心です。

メンテナンスモードの設定は通常管理画面から行いますが、そもそも管理画面に入れない場合は、.maintenanceという名前のファイル(中身は空でOK)をEC-CUBEディレクトリ直下に保存することで設定できます。

管理画面でのメンテナンス設定
.maintenanceファイルをアップすることでも
メンテナンスを有効化できる

作業が終了したら、このファイルを削除してメンテナンスを無効化するのを忘れないように。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次