Перейти к контенту

Чтение email с внешней базы


Рекомендуемые сообщения

Есть внешняя база. В поле email хранится email адрес пользователя.

Что необходимо добавить в sources/loginauth/external/auth.php чтобы при первой авторизации не нужно было вписывать email адрес?

Ответьте пожалуйста, очень нужно. Всем спасибо заранее.

Ссылка на комментарий
Поделиться на других сайтах

т.е. при регистрации пользователи вводит имя и автоматом ему в анкету вставляется емаил с другой базы?

 

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

Ссылка на комментарий
Поделиться на других сайтах

как сделать чтобы IPB брала также и email адрес с моей базы и автоматом вписывала в свою, ведь только при первом посещении в БД появляется строка в таблице members с email'ом вида login@timestamp

При авторизации IPB берет только логин и пасс с моей базы, а нужно чтобы брал также и сдруго поля, с поля "email" в моей базе.

 

Как это реализовать?

можно сделать за счет аякса

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

Ссылка на комментарий
Поделиться на других сайтах

как сделать чтобы IPB брала также и email адрес с моей базы и автоматом вписывала в свою, ведь только при первом посещении в БД появляется строка в таблице members с email'ом вида login@timestamp

При авторизации IPB берет только логин и пасс с моей базы, а нужно чтобы брал также и сдруго поля, с поля "email" в моей базе.

 

Как это реализовать?

можно сделать за счет аякса

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

 

я не так понял, аякс тут не нужен

Ссылка на комментарий
Поделиться на других сайтах

Предыдущее предупреждение так и не дало вам повода прочитать правила? Не нужно относиться к предупреждениям как к угнетению вас мной, однако и забывать о правилах не стоит.

 

Честно говоря, нет желания отвечать вам, учитывая что в предыдущей теме вы не опубликовали решение. Внешняя авторизация не настолько широко используется, чтобы можно было с ходу дать ответ.

 

Насколько я понял после поверхностного обзора файлов для внешней авторизации, для этого нужно, чтобы в функцию _create_local_member поступал e-mail из внешней базы. Туда он должен попадать из параметров функции create_local_member, которая вызывается в том числе в следующем фрагменте модуля внешней авторизации:

			if ( $this->allow_create )
		{
			$this->create_local_member( $username, $password );
		}
		else
		{
			$this->return_code = 'NO_USER';
			return;
		}

Исправить это можно, скорее всего, таким образом:

				$this->create_local_member( $username, $password, $remote_member['имя_поля_с_email'] );

 

Для тех кто видит, есть ещё тема с багами авторизации.

Ссылка на комментарий
Поделиться на других сайтах

Честно говоря, нет желания отвечать вам, учитывая что в предыдущей теме вы не опубликовали решение.

Я уже опубликовал решение в предыдущей теме.

Внешняя авторизация не настолько широко используется, чтобы можно было с ходу дать ответ.

Извините что столько сообщений оставил. Просто видел, что в другие темы поступает столько ответов, а в эту - нет.

Спасибо Вам большое за ответ, проверил, всё работает хорошо

Ссылка на комментарий
Поделиться на других сайтах

Просто видел, что в другие темы поступает столько ответов, а в эту - нет.

Я человек непостоянный, а ответы там в основном такие, которые можно сказать по опыту, а здесь нужно залезать в файлы и вспоминать.

 

:D

Ссылка на комментарий
Поделиться на других сайтах

  • 8 месяцев спустя...

Здравствуйте, помогите пожалуйста.

 

Проблема заключается в следующем:

Нужно авторизировать IPB3 через базу битрикса (в принципе проблемы 7 версией битрикса не замечено)

На текущий момент ясно что "проблема" в формировании хеша, если взять к примеру 7 версию битикса то хеш там состоял из 32 символов... а в восьмерке из 40, ну судя по всему разработчики изменили метод формирования, и следовательно теперь чет дописывается к этим 32 символам.

 

Причем если например взять и просто вставить вот такую связку из семерки в базу восьмерки:

bitrix3 e10adc3949ba59abbe56e057f20f883e (собственно логин и пароль в хеше 123456)

Так вот если это вставить в таблицу b_user то IPB3/2 с легкостью авторизируются...

 

А в восьмерке уже 40 символьный хеш.

bitrix5 VQEwJrvB9e51341c235c5590a302edbedc67e9f9 (соответственно логин и опять же пароль в хеше 123456)

Собстно уже IPB скажет что нифига не найден такой пользователь.

 

Так вот вопрос к знатокам - ... чего сделать то чтобы он брал только 32 символа из значения а не все?

 

В битриксе вот что нашел

if(strlen($arUser["PASSWORD"]) > 32)

{

$salt = substr($arUser["PASSWORD"], 0, strlen($arUser["PASSWORD"]) - 32);

$db_password = substr($arUser["PASSWORD"], -32);

}

else

{

$salt = "";

$db_password = $arUser["PASSWORD"];

}

 

if($arParams["PASSWORD_ORIGINAL"] == "Y")

$user_password = md5($salt.$arParams["PASSWORD"]);

else

$user_password = $arParams["PASSWORD"];

 

 

Тоесть тут как я понимаю если больше 32 то отсекается остальное...

 

Как сделать чтобы отсекалось и в IPB3?

Очень нужно, заранее спасибо.

Ссылка на комментарий
Поделиться на других сайтах

Эмм..

 

В IPB 2 и 3 пароли хранятся как md5(md5($salt).md5($pass))

В Битриксе, судя по приведенному коду, как md5($salt.$pass).

 

Разница большая.

 

Далее, насколько я понимаю, до 32 символов принудительно укорачивается сам пароль, а не его хеш. От хеша ничего отсекать не надо определению.

 

Вообще, наверняка в IPB 3.0 есть такая же возможность внешней авторизации, как и в 2.3. Создается отдельный файл с настройками, вручную прописываются необходимые функции и т.д. Потом в админке включается как "основной метод авторизации".

 

Всё непросто)

Изменено пользователем WildRAID
Ссылка на комментарий
Поделиться на других сайтах

WildRAID, спасибо за ответ.

Посмотри пожалуйста, вот файлик от битры... может ты поймешь. :D

http://letitbit.net/download/3220.3425f055...5/user.rar.html

 

Пробывал вот так не хочет

 

$check_pass = $password;

$salt = substr($remote_member[ REMOTE_FIELD_PASS ], 0, strlen($remote_member[ REMOTE_FIELD_PASS ]) - 32);

 

switch( REMOTE_PASSWORD_SCHEME )

{

case 'md5':

$check_pass = md5($salt.$password);

break;

}

 

if ( $check_pass == $remote_member[ REMOTE_FIELD_PASS ] )

{

return true;

}

else

{

return false;

}

}

 

И если вот так тоже не хочет

$salt = substr($remote_member[ REMOTE_FIELD_PASS ], 32, 40);

 

И так md5(md5($salt).md5($pass)) тоже ;)

Ссылка на комментарий
Поделиться на других сайтах

Нужно авторизировать IPB3 через базу битрикса

Не советую, через API надежнее.

Битрикс только на моей памяти, менял форматы хранение кэша паролей и два раза менял формирование соли. ИМХО, но сконвертировать пользователей базы во внешнию базу с сохранением пароля стало нереально.

Проще запрашивать кэш через функции битрикса (GetPasswordHash). Напрямую в базу лезть не советую, после очередного обновления ...

Изменено пользователем P(A)
Ссылка на комментарий
Поделиться на других сайтах

  • 1 год спустя...
Да кто подскажет как в IPB 3 сделать чтобы при первой авторизации не нужно было вписывать подтверждать email адрес?
Ссылка на комментарий
Поделиться на других сайтах

  • 3 года спустя...

Всем привет! С IP Board столкнулся впервые. И так, хотел связать авторизацию с Simpla, тут используется хеширование паролей md5($this->salt.$password.md5($password));

 

в auth.php добавил

case 'salt':        
        $salt = '23562346263125634163462356341634';
        $check_pass = md5($salt.$password.md5($password));
break;

и в acp.php 

array(
	'title'	=> 'Способ хеширования пароля в удаленной базе',
	'description' => "Если вы не нашли метод нужный вам, необходимо будет изменить реализацию хеширования пароля на свою в auth.php" ,
	'key' => 'REMOTE_PASSWORD_SCHEME',
	'type'=> 'select',
	'options'=> array( array( 'md5', 'MD5' ), array( 'salt', 'SALT' ), array( 'sha1', 'SHA1' ), array( 'none', 'Открытый текст' ) )

В админке в "Внешняя база данных" выбрал способ хеширования SALT, но при авторизации все равно пишет неверный логин или пароль. Что неправильно сделал не могу понять. Подскажите пожалуйста. Спасибо!

Ссылка на комментарий
Поделиться на других сайтах

А почему соль задана конкретная? Разве она не рандомная для каждого пользователя, и разве ее не нужно читать из удаленной базы?

Ссылка на комментарий
Поделиться на других сайтах

А внешняя авторизация поставлена первой в списке модулей?

Ну и после

$check_pass = md5($salt.$password.md5($password));
Добавить
echo $check_pass; exit();
и сверить самому с паролем в базе.
Ссылка на комментарий
Поделиться на других сайтах

А внешняя авторизация поставлена первой в списке модулей?

Ну и после

$check_pass = md5($salt.$password.md5($password));
Добавить
echo $check_pass; exit();
и сверить самому с паролем в базе.

 

Первой, и даже выключал стандартную авторизацию 

echo $check_pass;

ничего не выводит(

Ссылка на комментарий
Поделиться на других сайтах

ничего не выводит - белый экран? или какая-то часть форума?

(ну как так эхо не выводит? значит не доходит до туда исполнение)


echo $check_pass;

print "cp=".$check_pass;

православно

Ссылка на комментарий
Поделиться на других сайтах

ничего не выводит - белый экран? или какая-то часть форума?

(ну как так эхо не выводит? значит не доходит до туда исполнение)

echo $check_pass;

print "cp=".$check_pass;

православно

 

Точно не доходит до пароля( Попробовал в настройках изменить название поля email на неправильное, выдал ошибку что нет такого поля. Изменил на неправильное поле с паролем, тут даже не ругнулся на существование поля.

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.