Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2009.05.03;
Скачать: [xml.tar.bz2];

Вниз

аутефикация на прокси   Найти похожие ветки 

 
Kav   (2008-01-19 13:01) [0]

Перерыл исходники прокси-серверов, но ни в каком нет примера аутефикации пользователей
есть ли такие исходнки или описание как это сделать


 
DVM ©   (2008-01-19 15:11) [1]

В заголовке запроса должно быть "Proxy-Authorization: Basic " + EncodeBase64(ProxyUserName + ":" + ProxyPassword)


 
Kav   (2008-01-19 16:22) [2]

DVM , у меня есть прокси на него коннектятся пользователи и мне надо им либо дать интерет либо нет
и куда мне это нужно примостить "Proxy-Authorization: Basic " + EncodeBase64(ProxyUserName + ":" + ProxyPassword)


 
DVM ©   (2008-01-19 16:44) [3]


> Kav   (19.01.08 16:22) [2]

Ты делаешь сам прокси или клиентскую программу, которая должна работать через прокси?


 
Kav   (2008-01-19 17:32) [4]

DVM,
Делаю сам прокси :)


 
DVM ©   (2008-01-19 18:09) [5]

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

Если нужен прокси с HTTP Basic авторизацией, то необходимым условием для работы клиента через такой прокси будет особым образом построенный HTTP запрос. В нем будут следующие изменения:

1) Вот обычный запрос безо всяких прокси, направленный непосредственно HTTP серверу:


     FRequest := "GET " + Path + " HTTP/" + HTTPVersion + CRLF +
                 "Accept: */*" + CRLF +
                 "Pragma: no-cache" + CRLF +
                 "Cache-Control: no-cache" + CRLF +
                 "User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Win32)" + CRLF +
                 "Host: " + Host + ":" + inttostr(Port) + CRLF;
                 "Authorization: Basic " + EncodeBase64(UserName + ":" + Password) + CRLF +
                 "Connection: Keep-Alive" + CRLFCRLF;


2) А вот так запрос будет выглядеть если он направляется проки серверу.


     FRequest := "GET http://" + Host + ":" + inttostr(Port) + Path + " HTTP/" + HTTPVersion + CRLF +
                 "Accept: */*" + CRLF +
                 "Pragma: no-cache" + CRLF +
                 "Cache-Control: no-cache" + CRLF +
                 "User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Win32)" + CRLF +
                 "Host: " + Host + ":" + inttostr(Port) + CRLF +
                 "Authorization: Basic " + EncodeBase64(UserName + ":" + Password) + CRLF +
                 "Proxy-Authorization: Basic " + EncodeBase64(ProxyUserName + ":" + ProxyPassword) + CRLF +
                 "Connection: Keep-Alive" + CRLFCRLF;


 
DVM ©   (2008-01-19 18:10) [6]

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


 
Kav   (2008-01-22 10:09) [7]

DVM,
я не очень сильно понимаю работу прокси сервера, я взял
исходник http://www.delphisources.ru/pages/sources/internet/2005_year/alt_http_proxy.html
и хотел его переделать под себя, но не знаю даже с какой стороны к нему подбираться
P.S. сразу скажу в Delphi я хорошо разбираюсь просто не когда не работал с сетью.


 
DiamondShark ©   (2008-01-22 10:33) [8]


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

так пойми. почитай RFC.

А то ты сейчас в ситуации вроде: "Мужики, я не очень умею ездить, куда тут ключ зажигания вставлять?"


 
Slym ©   (2008-01-22 10:42) [9]

код ужасный, писал наверно сиплюсоид
найди строку if Authenticate(MS) <> -1 и раскоментируй ее...


 
Slym ©   (2008-01-22 10:48) [10]

Slym ©   (22.01.08 10:42) [9]
код ужасный

не просто ужастный, а никчемный... месиво из 3х!!! сокетных компонент


 
Kav   (2008-01-22 10:51) [11]

DiamondShark,
RFC - что такое и где взять ? вв яндексе куда-то не туда послали :)
Slym,
Окей попробую


 
Kav   (2008-01-22 10:52) [12]

>> не просто ужастный, а никчемный... месиво из 3х!!! сокетных компонент
а есть исходники попроще ?


 
DiamondShark ©   (2008-01-22 12:10) [13]


> вв яндексе куда-то не туда послали


http://www.yandex.ru/yandsearch?text=RFC+http+proxy+authentication&rpt=rad


 
Slym ©   (2008-01-22 13:20) [14]

Дарю http://ifolder.ru/5054357


 
Kav   (2008-01-22 16:53) [15]

Slym
спасибо щас буду смотреть


 
Kav   (2008-01-24 10:01) [16]

А вот еще один вопрос:  можно ли  сделатьтак  что если юзер авторизировался,  его пароль держался бы пока он не завершит свой сеанс в Windows ?


 
Slym ©   (2008-01-24 10:12) [17]

Разобрался в моем коде?
Kav   (24.01.08 10:01) [16]
держался

держался где?
В рамках 1 сеанса браузера с сервером пароль хранится в памяти браузера... Можно поставить "галку" сохранить пароль тогда он сохраняется гдето в системе...


 
Kav   (2008-01-24 10:39) [18]

Slym, чуть-чуть разобрался (просто времени свободного не было),
У меня проблема такая компы у меня как бы общие т.е. любой сотрудник организацию за него может сеть и поработать ( и мне нужно всети статиску сколько они мегабайт затратили на интернет и на каких сайтах побывали),
И в них есть учетная запись - читатель каждый входит в компьютер под ней
если поставить галку сохранить пароль, то при следущем входе в систему
он уже будет как бы введен, так что это не подходит
P.S.  много уйдет времени если делать еще  поддержку HTTPS ?


 
Slym ©   (2008-01-24 11:15) [19]

готовое не проще взять? этих считалок проксей как китайцев на планете... к томуже с кэшированием... и "умным" рефрешем
Kav   (24.01.08 10:39) [18]
P.S.  много уйдет времени если делать еще  поддержку HTTPS ?

15 мин... она там практически реализована...


 
Slym ©   (2008-01-24 11:40) [20]

   try
     FRemoteSocket.Open(RemoteHost,"","",RemotePort);
     if AnsiStartsText("CONNECT", Query.Strings[0]) then
     begin
       ClientSocket.SendLn("HTTP/1.0 100 Continue");
       ClientSocket.SendLn("");
     end else
     begin
       for i:=0 to Query.Count-1 do
       begin
         if not FRemoteSocket.Connected then break;
         if Query.ValueFromIndex[i]="" then Continue;
         FRemoteSocket.SendLn(Query.Strings[i]);
       end;
       FRemoteSocket.SendLn("");
     end;
     DoTunneling(ClientSocket,FRemoteSocket);
   finally
     FRemoteSocket.Close;
   end;


 
Slym ©   (2008-01-24 13:20) [21]

Slym ©   (24.01.08 11:40) [20]
ClientSocket.SendLn("HTTP/1.0 100 Continue");

сори... ClientSocket.SendLn("HTTP/1.0 200 OK");


 
Kav   (2008-01-25 10:16) [22]

окей, попробую :)


 
Kav   (2008-01-25 11:03) [23]

Есть одна проблема, нельзя на yandex зайти в свой почтовый ящик через web интерфейс, с чем это может быть связано ?


 
Kav   (2008-01-26 09:02) [24]

имеется в виду через прокси


 
XakeP   (2008-01-27 00:36) [25]

О! Я вижу, что нашел интересующую меня тему. Мне тоже нужна программка, но немного по круче. Я хочу сделать со своего кома прокси-сервер. Пробовал использовать разные программы, но так и не нашел такой, которая обеспечила бы все, что мне нужно. Может, кто поможет написать такую.
Итак, что мне надо:
1)   аутентификация пользователей, включая их IP
2)   возможность ограничения для каждого пользователя скорости входящего и исходящего потоков отдельно, а также смена этих значений в зависимости от количества подключенных пользователей и их активности
3)   форма где можно будет увидеть кто с кокой скоростью в данный момент качает/отдает данные и сколько скачал/отдал за текущие сутки/месяц. + сохранить это в файл.


 
XakeP   (2008-01-27 00:36) [26]

Удалено модератором
Примечание: дубль


 
ketmar ©   (2008-01-27 13:02) [27]

2хацкер: почесать репу; потом купить старую железяку за смешное количество долларов; воткнуть туда, например, Linux; настроить iptables и squid; наслаждаццо. писать ничего не надо, честно.


 
XakeP   (2008-01-27 14:33) [28]

Не-е-е. Я в линуксе вообще ноль. Мне надо бы что-то под ХР.
Прогу которую подарил Slym © думаю можно немного усовершенствовать для этих целей. Я вчера пробовал немного разобраться с ней. Оказалось, что менеджер закачек не качает. Выдает ошибку:
HTTP/1.0 407 Proxy Authentication Required
Proxy-Authenticate: Basic realm="ALTERNATIVE PROXY"
Это можно исправить?


 
ketmar ©   (2008-01-27 14:46) [29]

натурально, авторизацию включить. ежели оная там верно реализована.

или всё-таки брать инструменты под задачу, а не пытаться придать задаче форму кактуса.


 
XakeP   (2008-01-27 15:08) [30]

Сори, не досмотрел :)
Выдает socket error=10053


 
ketmar ©   (2008-01-27 15:10) [31]

>[30] XakeP(27.01.08 15:08)
логично. ты не представился — тебя отстрелили в стратосферу.


 
XakeP   (2008-01-27 15:15) [32]

Неа. Что-то не так. Я в менеджере задал имя пользователя и пароль!


 
XakeP   (2008-01-27 15:31) [33]

и сам прокси в этом месте

raise ESocketError.CreateResFmt(@sWindowsSocketError,

выдает ошибку


 
ketmar ©   (2008-01-27 15:53) [34]

ты будешь смеяться, но raise — оно для того и сделано, чтобы исключение кидать.

а что ты там и где задал — это только одна сторона. я ж сказал: корректность должна быть с обеих сторон. я лично код прокси не читал, но всё равно осуждаю.


 
XakeP   (2008-01-27 16:06) [35]

Ну, если кто-то удосужился прочитать код – плиз хелп!


 
XakeP ©   (2008-01-27 23:06) [36]

а что можете сказать об этом:
_http://www.delphisources.ru/pages/sources/internet/2005_year/alt_http_proxy.html ?


 
Slym ©   (2008-01-28 05:35) [37]

XakeP   (27.01.08 14:33) [28]
Прогу которую подарил Slym © думаю можно немного усовершенствовать для этих целей.

Совершенствуй :)... Этот пример был накидан за пару -тройку 15мин. пауз между работой... Это только пример! т.к. в нем замечен баг который позволяет работать только в рамках "быстрой" сети:
r:=Peer1.ReceiveBuf(Buf,Length(Buf));
if r=0 then exit;
s:=Peer2.SendBuf(Buf,r);
if r<>s then exit;

а должен терпеливо ждать для досыла и не истерично рвать соединение


 
ketmar ©   (2008-01-28 07:38) [38]

да там, наверняка, и работа с заголовками вовсе отсутствует. я не читал, но сильно это подозреваю. %-)


 
Kav   (2008-01-28 09:41) [39]

Сейчас скачал squid под Windows, посмотреля на него и она мне не понравилась.


 
ketmar ©   (2008-01-28 09:44) [40]

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



Страницы: 1 2 вся ветка

Форум: "Сети";
Текущий архив: 2009.05.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.006 c
4-1209049754
constantine
2008-04-24 19:09
2009.05.03
просмотр системных событий (Приложение, Безопасность, Система)


2-1238002705
Alex_C
2009-03-25 20:38
2009.05.03
Ограничения ф-ции Pos?


2-1238008511
cyber-pilot
2009-03-25 22:15
2009.05.03
Количество единиц в байте


2-1237419179
Новичок
2009-03-19 02:32
2009.05.03
Программное добавление полей в ADOTable1


2-1237986356
Neket
2009-03-25 16:05
2009.05.03
Проблема при INSERT-е в Базу Oracle





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский