BASIC認証にmysqlを使ってみた(サンプル)

元ネタはココです。
モジュールが入ってなかった。

# yum -y install mod_auth_mysql
# service httpd restart

データベースとテーブルは、phpmyadminで適当に設定してみた。
どんなSQL(Create Table)かは、テーブルのエクスポート画面でエクスポート方法詳細出力を出力をテキストで表示するにして実行ボタンを押すと判る。

CREATE TABLE IF NOT EXISTS `member_info` (
`member_id` varchar(64) COLLATE utf8_bin NOT NULL,
`member_password` varchar(40) COLLATE utf8_bin NOT NULL COMMENT ‘sha1’,
PRIMARY KEY (`member_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;

レコードに素でパスワードを入れるのは気味が悪くなるのでSHA1でデコードしておく。

INSERT INTO `member_info`( `member_id`, `member_password`) VALUES (‘abcdef’,SHA1(‘123456’))

サンプル画面のディレクトリィに.htaccessを作る

<Files ~ “^\.(htaccess|htpasswd)$”>
deny from all
</Files>

# MySQLによる認証を有効に
AuthMySQLEnable On

# mysqldへの接続Socket
AuthMySQLSocket /var/lib/mysql/mysql.sock

# mysqldの場所
AuthMySQLHost localhost

# mysqldへの接続ユーザ
AuthMySQLUser  <接続ユーザ>

# mysqldへの接続パスワード
AuthMySQLPassword  <接続パスワード>

# 認証を行う情報が格納されたデータベース名
AuthMySQLDB  <データベース名>

# 認証を行う情報が格納されたテーブル名
AuthMySQLUserTable <テーブル名>

# 認証を行うユーザ名が格納されているカラム名
AuthMySQLNameField <IDのカラム名>

# 認証を行うパスワードが格納されているカラム名
AuthMySQLPasswordField <パスワードのカラム名>

# 認証を行うパスワードが格納されているカラムの暗号方式
AuthMySQLPwEncryption sha1

# パスワード無しのユーザからの接続を許可するかどうか
AuthMySQLNoPasswd Off

# 以下はBasic認証を行う場合のお約束事らしい。メッセージに日本語使うと文字化けするからやめといた方がいい。
AuthGroupFile /dev/null
AuthName “Enter your ID and password”
AuthType Basic
require valid-user

order deny,allow

後はサンプル画面を作ってアクセスしてみる。
多分、何か失敗している。apacheのエラーログを見ると
データベースやテーブルが無いとか色々出るだろう(多分.htaccessの設定ミス)
ついついaccessログも見てしまうが・・・botウゼーになってしまうので見ないほうがマシだ。
Safariユーザが意外に多いな・・・って、iPhone OS 5?画像多いのに。そうか画像を多くすればいいんだな。
もし、ベーシック認証の画面がポップしないでサンプルが開くなら、.htaccess自体を読んでいない証拠だ。
初期設定のhttpd.confで/var/www/html設定箇所でAllowOverride ALLに直すか
サンプルを作ったディレクトリィ用の設定を/etc/httpd/conf.dに追加、
<test.conf>

<Directory /var/www/sample/>
Order Deny,Allow
Deny from All Allow from 127.0.0.1
Allow from ::1
# テスト用だからLAN内だけアクセス化
Allow from 192.168.1
# .htaccessを読むようにする
AllowOverride ALL
</Directory>

そしてapacheに設定を読み込ませて

# service httpd reload

みるしかないだろう。
ああ、勿論ここで作ったサンプルは外から見れないようになっている。




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA