Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
.htpasswd синхронизировать на разных серверах
Новая тема
Ответить
цитата
19/06/11 в 08:45
Vyacheslav
Часть сайта работает на одном сервере A, другая, в силу скриптов и свободнго места, может работать только на другом сервере B. На сервере А контент закрыт связкой .htaccess + .htpasswd, мемберов обновляет скрипт и всё содержимое сайта B должно подчиняться этому же правилу.
Как организовать так, чтоб сёрфер не замечал того, что сайт разбит на разные сервера, авторизировался один раз и ходил по сайту, независимо от того, с какого сервера тянется контент?
цитата
19/06/11 в 11:36
bari
вариант:
на домене А ставим скрипт, гребущий .htpasswd и пересылающий его на домен Б. его запуск - либо по крону, либо(идеал) как-то прикрутить к админке. ну а на домене Б скрипт-приемник.
что-то вроде:
Код:
$ht = base64_encode(file_get_contents('.htpasswd');
$options = array(
CURLOPT_URL => 'адрес скрипта-приемника',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => array(
'action' => 'htpasswd',
'pass' =>'thispasswordistoosimple',
'htpasswd' => $ht,
)
);
$ch = curl_init();
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
curl_close($ch);
приемник:
Код:
if ($_POST['action'] == 'htpasswd' && $_POST['pass'] == 'thispasswordistoosimple') {
$ht = base64_decode(trim($_POST['htpasswd']));
file_put_contents('.htpasswd', $ht);
echo "written";
exit();
};
цитата
19/06/11 в 11:42
Vyacheslav
А с какой скоростью эта синхронизация произойдёт?
Юзеру надо будет переавторизироваться при переходе с одного сервера на другой?
ПС Я хотел домен сервера B реализовать как субдомен, чтоб максимально приблизить оба сервера к одному и тому же сайту.
цитата
19/06/11 в 12:36
bari
Vyacheslav писал:
А с какой скоростью эта синхронизация произойдёт?
мгновенно, если будет как вставка в админку
Vyacheslav писал:
Юзеру надо будет переавторизироваться при переходе с одного сервера на другой? ПС Я хотел домен сервера B реализовать как субдомен, чтоб максимально приблизить оба сервера к одному и тому же сайту.
надо будет, браузер на субдомен логин/пароль не передаст, только внутри домена
тут надо какой-то другой вариант авторизации курить, либо на домене Б убирать ее вообще, а защиту контента делать по рефереру или еще как-то.
распиши что на А, а что на Б лежит)
цитата
19/06/11 в 13:19
begemot
единственный нормальный способ - это чтобы тот скрипт, который меняет пароли, сам всё и синхронизировал
цитата
19/06/11 в 21:46
Dr.Syshalt
bari писал:
мгновенно, если будет как вставка в админку
Согласно закону Мерфи, если какая-то неприятность может произойти - она обязательно произойдет, и надеяться на то, что всегда файлы на разных серверах будут синхронны, в любое время суток - не приходится. Слишком ненадежно.
Я решал подобную проблему написанием кастомной аутентификации через открытый ключ на серверах и приватный - на странице логина, юзеру выдается подписанная кука, с которой его пропускает сервер. Плюс ко всему - проверка и доступ к базе осуществляются только в момент авторизации, дальше кастомный апачевский модуль просто расшифровывает у каждого запроса в мемберку куку (декрипт по public key - процедура дешевая), смотрит, валиден ли еще тикет, подходит ли он для этого сайта (т.е. можно юзера хоть на 10 сайтов залогинить) и, если что-то не так - направляет юзера на страницу логина. Это, пожалуй, лучший способ - какая-то синхронизация .htpasswd сбойнет время от времени там или сям.
цитата
19/06/11 в 23:23
bari
Dr.Syshalt писал:
открытый ключ на серверах и приватный - на странице логина, юзеру выдается подписанная кука, с которой его пропускает сервер. Плюс ко всему - проверка и доступ к базе осуществляются только в момент авторизации, дальше кастомный апачевский модуль просто расшифровывает у каждого запроса в мемберку куку (декрипт по public key - процедура дешевая), смотрит, валиден ли еще тикет, подходит ли он для этого сайта (т.е. можно юзера хоть на 10 сайтов залогинить) и, если что-то не так - направляет юзера на страницу логина. Это, пожалуй, лучший способ - какая-то синхронизация .htpasswd сбойнет время от времени там или сям.
+1, добротный, дешевый и надежный способ
Мерфи действительно будет в ноле практически
Новая тема
Ответить
Эта страница в полной версии