2013-05-19 2 views
0

Я пытаюсь перенести пользователей из базы данных Joomla на пользовательский, используя таблицы asp.net по умолчанию и поставщиков. Теоретически я могу изменить хэш-тип от значения по умолчанию (SHA) до MD5, изменив web.config, однако при регистрации в нем сообщается неверный пароль (или имя пользователя, но я сомневаюсь, что это так). Изучая таблицу aspnet_Membership и таблицу Joomla_users, я вижу, что оба пользователя имеют одинаковые значения для пароля и солей для каждого пользователя (Joomla 1.7 фактически сохраняет его как пароль: соль, но это легко разбить на два поля). Оба, как представляется, находятся в формате base64, и добавление пользователя через контроль по умолчанию в ASP управляет результатами аналогичной пары полей для нового пользователя (хотя соль рандомизирована, я думаю, поэтому я не могу сравнивать с тем же самым известным паролем).Изменение SqlMembershipProvider для использования паролей MD5, Joomla

Вот выдержка из моего web.config:

<system.web> 
    <machineKey validation="MD5"/> 
    ... 
<membership hashAlgorithmType="MD5"> 
    <providers> 
    <clear /> 
    <add name="AspNetSqlMembershipProvider" 
     type="System.Web.Security.SqlMembershipProvider" 
     connectionStringName="UserAuth" 
     enablePasswordRetrieval="false" 
     enablePasswordReset="true" 
     requiresQuestionAndAnswer="false" 
     requiresUniqueEmail="false" 
     maxInvalidPasswordAttempts="5" 
     minRequiredPasswordLength="6" 
     minRequiredNonalphanumericCharacters="0" 
     passwordAttemptWindow="10" 
     passwordFormat="Hashed" 
     applicationName="/" /> 
    </providers> 
</membership> 
</system.web> 

Одна вещь, я не уверен, что на это, является ли это md5, md5 или MD5 (я видел, как последний в образцах кода, а погуглить). Тем не менее, я могу написать вздор вместо этого, и приложение не похоже на веки.

Я не особо хочу писать пользовательский поставщик членства, если нет другого пути.

Вот некоторые PHP, который сравнивает Joomla хэшируются пароль с переданным в качестве параметра для этой функции:

   $user_id = mysql_result($result, 0, 'id'); 
       $db_password = mysql_result($result, 0, 'password'); 
       $joomla = &New JConfig; 
       list($md5pass, $saltpass) = split(":", $db_password); 
       $md5_password = md5($user_password.$saltpass); 
       if (strcmp($md5_password, $suppliedpass) == 0) 
       { 
        return $user_id; 
       } 

Либо версия ASP игнорирует мою просьбу md5, или каким-то образом это хранить его каким-то другим способом, или я не говорю, что правильно использовать md5 или ...? Я не хочу, чтобы 4000 пользователей перезагрузили свои пароли, хотя я знаю, что md5 не рекомендуется в эти дни.

ответ

0

Думаю, я сработал. В Joomla, из кода PHP, md5 применяется для передачи + соли. В SqlMembershipProvider.cs применяется к salt + pass.

SqlMembershipProvider.cs был найден через SQLMembershipProvider - source code - возможно, это не истинный источник, но я не вижу причин, почему он должен отличаться от истинного источника в этом конкретном аспекте.

Смежные вопросы