2012-03-18 2 views
2

У меня есть свои имена пользователей и пароли, хранящиеся в mysql db с помощью blowfish encrption. В PHP можно шифровать пароль так:Auth MySQL с blowfish Шифрование

crypt($pwd, _SALT_) 

где $pwd = 'userpwd' и _SALT_ = $2a$07...

Я ищу способ использовать пользовательский стол также в VirtualHost с mod_auth_mysql. Я знаю, что это возможно с помощью md5, используя Auth_MySQL_Encryption_Types PHP_MD5, но я предпочел бы остаться с blowfish.

Как сообщить mysql_auth, чтобы использовать blowfish? И где я могу войти в соль?

EDIT:

Основная проблема здесь состоит в том, что я должен использовать «_» между ключевыми словами в файле ВХост. Так он выглядит:

<Location /webdav> 
AuthType Basic 
AuthName "jst-development" 
AuthUserFile /dev/null 
AuthBasicAuthoritative Off 
Auth_MySQL on 
Auth_MySQL_Authoritative on 
Auth_MySQL_DB user 
Auth_MySQL_User user 
... 

вместо [взяты из http://modauthmysql.sourceforge.net/CONFIGURE]

AuthMySQLDB authdata 
AuthMySQLUserTable user_info 
AuthMySQLGroupField user_group 

остановить апач жалуется на синтаксис. может кто-нибудь сказать мне, почему или скажите мне «_'- синтаксис AuthMySQLSaltField <>

// EDIT 2: Версия: libapache2-мод-Auth-MySQL (4.3.9-13ubuntu1)

// EDIT 3: версии сервера: Apache/2.2.14 (Ubuntu) Точная ошибка при использовании «официальный синтаксиса» без «_»: Неверной команды «AuthMySQLDB», возможно, опечатки или определяются модуль не входит в конфигурация сервера

+0

Поскольку apache жалуется ... Какая точная версия apache у вас есть? И, может быть, какая именно ошибка вы получаете (вставляете)? –

+0

«Неверная команда„AuthMySQLDB“, возможно, опечатка или определяется модуль не входит в конфигурации сервера» версия Сервера: Apache/2.2.14 (Ubuntu) –

ответ

0

использование

AuthMySQLPwEncryption crypt 

http://modauthmysql.sourceforge.net/CONFIGURE

AuthMySQLPwEncryption none | crypt | scrambled | md5 | aes | sha1 
    The encryption type used for the passwords in AuthMySQLPasswordField: 
    none: not encrypted (plain text) 
    crypt: UNIX crypt() encryption 
    scrambled: MySQL PASSWORD encryption 
    md5: MD5 hashing 
    aes: Advanced Encryption Standard (AES) encryption 
    sha1: Secure Hash Algorihm (SHA1) 

    WARNING: When using aes encryption, the password field MUST be a BLOB type 
    (i.e. TINYBLOB). MySQL will strip trailing x'20' characters (blanks), EVEN 
    IF THE COLUMN TYPE IS BINARY! 

AuthMySQLSaltField <> | <string> | mysql_column_name 

    Contains information on the salt field to be used for crypt and aes 
    encryption methods. It can contain one of the following: 
    <>: password itself is the salt field (use with crypt() only) 
    <string>: "string" as the salt field 
    mysql_column_name: the salt is take from the mysql_column_name field in the 
     same row as the password 

    This field is required for aes encryption, optional for crypt encryption. 
    It is ignored for all other encryption types. 
+0

хорошо, дело в том, что апач жалуется о синтаксисе , поэтому мне пришлось использовать (Auth_MySQL on; Auth_MySQL_Authoritative on; ...) [используя '_']. Поэтому AuthMySQLSaltField не работает. Я также попробовал Auth_MySQL_SaltField; Auth_MySQL_Salt_Field, ... –

0

modauthmysql, кажется, не видел каких-либо разработчиков любовь более 7 лет. Моя текущая догадка о вашей проблеме - это некоторые проблемы несовместимости, которые возникают при использовании apache 2.2.

Посмотрев немного вокруг того, как я бы решить ту же проблему, я наткнулся на эту документацию: http://httpd.apache.org/docs/2.2/mod/mod_authn_dbd.html

Это, кажется, чтобы быть в состоянии делать то, что вы хотите, если вы настроить его прямо со всеми его вариантами.

+0

Прошу прощения, но я все еще не могу понять: где я должен сказать (SQL-Statement?), Чтобы зашифровать входящий пароль с помощью blowfish (введите мою соль $ 2 $ ...) –

+0

Извините, я больше вникнул в это на стороне Apache и Mysql. Blowfish - это не гонка. DES и AES или стандартный CRYPT доступны в той или иной форме и, конечно, SHA1 и MD5 хеширование, но blowfish, кажется, не используется этими системами. Я еще не просмотрел его подробно, но, возможно, один из других модулей auth в apache позволит вам указать системный вызов (скрипт), который мог бы сделать трюк для вас? –

+0

Просто интересно, что есть решение с «другим» синтаксисом. Я до сих пор не понял разницу в синтаксисе, если они зависят от версии lib или версии apache2 –

0

Посмотрите на директивы в /usr/share/doc/libapache2-mod-auth-mysql/DIRECTIVES.gz

Путь должен быть специфическими для вашей системы, то один выше для Debian Lenny