powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Покритикуйте архитектуру (интересует аутентификация)
3 сообщений из 3, страница 1 из 1
Покритикуйте архитектуру (интересует аутентификация)
    #36970684
вопросец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть некая высоконагруженная система, работающая с конфиденциальными данными, следующей структуры:

БД (I)<--->REST Web Service (II) <--SSL--->Web Site (III)

REST Service, Web Site - выполнены как stateless (обязательное требование,
т. к. прийдется прибегать к балансировке нагрузки).

Аутентификация выполняется следующим образом:

БД (I)<--->REST Web Service (II) <--SSL--->Web Site (III)

Будем считать, что узел (I) имеет некоторую табличку

USER_ACCOUNT(ID_USER_ACCOUNT (PK), SESSION_KEY (UK), LAST_TIME, LOGIN (UK), PASS, ...)

Узел III:
1) Пользователь перенаправляется по HTTPS на страничку ввода логин/пароль
2) Вводит login/password. Делается Postback формы по нажатию на кнопку login.
3) Серверный код страницы получает в пределах HTTPS сессии логин/пароль
4) Делает HTTPS GET запрос к узлу (II) передавая логин/пароль

Узел II:
5) Делает запрос к БД (узел I), к таблице USER_ACCOUNT, определяя существование login/password
6) В случае успеха генерирует SessionKey и делает UPDATE таблицы USER_ACCOUNT в соответствующей строке. В случае если пользователя не существует или пароль неверен, возвращает узлу (III) пустую строку.
7) Возвращает узлу (III) SessionKey

Узел III:
8) В случае получения SessionKey, пользователь перенаправляется на соответствующую страницу - личный кабинет (со спрятанным в HiddenInput SessioonKey'ем).
9) Далее этот SessionKey гоняется туда/сюда между постбэками и учавствует в GET запросах к узлу (II) по HTTPS.

---

10) При каждом обращении к узлу (II) в табличке USER_ACCOUNT обновляется LAST_TIME - время последнего обращения.
11) Периодически - раз в пять минут запускается системная служба или JOB БД, который проверяет время LAST_TIME и если последнее обращение было более десяти минут назад, делается обновление поля SESSION_KEY соответствующей строки на NULL. И сессии больше не существует.

Поидее все узлы (II), (III) в этом случае будут stateless. Не дырява ли такая защита. Кто что думает. Спасибо.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру (интересует аутентификация)
    #36977613
KomarovAB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО, вот это:

6) В случае успеха генерирует SessionKey и делает UPDATE таблицы USER_ACCOUNT в соответствующей строке. В случае если пользователя не существует или пароль неверен, возвращает узлу (III) пустую строку.
не позволит пользователю начать новую сессию одновременно с существующей.
Также не совсем понятно, что произойдет, когда пользователь прикроет браузер и стартанет новую сессию до момента завершения существующей сессии по тайм-ауту
...
Рейтинг: 0 / 0
Покритикуйте архитектуру (интересует аутентификация)
    #36977770
fleandr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как насчёт кражи сессий?
как насчёт атомарности транзакций?
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Покритикуйте архитектуру (интересует аутентификация)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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