В виду несильной причастности к веб-программированию, но некоторой нужды в нем есть вопрос. Как организуется авторизация на сайте? У меня Perl под IIS. Написать табличку в mysql и организовать начальный вход на сайт — это я сподобился. Но как сайту знать, что это именно этот пользователь запрашивает следующую страницу? Как ему понять, что сессия закрыта? Вообще, как все это у нормальных людей организовано? Через cookies передавать ничего не хочется. Буду благодарен за ответы.
Здравствуйте, A3, Вы писали:
A3>Добрый день.
A3>В виду несильной причастности к веб-программированию, но некоторой нужды в нем есть вопрос. Как организуется авторизация на сайте? У меня Perl под IIS. Написать табличку в mysql и организовать начальный вход на сайт — это я сподобился. Но как сайту знать, что это именно этот пользователь запрашивает следующую страницу? Как ему понять, что сессия закрыта? Вообще, как все это у нормальных людей организовано? Через cookies передавать ничего не хочется. Буду благодарен за ответы.
А почему через cookies ничего передавать не хочется? Обычно там живет sessionID
Через кукисы ты однонозначно будешь передавать ID сессии. Хочешь ты этого или нет.
Авторизация производится в IIS 3 методами:
1) Анонимная. Сессия создается под указанным тобой юзером. По умолчанию это IUSR_XXXXXXX, где XXXXXXX — это имя сервера.
2) Открытый логин/пароль. Ты прописываешь NT-юзера на сервере или в домене и указываешь в IIS, где его искать/проверять
3) NTLM — IE умеет самостоятельно логиниться.
Во 2 случае у тебя в браузере вывалится окошко "Connect to ..."
В 3 случае в IE произойдет автоматическая авторизация (если она настроена в браузере). А в нетскапе/мозилле и других это не сработает.
Настраивается это следующим образом:
1) Открываешь свойства приложения в IIS
2) Открываешь закладку "Directory Security"
3) Жмешь кнопку "Edit"
4) Выбираешь то, что считаешь нужным.
Вот и все
... << RSDN@Home 1.1.0 stable >>
С уважением,
Леченко Павел
SDPM.RU — Сообщество Менеджеров Проектов Разработки Программного Обеспечения
Здравствуйте, Pavel_Lechenko, Вы писали:
P_L>3) NTLM — IE умеет самостоятельно логиниться. P_L>В 3 случае в IE произойдет автоматическая авторизация (если она настроена в браузере). А в нетскапе/мозилле и других это не сработает.
Здравствуйте, A3, Вы писали:
A3>В виду несильной причастности к веб-программированию, но некоторой нужды в нем есть вопрос. Как организуется авторизация на сайте? У меня Perl под IIS. Написать табличку в mysql и организовать начальный вход на сайт — это я сподобился. Но как сайту знать, что это именно этот пользователь запрашивает следующую страницу? Как ему понять, что сессия закрыта? Вообще, как все это у нормальных людей организовано? Через cookies передавать ничего не хочется. Буду благодарен за ответы.
Здравствуйте, Pavel_Lechenko, Вы писали:
P_L>Через кукисы ты однонозначно будешь передавать ID сессии. Хочешь ты этого или нет.
P_L>Авторизация производится в IIS 3 методами: P_L>1) Анонимная. Сессия создается под указанным тобой юзером. По умолчанию это IUSR_XXXXXXX, где XXXXXXX — это имя сервера. P_L>2) Открытый логин/пароль. Ты прописываешь NT-юзера на сервере или в домене и указываешь в IIS, где его искать/проверять P_L>3) NTLM — IE умеет самостоятельно логиниться. P_L>Во 2 случае у тебя в браузере вывалится окошко "Connect to ..." P_L>В 3 случае в IE произойдет автоматическая авторизация (если она настроена в браузере). А в нетскапе/мозилле и других это не сработает.
P_L>Настраивается это следующим образом: P_L>1) Открываешь свойства приложения в IIS P_L>2) Открываешь закладку "Directory Security" P_L>3) Жмешь кнопку "Edit" P_L>4) Выбираешь то, что считаешь нужным.
P_L>Вот и все
Но это все авторизация через юзеров/пароли на серваке. Я же пытаюсь получать данные из своей mysqlевой таблички, где на каждого юзера прописаны его некоторые права и обязанности. И не хочется всех юзеров загонять на NT-сервак. И нельзя ли поподробнее о SessionID ? Когда и где он возникает? Заранее спасибо.
Здравствуйте, A3, Вы писали:
A3>Но это все авторизация через юзеров/пароли на серваке. Я же пытаюсь получать данные из своей mysqlевой таблички, где на каждого юзера прописаны его некоторые права и обязанности. И не хочется всех юзеров загонять на NT-сервак. И нельзя ли поподробнее о SessionID ? Когда и где он возникает? Заранее спасибо.
В общем так — в IIS ставишь анонимный доступ, а до БД стучишься с заранее определенным и прописанным логином/паролем, либо с теми, которые ввел юзер. Но тогда их надо хранить в сессии.
SessionID пишется в кукисы браузера. Он необходим для того, чтобы тебе можно было уникально идентифицировать открытую сессию. Браузер ведь как работает — присоединился, получил инфу, отсоединился. Для того, чтобы ему сказать серверу, что это точно он в прошлый раз присоединялся и создавал сессию, он передает серверу свой SessionID.
В принципе, можно обойтись и без кукисов, но тогда надо будет отсылать этот идентификатор как параметр страницы.
С уважением,
Леченко Павел
SDPM.RU — Сообщество Менеджеров Проектов Разработки Программного Обеспечения
А передавать индефикатор сесии через форму не пробывал? Юзер авторизовался, для него сгенерился SID, его помещаешь в базу и в форму на странице. Когда юзер переходит на другую страницу по ссылке, органезуешь отправку данных с формы (через JavaScript), сервер получив SID ищет его в базе, и если находит то всё ОК. это тот самый юзер, а если нет то посылает авторизовываться. SID лучше случайный генерить, и при каждой авторизации обновлять его в базе.
Здравствуйте, AndreyGTS, Вы писали:
AGT>SID лучше случайный генерить, и при каждой авторизации обновлять его в базе.
Можно хоть при каждом коннекте менять
AGT>А передавать индефикатор сесии через форму не пробывал? Юзер авторизовался, для него сгенерился SID, его помещаешь в базу и в форму на странице. Когда юзер переходит на другую страницу по ссылке, органезуешь отправку данных с формы (через JavaScript), сервер получив SID ищет его в базе, и если находит то всё ОК. это тот самый юзер, а если нет то посылает авторизовываться. SID лучше случайный генерить, и при каждой авторизации обновлять его в базе.
Ага. А очень шибко грамотный юзверь сохранит страничку на диск и подправит в форме ИД. И получим перехват сессии. С кукисами надежнее, главное, не храни там ИД в открытом виде.
Здравствуйте, glyph, Вы писали:
AGT>>А передавать индефикатор сесии через форму не пробывал? Юзер авторизовался, для него сгенерился SID, его помещаешь в базу и в форму на странице. Когда юзер переходит на другую страницу по ссылке, органезуешь отправку данных с формы (через JavaScript), сервер получив SID ищет его в базе, и если находит то всё ОК. это тот самый юзер, а если нет то посылает авторизовываться. SID лучше случайный генерить, и при каждой авторизации обновлять его в базе. G> Ага. А очень шибко грамотный юзверь сохранит страничку на диск и подправит в форме ИД. И получим перехват сессии. С кукисами надежнее, главное, не храни там ИД в открытом виде.
G>> Ага. А очень шибко грамотный юзверь сохранит страничку на диск и подправит в форме ИД. И получим перехват сессии. С кукисами надежнее, главное, не храни там ИД в открытом виде. A>а что мешает редактировать куки?...
Вот я и говорю — не хранить ИД в куки. Хранить там некоторое f(ИД). Количество сессий конечно, можно перебрать все сессии и сравнить хэши ИД с хэшем, взятым из куки. Тупо, конечно, и не подходит для огромного количества сессий.
Здравствуйте, anonymous, Вы писали:
P_L>>3) NTLM — IE умеет самостоятельно логиниться. P_L>>В 3 случае в IE произойдет автоматическая авторизация (если она настроена в браузере). А в нетскапе/мозилле и других это не сработает.
A>Mozilla это уже умеет...
Здравствуйте, Andir, Вы писали:
A>Здравствуйте, anonymous, Вы писали:
P_L>>>3) NTLM — IE умеет самостоятельно логиниться. P_L>>>В 3 случае в IE произойдет автоматическая авторизация (если она настроена в браузере). А в нетскапе/мозилле и других это не сработает.
A>>Mozilla это уже умеет... A>Как и нетскейп впрочем.
Netscape — это Mozilla после неудачной пластической операции...
Есть ещё такой экзотический способ авторизации, как клиентские сертификаты. В этом случае, при регистрации клиент генерирует запрос на сертификат (certificate request), сервер подписывает его и присылает клиенту подписанный сертификат, который на стороне клиента инсталлируется в браузер.
Затем, при дальнейшем входе на сайт, сервер запрашивает сертификат клиента и данные из этого сертификата доступны внутри любых скриптов, работающих под управлением веб-сервера.
Клиентские и серверные скрипты для организации такого процесса с описанием можно найти тут
Здравствуйте, anonymous, Вы писали:
P_L>>>>А в нетскапе/мозилле и других это не сработает. A>>>Mozilla это уже умеет... A>>Как и нетскейп впрочем.
A>Netscape — это Mozilla после неудачной пластической операции...
А FireFox это после удачного хирургического вмешательства .