を使用して、MySQL 5.1 データベースからフォルダーのユーザーを認証したいと考えていますAuthType Basic
。
パスワードは平文で保存されます (実際にはパスワードではないため、問題ありません)。ただし、apache のパスワード形式は、こちらで説明されているよう
に、Linux システムでは SHA1、MD5 のみを許可します。
SQL クエリで正しい形式を生成するにはどうすればよいですか? Apache 形式は長さ 20 のバイナリ形式のようですが、mysqlSHA1
関数は長さ 40 を返します。
私のSQLクエリは次のようなものです:
SELECT CONCAT('{SHA}', BASE64_ENCODE(SHA1(access_key))) FROM user_access_keys INNER JOIN users ON user_access_keys.user_id = users.id WHERE name = %s
wherebase64_encode
はストアド関数です (Mysql 5.1 にはまだありTO_BASE64
ません)。このクエリは、apache が使用するフォーマットとは異なる 61 バイトの BLOB を返します。どうすれば同じフォーマットを生成できますか?
これについても他の方法を提案できます。ポイントは、プレーン テキストをパスワードとして使用して、MySQL5.1 データベースからユーザーを認証したいということです。