powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Система веб-аутентификации
5 сообщений из 5, страница 1 из 1
Система веб-аутентификации
    #32313189
der
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
der
Гость
Есть SQL сервер.
Там в табличках наряду с данными хранятся тексты запросов для вытаскивания этих самых данных. В настоящее время все это работает через обычное приложение (Delphi).
Хочу частично это перевести на Web-платформу (не знаю еще IIS или Apache).
В качестве аутентификации не хочу пользоваться стандартным окошком аутентификации IIS (например) - не красивое оно.
Будет страница с предложением ввести логин/пароль.

Вопрос в том, как правильней было бы организовать работу системы аутентификации.
Например, пользователь проавторизировался. Поработал, ушел, забыв нажать LogOut. Надо чтобы система проверяла как давно была проведена авторизация. Как сделать так чтобы страница (например http://192.168.1.1/baza/index.html?action=5&report=20&data=GetReport) была доступна только проавторизировавшимся пользователям.
Достаточно ли будет создать таблицу с именем пользователя, его IP адресом, и временем начала сессии. А перед каждым действием этого пользователя проверять сколько прошло времени, и.т.д.
Возможно вопрос непонятен. Давайте начнем обсуждать - доберемся до истины!..
Спасибо.
...
Рейтинг: 0 / 0
Система веб-аутентификации
    #32314243
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Достаточно ли будет создать таблицу с именем пользователя, его IP адресом, и временем начала сессии.

IP точно недостаточно, многие ходят из-зи фаервола, нужно обязательно использовать имя. Можно идентифицировать по кукам, но по-моему по имени логичнее, но это зависит об требований к интерфейсу. Например позволяется ли одному юзеру заводить много сессий.

У нас для авторизации используются id сесии (sessionID), которые присваиваются юзеру в момент успешного логона и живут в куках и в базе. Если хочешь большей безопасности, то sessionID можно менять каждый раз, когода юзер приходит на сайт за новой страницей.

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

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

Если страницы формируются динамически и ты сначала проверяешь права юзера, то доступ к заданной странице получится автоматически, неавторизованные юзеры его иметь не будут по причине отсутствия страницы. Не знаю как это просто сделать в случае статических страниц.

Вообще по-моему нужно сразу настраиваться на трехзвенную архитектуру, средний слой должен быть обязательно, вопрос только в том, насколько толстый.
...
Рейтинг: 0 / 0
Система веб-аутентификации
    #32314261
der
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
der
Гость
>IP точно недостаточно, нужно обязательно использовать имя.

А если с одним и тем же именем будет два коннекта?
Может MAC-адрес выцыпить (если это возможно)?

>Можно идентифицировать по кукам

Куки могут быть отключены у пользователя.

>Если страницы формируются динамически и ты сначала проверяешь права юзера, то доступ к заданной странице получится автоматически,

Ну, по-идее, страницы формируются динамически. В том примере, который я привел:
http://192.168.1.1/baza/index.html?action=5&report=20&data=GetReport
Формируется Некое действие №5 с отчетом №20, возвращаемый формат - PDF
Вот, но ведь никто не мешает людям просто открыть браузер и в строке "Адрес" ручками написать это строку. Но, в принципе, наверное, если перед возвращением пользователю результата сделать проверку, то, должно быть все ОК?

>Вообще по-моему нужно сразу настраиваться на трехзвенную архитектуру, средний слой должен быть обязательно, вопрос только в том, насколько толстый

А что это такое?
...
Рейтинг: 0 / 0
Система веб-аутентификации
    #32315487
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Куки могут быть отключены у пользователя.

Может я ошибаюсь, но если это требование обязательно то обсуждать больше нечего. Ты не сможешь идентифицировать юзера. С одной машины могут одновременно работать несколько юзеров (теоретически), все во второй приход будут иметь общий мак адрес, IP, как ты их различишь? Ведь имени, под которым они залогинились ты в запросе уже не получишь. Может броузер пишет в запрос какой-нибудь идентификатор, но я об этом ничего не знаю. Чтоб их различить нужно положить в куки что-то уникальное для юзера: userName или sessionID, и потом в следующий приход юзера вытащить это из кук. Я не знаю другого способа.

sessionID хорош тем, что можно на одного юзера завести несколько сессий. Если в куки класть userName, то туда надо класть и пароль, что не есть хорошо.

Основное отличие WWW приложений от клиент-сервера по-моему состоит в том, что нет постоянных сессий. Пользователь приходит с запросом и ты его должен узнать.

>Вот, но ведь никто не мешает людям просто открыть браузер и в строке "Адрес" ручками написать это строку. Но, в принципе, наверное, если перед возвращением пользователю результата сделать проверку, то, должно быть все ОК?

Для этого в куки кладется sessionID, присваемый системой при логоне. Если он неправильный страница не формируется. При желании sessionID можно менять случайным образом при каждом приходе юзера.

>А что это такое?

Это когда между пользователем и БД стоит один или несколько слоев. Один там будет всегда: это веб сервер, на котором будут работать CGI или какие-то еще скрипты. В дополнение может быть application server, туда можно положить всю логику, а в базе только хранить данные, некоторые так и делают, тогда можно обойтись без скриптов на веб сервере. Это называется толстый средний слой. С точки зрения базы это толстый клиент. Еще пример такой архитектуры это bugzilla, можно скачать и посмотреть. Там нет application server, все сделано CGI и перловыми скриптами, но это не важно, важно что база логикой не занимается. Если логикой занимается база, а средний слой только парсит HTTP запросы и тупо формирует страницы по данным из базы, то это тонкий средний слой.

В принципе для небольшого сайта можно обойтись без базы, но по-моему это несерьезно.

Вообще на этот счет должна быть литература, там тебе на счет всяких архитектур объяснят лучше.
...
Рейтинг: 0 / 0
Система веб-аутентификации
    #32319474
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут тебе разделять нужно идентификацию и авторизацию.
идентификация - то чо пользоватедь допустимый
авторизация - определить ресурсы, к которым пользователь имеет доступ

идентификацию лучше делать по логину и паролю.
для авторизации у нас, например, завели роли. то есть создаешь например роль Администратор, которой разрешен доступ ко всем ресурсам, роль Расширенный пользователь - там какая то часть ресурсов.

для реализации авторизации мы завели таблицу - в ней храним пары id роли, id приложения. так же мы сделали таблицу - id поль-ля, id роли. то есть схема такая
1. определяем что пользователь есть в базе, то есть у него есть id поль-ля
2. по id поль-ля получаем id роли. этих id роли соотвественно может быть несколько
3. по id роли получаем список id приложений, по которым строим ссылки

ну и на каждой странице можно проверять в базе, есть ли для приложения id приложения роль id роли, в которой присутсвует нужный пользователь id поль-ля.

примерно так :)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Система веб-аутентификации
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]