4

メインのWordpressサイト以外のいくつかのWebページでパスワード保護を行う必要があります。ユーザーは、Wordpressですでに持っているユーザー名とパスワードを使用することを好みます。

明らかな解決策は、Mysqlベースの認証にApaceモジュールを使用することであるように思われます:mod-auth-mysql。

ただし、Wordpressはmod-auth-mysqlでサポートされていないPhpassパスワード暗号化を使用しているため、これは不可能のようです。

この制限を回避する方法はありますか?

4

1 に答える 1

9

パッチを適用したバージョンのmod-auth-mysqlを使用して、Phpass暗号化パスワードを受け入れることができます。これをubuntuとdebianで行う方法についての説明を含めます。

生のパッチファイルはここから入手できます

PhpassをサポートするためにUbuntu/DebianでMod-auth-mysqlにパッチを適用する

これらの手順はUbuntu10.4、12.04、14.04.5でテストされていますが、最小限の変更で他の多くのDebianベースのプラットフォームで動作するはずです。

パッチを適用した.debパッケージをビルドするための作業ディレクトリを作成します

mkdir mod-auth-mysql-phpass
cd mod-auth-mysql-phpass

パッケージとパッケージソースの構築に必要な依存関係を取得します。

sudo apt-get build-dep mod-auth-mysql fakeroot
apt-get source mod-auth-mysql

新しく作成したソースフォルダに移動します。

cd mod-auth-mysql-4.3.9

Debianツールを使用して、適切にdebian形式のパッチ(.dpatch)を作成します。まず、パッチの現在のリストを確認します。

cat debian/patches/00list

最後の公式パッチはリストの最後にあります。以下のdpatch-edit-patchコマンドの最後の引数として、最後のパッチの名前を使用します。また、新しいphpassパッチの名前として1つ大きい番号を選択します。私の場合、リストの最後のパッチは017-doc_persistent_conn.dpatchであり、phpassパッチの名前は018-phpassです。

dpatch-edit-patch patch 018-phpass 017-doc_persistent_conn.dpatch

dpatch-edit-patchは、カスタムdebian形式のパッチをビルドするために使用する特別なフォルダー内で新しいシェルを開始します。

生のパッチをダウンロードする

wget https://pelam.fi/published_sources/mod-auth-mysql-phpass/patch.diff

生のパッチを適用して削除します。

patch < patch.diff
rm patch.diff

カスタムパッチを生成できることをdpatch-edit-patchに伝えます。

exit

あなたの新しい適切にDebianフォーマットされたパッチを不思議に思う。セキュリティに関心がある場合は、この非公式パッチによって行われた変更も確認する必要があります:)

cat debian/patches/018-phpass.dpatch 

.debパッケージのビルド時に適用されるパッチのリストに新しいパッチを追加します。

echo 018-phpass.dpatch >> debian/patches/00list 

パッチを適用したパッケージをビルドする

dpkg-buildpackage -b -uc

これで、カスタムビルドされた.debパッケージをインストールできます(ビルドされたパッケージ名はシステムによって異なる場合があります)。

sudo dpkg --install ../libapache2-mod-auth-mysql_4.3.9-13.1ubuntu3_amd64.deb

Phpassを使用してWordpressに対して認証するようにMod-auth-mysqlを構成する

mod-auth-mysqlを有効にします。

sudo a2enmod auth_mysql

新しいモジュールを有効にするためにapacheを再起動します。

sudo service apache2 restart

ドキュメント(現在はPhpassを含む)は、たとえばで表示できます。少ないコマンド

zless /usr/share/doc/libapache2-mod-auth-mysql/DIRECTIVES.gz

Wordpress管理者のみにアクセスを許可するサンプルの.htaccessファイルを次に示します。

AuthType Basic
AuthName "Give Wordpress Administrator username and password"

Auth_MySQL_User YOUR_MYSQL_USER_HERE
Auth_MySQL_Password YOUR_MYSQL_PASSWORD_HERE
Auth_MySQL_Host YOUR_MYSQL_SERVER_HERE

AuthBasicAuthoritative Off
# I don't know a better way to disable the default password file authentication
AuthUserFile /dev/null
Auth_MySQL on
Auth_MySQL_DB YOUR_WORDPRESS_MYSQL_SCHEMA_NAME_HERE
Auth_MySQL_Password_Table wp_users
Auth_MySQL_Username_Field wp_users.user_login
Auth_MySQL_Password_Field wp_users.user_pass
Auth_MySQL_Encryption_Types PHPass PHP_MD5

Auth_MySQL_Group_Table "wp_users, wp_usermeta"
Auth_MySQL_Group_Clause "AND wp_users.ID = wp_usermeta.user_id AND wp_usermeta.meta_key='wp-capabilities' and m.meta_value like '%s:13:\"administrator\"%'"
Auth_MySQL_Persistent On
Auth_MySQL_Authoritative Off
Auth_MySQL_CharacterSet utf8

Require valid-user
Order allow,deny
Allow from all
于 2012-09-22T12:43:52.993 に答える