Методология интеграции гетерогенных информационных систем по свойствам неорганических веществ (1090084), страница 43
Текст из файла (страница 43)
Реализации интеграции ИС СНВМ методом EAI.На текущий момент разработанная интегрированная ИС СНВМ являетсяединственной успешной попыткой интеграции материаловедческой информации натерритории России. Достоверность приведенных в диссертационном исследованиивыводов подтверждается практической реализацией интегрированной ИС, котораяможет использоваться как конечными пользователями для поиска и сбора информации(EAI), так и программными средами в качестве источника информации по свойствамнеорганических веществ (ETL+EII).6.4. Создание системы единой авторизацииЧасто при интеграции пользовательских интерфейсов гетерогенных ИСвозникает задача создания единой ситемы авторизации, известной в англоязычнойлитературе как Single Sign-On (SSO).
Применительно к ИС СНВМ это способобеспечения согласованной работы двух и боле Web-приложений ИС СНВМ, прииспользовании которого пользователь переходит от одной ИС СНВМ к другой безповторной авторизации. Говоря простым языком – это использование единого профиляи пароля от него для входа в разные Web-приложения ИС СНВМ. К основнымпреимуществам технологии единого входа относятся:уменьшение количества запоминаемых логинов и паролей;уменьшение времени на повторный ввод пароля для одной и той же учетнойзаписи;230снижение расходов на IT-службу за счёт уменьшения количества запросов повосстановлению забытых паролей;Втехнологииаутентификации,единогоиспользуемыевходаприменяютсядругимиИС,централизованныекоторыесерверыобеспечиваютвводпользователем своих учётных данных только один раз для авторизации на одной из ИС.Из недостатков, приписываемых SSO, следует выделить увеличивающуюсяважность одного пароля, при получении которого злоумышленник получает доступсразу ко всем данным, привязанным к профилю SSO.
Значит, организация единоговхода требует повышенного внимания к защите учетных данных пользователя. Так жеутеря пароля может привести к блокировке и отказу в доступе ко всем системамиспользующим SSO.Рис. 6.4.1. Реляционная структура профиля пользователя ИС СНВМ.Для создания единого профиля пользователя для доступа к ИС СНВМ быларазработана реляционная структура данных, представленная на рис. 6.4.1. По факту всеэти реляционные таблицы являются частью схемы данных метабазы, разработанной в231этой главе ранее. Названия всех таблиц, относящихся к SSO, начинаются с префикса“SSO_”. Рассмотрим кратко назначения всех таблиц.Таблица SSO_Users является основной таблицей профиля пользователя, вкоторой хранится список регистрационных данных пользователей, зарегистрированныхвИС.Каждомупользователюприсваиваетсяуникальныйцелочисленныйидентификатор UserID (тип int), который является первичным ключом таблицы. ПоляBusinessTypeID (тип int), CountryID (тип int), OccupationID (тип int), PostID (тип int),PurposeID (тип int), являются внешними ключами (foreign keys), для одноименныхполей в таблицах-справочниках: SSO_BusinessTypes, SSO_Countries, SSO_Occupations,SSO_Posts, SSO_Purposes (тип бизнеса, страна, род деятельности, должность и цельиспользования).
Поле AddressType (тип int) содержит тип адреса, указанногопользователем (1 – рабочий адрес; 2 – домашний адрес). Поле Org (тип nvarchar(128))содержит название организации места работы, а поле Department (тип nvarchar(128))содержит названия отдела организации и не обязательно для заполнения прирегистрации. Поля FirstName (тип nvarchar(64)), MiddleName (тип nvarchar(64)) иLastName (тип nvarchar(64)) содержат имя, отчество и фамилию пользователясоответственно (отчество не обязательно для заполнения).Поле Email (тип nvarchar(128)) содержит адрес электронной почты пользователяинтегрированной ИС, и также одновременно является логином при входе. Построенуникальный индекс, содержащий это поле, что гарантирует уникальность электронныхадресов (т.е.
не может быть зарегистрировано более одного пользователя содинаковымиадресами).ПолеPassword(типnvarchar(32))содержитпарольнеобходимый для авторизованного входа пользователей в ИС.Поля Address (тип nvarchar(128)), City (тип nvarchar(32)), State (тип nvarchar(64)),PostalCode (тип nvarchar(16)), Phone (тип nvarchar(64)) содержат данные по адресупользователя с почтовым индексом и телефоном. Поле RegDate (datetime) содержитдату и время регистрации, а поле DateRecord (datetime) содержит дату и времяпоследнего обновления профиля пользователя. Поле Comments (тип nvarchar(2048))содержит комментарии, указанные для данного пользователя администратором. ПолеAccessFlags (тип int) указывает, какие права доступа по умолчанию предоставленыданному пользователю. Определены следующие значения этого поля:0–непредоставлятьпользователюдоступ(литературным ссылкам);1 – предоставлять пользователю полный доступ.кполнотекстовымстатьям232Таблицы SSO_BusinessTypes, SSO_Countries, SSO_Occupations, SSO_Posts,SSO_Purposes являются справочниками, определяющими доступные для выбора впрофиле пользователя элементы списков.
Справочники организованы единообразно(ключевое поле и название на русском и английском языке), поэтому рассмотримтолько справочник стран (таблица SSO_Countries) в качестве примера. ТаблицаSSO_Countries содержит записи о всех странах мира, которые доступны пользователядля выбора при регистрации. Поле CountryID (тип int) является первичным ключом (поэтому полю осуществляется связь с внешним ключом SSO_Users.CountryID) исодержит код страны по стандарту ISO 3166-1.
Поле NameRu (varchar(64)) содержитназвание страны, записанное на русском языке, а NameEn (varchar(64)) - на английском.Поля Code2 (varchar(2)) и Code3 (varchar(3)) содержат названия стран, записанныелатиницей в сокращенном виде из 2 и 3 символов соответственно по стандарту ISO3166-1. При появлении новых данных все справочники можно легко дополнятьнеобходимой информацией.Рис. 6.4.2.
Снимок экрана с фрагментом таблицы SSO_Countries.В настоящий момент на основе разработанной реляционной структуры данныхсоздана ИС единой авторизации, поддерживающая русскоязычный и англоязычныйпользовательский интерфейс. ИС доступна по адресу http://sso.imet-db.ru/ и внастоящий момент используется для авторизации пользователей ИС “Bandgap”,содержащей данные по ширине запрещенной зоны неорганических веществ, т.к. доступк данной ИС СНВМ в настоящий момент открыт для всех бесплатно (http://bg.imetdb.ru/ - требуется только регистрация). Поля регистрационной формы показаны нарис.
6.4.3. После регистрации пользователь имеет право доступа к ИС “Bandgap”.Важно отметить, что основной проблемой, решенной при создании единой ИСавторизации, являлась организация AJAX запросов к серверу ИС авторизации,233совмещенная с передачей значений cookie между разными доменами, которая в силубезопасности запрещена.Рис. 6.4.3. Регистрация пользователя в ИС единой авторизации.Врезультатеанализаспособоврешенияданнойпроблемы(JSONP,проксирование клиентских запросов сервером, CORS), был выбран относительнонедавно появившийся механизм CORS [310].
Cross-origin resource sharing (CORS) –механизм, позволяющий клиентскому сценарию JavaScript создать на странице запрос кдругому домену, отличному от того, с которого этот JavaScript был загружен.Подобный перекрестный между доменами запрос запрещен во всех браузерахполитикой безопасности, CORS определяет механизм настройки серверных заголовковпротокола HTTP таким способом, благодаря которому браузер и Web-сервер получаютвозможность взаимодействия.
Т.е. сервер самостоятельно определяет, позволять илинет подобные перекрестные запросы со стороны других доменов с возможностьюфильтрации запросов. Серверная поддержка CORS в ИС единой авторизацииреализована в ASP.Net приложении следующим образом (язык C#):private string GetHeaderValue4Origin {get {string host = Utils.SafeGetString(context.Request["host"]);return string.IsNullOrEmpty(host) ?"*" : string.Format("http://{0}", host);}234}/// <summary>/// пишем заголовки для CORS, если допустимый хост/// </summary>/// <returns>true – заголовки CORS записаны</returns>private bool WriteCORSHeaders() {string host = Utils.SafeGetString(context.Request["host"]);if (string.IsNullOrEmpty(host))return false;if (host.EndsWith(".imet-db.ru")|| host.EndsWith(".imet.ac.ru")) {context.Response.AddHeader("Access-Control-Allow-Origin",GetHeaderValue4Origin);// включаем CORScontext.Response.AddHeader("Access-Control-Allow-Credentials","true");// включаем CORSreturn true;}return false;}Как видно из кода, в настоящий момент перекрестные запросы разрешенытолько длядоменов *.imet-db.ru и *.imet.ac.ru, т.к.
только с этих доменов можносовершить запрос к приложению http://sso.imet-db.ru/. Добавление заголовка AccessControl-Allow-Originразрешаетперекрестныезапросы,аAccess-Control-Allow-Credentials позволяет передавать значения cookie, указывающие на сессию авторизации.Состороныклиентаавторизации,которымявляетсяИС“Bandgap”осуществляются перекрестные AJAX-запросы на получение параметров сессииавторизованного пользователя. Важным является использование в AJAX запросовдополнительныхнастроечныхпараметров(withCredentialsиcrossDomain),включающих использование CORS на стороне клиента:...$.ajax({xhrFields: { withCredentials: true },crossDomain: true,}Таким образом, применение перекрестных запросов для авторизации возможнотолько если одновременно клиент и сервер явно разрешают возможность ихиспользования.