- •Введение
- •1.4 Безопасность при эксплуатации пэвм
- •1.5 Стадии и этапы разработки
- •1.6 Порядок контроля и приемки
- •2 Требования к функциональным характеристикам
- •3.2 Выбор формата обмена данными
- •3.3 Выбор среды разработки
- •3.4 Выбор субд для системной базы данных
- •4 Разработка базы данных
- •Пользователи и права доступа
- •Метаданные
- •5 Разработка программного обеспечения
- •5.1 Архитектура программного обеспечения
- •5.2 Система аутентификации и авторизации
- •5.3 Взаимодействие с клиентским приложением
- •6 Тестирование программы
- •6.1 Модульное тестирование
- •6.2 Системное тестирование
- •7 Организационно-экономическая часть
- •7.1 Технико-экономическое обоснование объекта проектирования
- •7.2 Организационная часть
- •7.3 Экономическая часть
- •7.4 Выводы
- •8 Безопасность и экологичность проектных решений
- •8.1 Цель и решаемые задачи
- •8.2 Опасные и вредные факторы при работе с пэвм
- •8.3 Характеристика объекта исследования
- •8.4 Мероприятия по безопасности труда и сохранению работоспособности
- •8.5 Рсчеты
- •Заключение
- •Список литературы
- •Приложение 1. Листинг
5.2 Система аутентификации и авторизации
Одним из функциональных требований к серверу является поддержка аутентификации и авторизации пользователей.
5.2.1 Аутентификация
Аутентификация — процедура проверки подлинности, например: проверка подлинности пользователя путём сравнения введённого им пароля с паролем в базе данных пользователей.
Аутентификация производится посредством сравнения предоставленных пользователем логина и пароля с хранящимися в БД образцами.
При организации аутентификации, важно хранить пароли пользователей в защищенном виде. Главным методом является использование необратимых преобразований над паролями — хэш-функций. То есть даже если злоумышленник получит доступ к базе паролей, то он получит только хэши паролей. К сожалению данный метод обеспечивает достаточный уровень безопасности, только при условии что пользователи используют надежные пароли. Метод подвержен атаке с использованием так называемых «радужных таблиц». Радужная таблица содержит набор хэшей всех часто использующихся паролей, таким образом, найдя хэш пароля в радужной таблице, можно легко узнать настоящее значение пароля.
Существует несколько способов защиты, основными из которых являются использование так называемой «соли», а так же медленных хэш-функций.
Алгоритм аутентификации представлен на рисунке 5.5
Рисунок 5.5 - Алгоритм аутентификации
.
5.2.2 Авторизация
Авторизация — предоставление определённому лицу или группе лиц прав на выполнение определённых действий; а также процесс проверки (подтверждения) данных прав при попытке выполнения этих действий.
Сервер должен иметь гибкие средства для распределения прав доступа между пользователями системы.
Для решения данной задачи была выбрана иерархическая модель на основе групп пользователей.
В системной базе данных хранится информация об пользователях системы (tuser), группах пользователей (tusergroup), а так же информация об правах доступа к объектам (tgrant).
Группы и пользователи находятся в отношении многие ко многим. В группе может быть множество членов, а пользователь может состоять в нескольких группах. Данное отношение, на уровне БД, реализовано посредством вспомогательной таблицы tusergroupuser.
Структура групп, в самом общем случае, представляет собой ациклический граф, где каждая группа может иметь несколько родительских.
Права доступа наследуются от родительских к дочерним группам, причем, из возможных уровней доступа выбирается максимальный.
Уровень доступа представляет собой целое число, в простейшем случае 0 или 1. Так же может быть использовано отрицательное число, запрещающее наследование.
Система контроля доступа разработана с учетом возможности расширения функционала. Имеется возможность реализации нескольких уровней доступа для одной пары субъект-объект, причем объектом может быть любой класс, зарегистрированный в системе.
5.3 Взаимодействие с клиентским приложением
Сервер предоставляет определенный набор HTTP-запросов (Web API), а также определение структуры HTTP-ответов, для выражения которых используется формат JSON.
Предоставляемые сервисы включают аутентификацию, получение данных из представлений, вызов методов, а так же средства для администрирования.
5.3.1 Сервисы аутентификации
Запрос на аутентификацию пользователя. При успешной проверке логина и пароля возвращает личные данные пользователя, сохраненные настройки клиентского приложения, закладки.
Тип HTTP запроса: POST
Путь: “/login”
Тип возвращаемых данных: "application/json;charset=UTF-8"
Параметры:
login – логин пользователя производящего аутентификацию
password – SHA1 хэш пароля пользователя
client_id – название клиентского приложения
date_offset – смещение времени относительно UTC в минутах
disconnected – указывается при восстановлении соединения после разрыва соединения
Запрос на сброс аутентификации пользователя. Сбрасывает настройки сессии специфичные для текущего пользователя, закрывает все открытые вкладки и устанавливает текущего пользователя анонимом.
Тип HTTP запроса: POST
Путь: “/logout”
Тип возвращаемых данных: "application/json;charset=UTF-8"
Возвращает логин текущего пользователя в нижнем регистре. Используется для проверки соединения с сервером, и избегания закрытия сессии при превышении установленного времени ожидания.
Тип HTTP запроса: GET
Путь: “/ping”
Тип возвращаемых данных: " text/plain;charset=UTF-8"
5.3.2 Сервисы для администрирования
Получение информации по текущему состоянию сервера и сессии. Доступен только для пользователей авторизованных как администратор системы.
Тип HTTP запроса: GET
Путь: “/stat”
Тип возвращаемых данных: " text/plain;charset=UTF-8"
Получение лога (журнала) сервера. Доступен только для пользователей авторизованных как администратор системы.
Тип HTTP запроса: GET
Путь: “/stat/log”
Тип возвращаемых данных: " text/plain;charset=UTF-8"
Параметры:
name – имя log файла
Очистка кэша второго уровня ORM Hibernate. Доступен только для пользователей авторизованных как администратор системы.
Тип HTTP запроса: GET
Путь: “ /stat/cache/clear”
Тип возвращаемых данных: " application/json;charset=UTF-8"
5.3.3 Работа представлений
Открытие представления в новой вкладке (если не указан id_tab). Возвращает как метаданные, так и данные с учетом заданного фильтра, сортировки и других параметров.
Тип HTTP запроса: POST
Путь: "/view/open"
Тип возвращаемых данных: "application/json;charset=UTF-8"
Параметры:
id_view – id открываемого представления
id_tab – если указанно, то открывает в указанной вкладке, иначе создается новая
page_number – номер страницы
page_count – количество записей на одной странице
filter – фильтр
sort – сортировка
openas – режим открытия
version – текущая версия представления
Изменение сортировки для открытого представления. Возвращает только данные.
Тип HTTP запроса: POST
Путь: "/view/sort"
Тип возвращаемых данных: "application/json;charset=UTF-8"
Параметры:
id_view – id открываемого представления
id_tab – номер вкладки
sort – сортировка
version – текущая версия представления
Изменение фильтра для открытого представления. Возвращает только данные.
Тип HTTP запроса: POST
Путь: "/view/filter"
Тип возвращаемых данных: "application/json;charset=UTF-8"
Параметры:
id_view – id открываемого представления
id_tab – номер вкладки
filter – фильтр
version – текущая версия представления
Получение указанной страницы для открытого представления. Возвращает только данные.
Тип HTTP запроса: POST
Путь: "/view/getpage"
Тип возвращаемых данных: "application/json;charset=UTF-8"
Параметры:
id_view – id открываемого представления
id_tab – номер вкладки
page_number – номер страницы
page_count – количество записей на одной странице
version – текущая версия представления
Закрытие указанной вкладки. Если вкладка не указана, то закрывает все вкладки.
Тип HTTP запроса: POST
Путь: "/closetab"
Тип возвращаемых данных: "application/json;charset=UTF-8"
Параметры:
id_tab – номер вкладки
Экспорт представления в выбранный формат для загрузки. Поддерживаются форматы xls, csv и pdf.
Тип HTTP запроса: POST
Путь: "/ view/download"
Тип возвращаемых данных: " application/octet-stream "
Параметры:
id_view – представление
page_number – номер страницы
page_count – количество записей на одной странице
filter – фильтр
sort – сортировка
format – в какой формат экспортировать
5.3.4 Вызов методов
Вызов одного или нескольких методов.
Тип HTTP запроса: POST
Путь: "/ callmethod "
Тип возвращаемых данных: "application/json;charset=UTF-8"
Параметры:
id_tab – вкладка
call – граф вызовов в формате json
Вызов одного или нескольких методов.
Тип HTTP запроса: POST
Путь: "/ callmethod "
Тип возвращаемых данных: "application/json;charset=UTF-8"
Параметры:
id_tab – вкладка
call – граф вызовов в формате json
Получение статуса и сообщений от выполняемого метода.
Тип HTTP запроса: POST
Путь: " /callmethod/status"
Тип возвращаемых данных: "application/json;charset=UTF-8"
Параметры:
id_tab – вкладка
from_time – получить сообщения начиная с данного времени
Исполнить Corinf DSL скрипт. Доступен только для пользователей авторизованных как администратор системы.
Тип HTTP запроса: POST
Путь: "/ execute_dsl"
Тип возвращаемых данных: "application/json;charset=UTF-8"
Параметры:
id_tab – вкладка
call – граф вызовов в формате json
