Здравствуйте! У меня пользователи авторизуются в АД, списки пользователей соотв домееных групп забираются из AD скриптом и хранятся в текстовых файлах, по которым и идёт разделение доступа по allow_id. В этих файлах логины в виде DOMAIN+user. Проблема в том, что разные браузеры передают связку домен+логин по-разному, пример - IE домен в верхнем, а логин в нижнем регистрах, а Opera всё в нижнем регистре. Для сквида без проблем, тк у него в acl можно указать ключ -i, то есть игнорировать регистр. А для режика приходится дублировать логин 2 раза с доменом в верхнем и нижнем регистрах. Нельзя как-то включить регистронезависимость?
#define CASE_INDEPENDENT
в vars.h
ничего не меняет
Регистр логинов
Проблема ясна, для её решения, хорошо бы от Вас получить дополнительный материал.
1. Скачайте и откомпилите http://www.rejik.ru/download/logger.c
2. Подключите его до режика:
a. Сделайте файлик r.sh следующего содержания:
/usr/local/rejik3/logger | /usr/local/rejik3/redirector
b. Пропишите r.sh в качестве редиректора в сквиде.
После этого, в /usr/local/rejik3/elog будет сыпаться все то, что получает режик от сквида.
Используйте различные браузеры, что бы все варианты отразились в elog.
Если возможно, то с разных ip или логинов.
Либо разграничьте по времени, и распишите, что тогда-то ходили одним браузером, а после другим. Это мне нужно, что бы отследить все возможные варианты, не перебирая каждую строку вручную.
Получившийся elog пришлите мне по почте.
1. Скачайте и откомпилите http://www.rejik.ru/download/logger.c
2. Подключите его до режика:
a. Сделайте файлик r.sh следующего содержания:
/usr/local/rejik3/logger | /usr/local/rejik3/redirector
b. Пропишите r.sh в качестве редиректора в сквиде.
После этого, в /usr/local/rejik3/elog будет сыпаться все то, что получает режик от сквида.
Используйте различные браузеры, что бы все варианты отразились в elog.
Если возможно, то с разных ip или логинов.
Либо разграничьте по времени, и распишите, что тогда-то ходили одним браузером, а после другим. Это мне нужно, что бы отследить все возможные варианты, не перебирая каждую строку вручную.
Получившийся elog пришлите мне по почте.
Последний раз редактировалось Slava Ср апр 12, 2006 15:24, всего редактировалось 2 раза.
Хорошо. Сделал редиректор через /usr/local/rejik3/logger | /usr/local/rejik3/redirector. Также в домене SWITCH был заведен пользователь TestUSER(специально с разным регистром). Для тестирования использовалось: Windows - IE6, Opera 8, Firefox 1.5, FlashGet; Linux: Konqueror 3.5.1, Firefox 1.5, Opera 8. Авторизация пользователя в этих программах в разных регистрах привела следующим результатам: IE, Firefox(в обеих ОС) всегда приводят результат к виду SWITCH+testuser(в не зависимости от того, в каком регистре вводить авторизационную информацию: switch+TESTUSER, SWITCH+TestUSER и тп), а Konqueror, Opera(в обеих ОС) и FlashGet всегда передают switch+testuser(также в не зависимости от регистра ввода). Вот примеры из логов:
Opera:
http://xml.opera.com/update/ 10.37.12.222/- switch+testuser GET
IE:
http://stb.msn.com/i/89/8561D4DA8734DA1 ... EEFFC5.jpg 10.37.12.222/- SWITCH+testuser GET
FlashGet:
http://download.microsoft.com/download/ ... _adsr2.iso 10.37.12.222/- switch+testuser GET
Для других браузеров аналогично.
То есть варианта передачи связки логин\пароль в зависимости от браузера всего 2: DOMAIN+login и domain+user
Пользователи у меня в файлах, формат:
SWITCH+an
SWITCH+dm
...............
Сейчас приходится их дублировать, добавляя:
switch+an
switch+dm
................
Да, и если логин в смешанном регистре, то надо приводить его к нижнему(например, для TestUSER надо делать записи SWITCH+testuser и switch+testuser), только тогда rejik правильно их отрабатывает.
Opera:
http://xml.opera.com/update/ 10.37.12.222/- switch+testuser GET
IE:
http://stb.msn.com/i/89/8561D4DA8734DA1 ... EEFFC5.jpg 10.37.12.222/- SWITCH+testuser GET
FlashGet:
http://download.microsoft.com/download/ ... _adsr2.iso 10.37.12.222/- switch+testuser GET
Для других браузеров аналогично.
То есть варианта передачи связки логин\пароль в зависимости от браузера всего 2: DOMAIN+login и domain+user
Пользователи у меня в файлах, формат:
SWITCH+an
SWITCH+dm
...............
Сейчас приходится их дублировать, добавляя:
switch+an
switch+dm
................
Да, и если логин в смешанном регистре, то надо приводить его к нижнему(например, для TestUSER надо делать записи SWITCH+testuser и switch+testuser), только тогда rejik правильно их отрабатывает.
Ясно что делать, правда немного странно видеть "+" между доменом и логином.
в elog именно "+"?, а не "/" и не юникоде символ?
Да, нужна в принципе информация о домене или только логин, что бы понять, пускать или нет? (данная информация нужна мне для 4-го режика).
В вариантах DOMAIN+login и domain+user:login и user одно и тоже или разное?
в elog именно "+"?, а не "/" и не юникоде символ?
Да, нужна в принципе информация о домене или только логин, что бы понять, пускать или нет? (данная информация нужна мне для 4-го режика).
В вариантах DOMAIN+login и domain+user:login и user одно и тоже или разное?
Хорошо бы получить от Вас файлик elog, что бы я смог потестировать на нем изменения.
Пока же могу предложить отредактировать redirector.c
/***********************
****** Work cycle *****/
// Get input string
while (fgets(str,ML_URL,stdin)!=NULL)
{
// convert input string to input structure->(url,who,ident,method)
if(parse_input(str))
{
// If error in convert
printf ("%s",str);
fflush(stdout);
sprintf(etmp,"Error convert input string to input structure str=%s",str);
err_mes(etmp);
continue;
};
// Это то, что надо добавить
#ifdef CASE_INDEPENDENT
for (z=0;z<strlen(input_ident);z++)
input_ident[z]=tolower(input_ident[z]);
#endif
Пока же могу предложить отредактировать redirector.c
/***********************
****** Work cycle *****/
// Get input string
while (fgets(str,ML_URL,stdin)!=NULL)
{
// convert input string to input structure->(url,who,ident,method)
if(parse_input(str))
{
// If error in convert
printf ("%s",str);
fflush(stdout);
sprintf(etmp,"Error convert input string to input structure str=%s",str);
err_mes(etmp);
continue;
};
// Это то, что надо добавить
#ifdef CASE_INDEPENDENT
for (z=0;z<strlen(input_ident);z++)
input_ident[z]=tolower(input_ident[z]);
#endif
Именно "+" - это такой разделитель у меня(настраивается в sambe)Slava писал(а):Ясно что делать, правда немного странно видеть "+" между доменом и логином.
в elog именно "+"?, а не "/" и не юникоде символ?
В принципе надо и домен учитывать и логин. В сложной сети на одном прокси могут авторизовываться пользователи из разных доменов, между которыми настроены доверительные отношения. То есть могут авторизовываться два польователя: DOMAIN1+vasya и DOMAIN2+vasya, без учёта домена это один человек, а на деле совершенно разные логиныSlava писал(а): Да, нужна в принципе информация о домене или только логин, что бы понять, пускать или нет? (данная информация нужна мне для 4-го режика).
Да, это одно и тоже. Я приводил пример: пользователь в домене TestUSER, для него будет передаваться пара либо SWITCH+testuser, либо switch+testuser.Slava писал(а): В вариантах DOMAIN+login и domain+user:login и user одно и тоже или разное?