Разработка системы аутентификации "Контекстум-ID"

Способы аутентификации и их применимость относительно системы. Проектирование таблицы в базе данных Identity. Регистрация пользователя и управление паролем. Реализация идентификационного сервиса в качестве основы системы. Триггер для репликации.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 20.10.2016
Размер файла 2,9 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

[Введите текст]

Определения, обозначения и сокращения

Авторизация - это процесс определения того, имеет или не имеет некоторый субъект доступ к некоторому объекту.

Аутентификация - проверка предъявленного пользователем идентификатора.

Идентификация - процесс присвоения пользователю некоторого идентификатора.

Кукис (cookies) - это небольшая порция текстовой информации, которую сервер передает браузеру. Браузер будет хранить эту информацию и передавать ее серверу с каждым запросом как часть HTTP заголовка [1].

Сервис идентификации - сервис, предоставляющий идентификатор пользователя, удостоверяющий в известности идентификатора поставщику и предоставляющий иную информацию о пользователе [2].

Сервис-поставщик - компания, предоставляющая физическим и юридическим лицам доступ к определенному ассортименту коммуникационных и информационных услуг [3].

Система сквозной аутентификации (система единой аутентификации, система однократного входа, англ «Single Sign-On, SSO») - доступ пользователя к хранимым паролям и настройкам происходит после аутентификации в подобной системе, которая, как правило, совмещается с аутентификацией в операционной среде. Таким образом, введя свои персональные данные аутентификации (ПДА) один раз, например, логин и пароль, пользователь автоматически получает доступ ко всем системам, требующим аутентификации [4].

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

Язык разметки для систем безопасности (англ. «Security Assertion Markup Language», «SAML») - язык для обмена информацией о безопасности между бизнес-партнерами в сети.

JSON - легковесный текстовый формат обмена данными.

REST - архитектурный стиль программного обеспечения для распределенных систем, например, в сети Интернет [5].

RESTful - системы, поддерживающие REST.

Введение

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

С другой стороны, развивающаяся компания-поставщик некоторых услуг при помощи тех или иных информационных технологий также может поставить своих потенциальных клиентов в неудобное для них положение в связи с необходимостью вникать в каждую из систем в отдельности. Ситуация усложняется предъявляемыми требованиями к безопасности при использовании большинства современных систем, будь то локальные или удаленные приложения или системы. В частности, одним из неудобств как для сотрудников, так и для клиентов развивающей информационные технологии и услуги, завязанные на информационных технологиях компании, является разрозненность существующих и создаваемых новых систем. Для решения одного из аспектов такой проблемы существует и широко применяется довольно долгое время технология единого входа, направленная на решение. Технология единого (однократного) входа (англ. «Single Sign-On», «SSO») - технология доступа к различным приложениям посредством однократной процедуры аутентификации [6]

Данная технология призвана решить ряд задач, таких как:

устранение необходимости создания системы регистрации, идентификации и аутентификации пользователя для каждой системы в отдельности;

задачу обеспечения безопасности при использовании систем компании и, наконец, позволяет объединить ряд систем при помощи единого интерфейса входа, давая понять пользователям, что они находятся в рамках взаимосвязанной системы;

с точки зрения пользователя технология однократного входа облегчает процесс использования систем, устраняя путаницу во вводе и запоминании логинов и паролей для каждой системы в отдельности;

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

В настоящей дипломной работе будет рассмотрена компания-поставщик информационной технологии «Контекстум», а также ряд сервисов, предоставляемых в рамках данной технологии и в пределах других интернет-сервисов консорциума «Контекстум».

Приведем список существующих Интернет-сервисов:

национальный цифровой ресурс «РУКОНТ» - межотраслевая научная библиотека на базе информационной технологии «КОНТЕКСТУМ». Здесь размещен цифровой контент различного рода: книги, периодические издания и отдельные статьи, а также аудио-, видео-, мультимедиа, софт и многое другое. Основная задача - помочь Вам решить научные и образовательные задачи, скрасить досуг[7];

ряд сервисов Руконтекст [8], среди которых:

сервис поиска текстовых заимствований. Обеспечивает поиск фрагментов проверяемых документов в ранее опубликованных произведениях.Сервис предназначен для определения оригинальности проверяемого текста и выявления текстовых заимствований из ранее опубликованных произведений;

сервис интеллектуального тематического поиска: обеспечивает выделение ключевых терминов из документов, кластеризацию документов по тематикам, а также поиск документов по множеству атрибутов.Сервис предназначен для анализа научной терминологии и тематической направленности научных публикаций, а также для поиска научных документов по базе данных и интернету;

сервис анализа структуры и содержания документа. Обеспечивает определение степени соответствия структуры текста формальным требованиям, включая определение уровня содержания общенаучной и квазинаучной лексики, обнаруживает логические и семантические дефекты в публикациях, в том числе - нарушения правил согласования, синтаксической связности, грамматических норм и др.Сервис предназначен для многофакторного многокритериального оценивания качества научных публикаций;

русскоязычный архив электронных статей периодических изданий. Главная цель проекта - обеспечение доступа к полным текстам статей российских научных журналов, в том числе и к тем, которые не входят в существующие ныне электронные базы данных. [9];

центральный коллектор библиотек "БИБКОМ". Комплектует библиотеки книгами, периодикой, мультимедиа, бибтехникой. С 2013 года предлагается подписка на электронные полнотекстовые коллекции в "Национальном цифровом ресурсе "РУКОНТ"[10];

ООО «Агентство «Книга-Сервис» и ОАО «Агентство по распространению зарубежных изданий», являющиеся соучредителями федерального подписного каталога «Объединенный каталог «Пресса России» [11]. Основным видом деятельности являются услуги по организации подписки на различные периодические издания - газеты и журналы, в том числе организация подписки через Интернет.

Как видно из описаний всех существующих систем (далее сервисов), все они так или иначе взаимосвязаны между собой, хотя призваны решить разные задачи. При этом связи на уровне доступов не установлены. Каждый ресурс предъявляет собственные требования к безопасности и определяет собственные процедуры идентификации и аутентификации.

Целью разработки системы аутентификации «Контекстум-ID» является разделение процессов аутентификации и авторизации пользователей на интернет-сервисах консорциума «Контекстум». В том числе: сайт НЦР «РУКОНТ», сервисы проекта СВПОН «РУКОНТ», сервис проекта «РУАЕСТ», сервис центрального коллектора библиотек «БИБКОМ», сервис распространения печатных изданий агентства «Книга-Сервис» (далее Сервисы).

Указанное разделение процессов аутентификации и авторизации должно обеспечить возможность формирования системы «единого входа» (Single Sign-On, SSO) для пользователей Сервисов и облегчить пользование Сервисами.

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

В рамках данной задачи должны быть решены следующие подзадачи:

агрегирование всех существующих пользователей с их идентификационными и аутентификационными данными в единый список и создание единого хранилища для него;

создание универсальной системы идентификации и аутентификации пользователей;

создание методов и средств для обеспечения связи между Сервисом и системой единой идентификации и аутентификации;

проверка работоспособности созданной системы и ее внедрение на одном из Сервисов.

1. Способы аутентификации и их применимость относительно системы

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

1.1 Краткое описание системы

аутентификация сервис триггер репликация

Система представляет собой одностраничное приложение с использованием фреймворка Angular-JS для создания front-end части системы, призванное решить следующие задачи [12]:

отделение DOM-манипуляции от логики приложения, что улучшает тестируемость кода;

отношение к тестированию как к важной части разработки. Сложность тестирования напрямую зависит от структурированности кода;

разделение клиентской и серверной стороны, что позволяет вести разработку параллельно;

проведение разработчика через весь путь создания приложения: от проектирования пользовательского интерфейса, через написание бизнес-логики, к тестированию.

Angular придерживается MVC-шаблона проектирования и поощряет слабую связь между представлением, данными и логикой компонентов. Используя внедрение зависимости, Angular переносит на клиентскую сторону такие классические серверные службы, как видозависимые контроллеры. Следовательно, уменьшается нагрузка на сервер и веб-приложение становится легче.

Как уже было отмечено выше, особенностью системы является разделение клиентской и серверной стороны приложения, где серверная сторона отвечает на запросы клиента и реализует всю логику системы. Одним из наиболее часто практикуемых решений в области создания серверной части приложений является разработка так называемых RESTful сервисов. Отличительной особенностью данного архитектурного стиля является единый интерфейс между клиентом и сервером [13]. Такое разделение подразумевает отсутствие связи между клиентами и хранилищем данных. Это хранилище остаётся внутренним устройством сервера, таким образом переносимость клиентского кода увеличивается, что способствует упрощению сервера и его масштабируемости.

Для реализации RESTful подхода были выбраны технологии .NET фреймворка. ASP.NET Web API - это фреймворк для построения Web API над .NET фреймворком. Платформа веб-API ASP.NET позволяет с легкостью создавать службы HTTP для широкого диапазона клиентов, включая браузеры и мобильные устройства. Веб-API ASP.NET идеально подходит для разработки приложений RESTful на платформе .NET Framework.

1.2 Подходы к организации аутентификации и авторизации пользователя

Применительно к RESTful API как правило выделяют 6 способов аутентификации (их на самом деле больше):

Basic;

Digest;

Token;

Certificate;

Digital signature;

с применением ключей API (oAuth, oAuth 2.0).

Первый и второй способ используют для доверенных клиентов.

Ключи API используют для сторонних клиентов.

1.3 Basic-аутентификация

Метод базовой аутентификации - наиболее простой при разработке.

Недостатки:

- наиболее низкий уровень защиты, прописанный в опциях протоколов. Чаще всего используется в течение разработки, но не рекомендуется для использования в Production [14].

Схема действия: в заголовке посылается логин и пароль, закодированные в Base64. Использование SSL/TLS становится обязательным. Схема действия basic-аутентификации представлена на рисунке 1.1.

Пример использования: JIRA REST API - Basic authentication.

Подготовка данных: base64decode(<username>:<password>).

Таблица 1.1 - Пример запроса для basic-аутентификации

Запрос

Заголовки

Тело

Host: rucont.ru

GET api/auth/session HTTP/1.1

Authorization: Basic Zm9vOmJhcg==

-

Рисунок 1.1 - Схема действия Basic-аутентификации

1.4 Digest-аутентификация

Недостатки:

для каждого запроса необходимо 2 запроса, что делает Digest-авторизацию более медленной: вызов любого нового метода предполагает получение нового значения nonce (случайно сгенерированное на сервере значение, предоставляется и используется единожды),

уязвима к атаке man-in-the-middle, атака на воспроизведение,

пароль, хранящийся на сервере, может быть взломан.

Схема действия (для случая перехода на страницу, требующей авторизации):

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

сервер отвечает 401 «клиент-ошибка», предоставляя область аутентификации и случайно сгенерированное, одноразовое значение;

на данном шаге клиент будет предоставлять область аутентификации (как правило, описание компьютера или системы, осуществляющей доступ) пользователю и запросит имя пользователя и пароль. Пользователь может принять решение об отмене в этот момент;

как только имя пользователя и пароль были предоставлены, клиент повторно посылает тот же самый запрос, но добавляет заголовок аутентификации, который включает код ответа;

в этом примере сервер принимает аутентификацию и страница возвращается. Если имя пользователя является недействительным и / или пароль неверный, сервер может вернуть код ответа «401» и клиент будет запрашивать их у пользователя еще раз [15].

Примечание: клиент может уже содержать имя пользователя и пароль, без необходимости запрашивать у пользователя, например, если они ранее были сохранены веб-браузером.

Использование SSL/TLS является обязательным.

Подготовка данных:

HA1 = MD5("Mufasa:testrealm@host.com:Circle Of Life")= 939e7578ed9e3c518a452acee763bce9

HA2 = MD5("GET:/dir/index.html")= 39aff3a2bab6126f332b942af96d3366

Response = MD5("939e7578ed9e3c518a452acee763bce9:\dcd98b7102dd2f0e8b11d0f600bfb0c093:\00000001:0a4f113b:auth:\39aff3a2bab6126f332b942af96d3366")= 6629fae49393a05397450978507c4ef1

Таблица 1.2 - Пример запроса не аутентифицированного пользователя без указания учетных данных

Запрос

Заголовки

Тело

Host: rucont.ru

GET /api/auth/session HTTP/1.0

-

Таблица 1.3 - Ответ от сервиса для digest-аутентификации в случае неудачи авторизации

Ответ

Заголовки

Тело

HTTP/1.0 401 Unauthorized

Server: HTTPd/0.9

Date: Sun, 10 Apr 2005 20:26:47 GMT

WWW-Authenticate: Digest realm="testrealm@host.com",

qop="auth,auth-int",

nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",

opaque="5ccc069c403ebaf9f0171e9517f40e41"

Content-Type: text/html

Content-Length: 311

-

Таблица 1.4 - Запрос клиента для digest-аутентификации (имя пользователя «User1», пароль «Password1»)

Запрос

Заголовки

Тело

Host: rucont.ru

GET /api/auth/session HTTP/1.0

Authorization: Digest username="User1",

realm="testrealm@host.com",

nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",

uri="/dir/index.html",

qop=auth,

nc=00000001,

cnonce="0a4f113b",

response="6629fae49393a05397450978507c4ef1",

opaque="5ccc069c403ebaf9f0171e9517f40e41"

-

Таблица 1.5 - Ответ сервера для digest-аутентификации в случае удачной авторизации (имя пользователя «User1», пароль «Password1»)

Запрос

Заголовки

Тело

HTTP/1.0 200 OK

Server: HTTPd/0.9

Date: Sun, 10 Apr 2005 20:27:03 GMT

Content-Type: text/html

Content-Length: 798

-

OAuth (oAuth2)

Принцип работы oAuth заключается в использовании временных токенов.

Недостатки:

сложнее в реализации,

является зависимым от состояния (аналогичен cookie - stateless),

уязвим к атакам man-in-the-middle, воспроизведения.

Схема действия:

Оправдывает свое использование для клиентов 3ей стороны: у них нет логина, пароля и разрешений аналогичных пользовательским, поэтому необходимо отдельно хранить все разрешения для независимых клиентов. Для этих целей разработчик получает ключ API (API key) - длинные уникальные строки, содержащие произвольный набор символов, по сути заменяющие собой комбинацию username/password, - а пользователи разрешают доступ к части их разрешений. Например: доступ на просмотр имени, почтового адреса и прочего[16].

После выдачи разрешений третьей стороне, ей выдается токен на доступ, по которому они получают доступ уже к пользовательским разрешениям. Схема действия по протоколу OAuth 2.0 представлена на рисунке 1.2.

Рисунок 1.2 - Схема действия Bearer-аутентификации

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

1.5 Пример использования: Amazon Web Services

Например, у пользователя есть веб-приложение, позволяющее загружать и просматривать фотографии, и он хочет использовать сервис Amazon S3 для хранения файлов. В таком случае, пользователь через консоль AWS может создать ключ, имеющий ограниченный доступ к облаку: только чтение/запись его файлов в Amazon S3. Этот ключ в результате можно применить для аутентификации веб-приложения в облаке AWS.

Рисунок 1.3 - Пример применения аутентификации по ключу.

Таблица 1.6 - Запрос клиента (RFC 6749) для получения токена

Запрос

Заголовки

Тело

GET /api/auth/token HTTP/1.0

Host: rucont.ru

Authorization: Basic mF_9.B5f-4.1JqM

-

Таблица 1.7 - Запрос клиента (RFC 6749) для получения авторизации по полученному токену

Запрос

Заголовки

Тело

GET /api/<id>/user_info HTTP/1.0

Host: rucont.ru

Authorization: Bearer mF_9.B5f-4.1JqM

-

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

С технической точки зрения, здесь не существует единого протокола: ключи могут передаваться в разных частях HTTP-запроса: URL query, request body или HTTP header. Как и в случае аутентификации по паролю, наиболее оптимальный вариант -- использование HTTP header. В некоторых случаях используют HTTP-схему Bearer для передачи токена в заголовке (Authorization: Bearer [token]). Чтобы избежать перехвата ключей, соединение с сервером должно быть обязательно защищено протоколом SSL/TLS [16].

Рисунок 1.4 - Пример аутентификации по ключу доступа, переданного в HTTP заголовке

Самый простой способ передачи таких данный (при условии использования SSL/TLS) - это рандомно созданный токен на доступ, который выставляется в поле username для HTTP Basic.

1.6 Аутентификация по Cookies

Схема действия:

В идеальном RESTful сервисе контроль за состояниями полностью производится на стороне клиента.

Для клиентов, помимо браузеров, COOKIES сложны в обработке.

Если говорить только о браузерах, то возможный сценарий использования такой:

- api смотрит на заголовок «Authorization», в случае не-браузерных клиентов именно туда будет помещена информация для авторизации

- если такой заголовок отсутсвует, то проверяется сессионная cookie для осуществления авторизации на стороне сервера.

Недостатки:

не отвечает требованиям RESTful сервиса в вопросе независимости от состояния,

уязвима к атакам man-in-the middle, воспроизведение,

на стороне сервера каким-то образом нужно хранить сессионную id, что противоречит REST-идеологии.

Таблица 1.6 - Запрос клиента (RFC 6749) для получения токена

Запрос

Заголовки

Тело

GET /api/<id>/user_info HTTP/1.0

Host: rucont.ru

Cookie: theme=light; sessionToken=abc123

-

1.7 Аутентификация по токенам и SSO

Такой способ аутентификации чаще всего применяется при построении распределенных систем, использующих единый сервис для входа (SSO), где одно приложение, выступающее в качестве Cервиса-поставщика (англ. «service provider», «relying party», «SP»), - в данной работе это один из описанных во введении Сервисов, - делегирует функцию аутентификации пользователей другому приложению (identity provider или authentication service). Такое приложение представляет собой сервис-поставщик идентификационных услуг. Сервис-поставщик идентификационных услуг (англ. «identity provider», ««identity assertion provider», «IdP») - решает следующие основные задачи:

предоставляет идентификаторы пользователей, взаимодействующих с системой;

предоставляет подтверждение того факта, что такой идентификатор известен сервису-поставщику;

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

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

Реализация этого способа заключается в том, что IdP-сервис предоставляет достоверные сведения о пользователе в виде токена, а SP-приложение использует этот токен для идентификации, аутентификации и авторизации пользователя.

На общем уровне, весь процесс выглядит следующим образом:

клиент аутентифицируется в identity provider одним из способов, специфичным для него (пароль, ключ доступа, сертификат, Kerberos, итд.);

клиент просит identity provider предоставить ему токен для конкретного SP-приложения. Identity provider генерирует токен и отправляет его клиенту;

клиент аутентифицируется в SP-приложении при помощи этого токена.

Рисунок 1.5 - Пример аутентификации «активного» клиента при помощи токена, переданного посредством Bearer-схемы.

Процесс, описанный выше, отражает механизм аутентификации активного клиента, т. е. такого, который может выполнять запрограммированную последовательность действий (например, iOS/Android приложения). Браузер же -- пассивный клиент в том смысле, что он только может отображать страницы, запрошенные пользователем. В этом случае аутентификация достигается посредством автоматического перенаправления браузера между веб-приложениями IdP и SP.

Рисунок 1.6 - Пример аутентификации «пассивного» клиента посредством перенаправления запросов

Существует несколько стандартов, в точности определяющих протокол взаимодействия между клиентами (активными и пассивными) и IP/SP-приложениями и формат поддерживаемых токенов. Среди наиболее популярных стандартов -- OAuth, OpenID Connect, SAML, и WS-Federation.

Сам токен обычно представляет собой структуру данных, которая содержит информацию, кто сгенерировал токен, кто может быть получателем токена, срок действия, набор сведений о самом пользователе (claims). Кроме того, токен дополнительно подписывается для предотвращения несанкционированных изменений и гарантий подлинности.

При аутентификации с помощью токена SP-приложение должно выполнить следующие проверки:

токен был выдан доверенным identity provider приложением (проверка поля issuer);

токен предназначается текущему SP-приложению (проверка поля audience);

срок действия токена еще не истек (проверка поля expiration date);

токен подлинный и не был изменен (проверка подписи).

В случае успешной проверки SP-приложение выполняет авторизацию запроса на основании данных о пользователе, содержащихся в токене[16].

Выбор способов аутентификации

Выбор способ аутентификации находится в зависимости от назначения API, а также основных типов клиентов, для которых предназначено данное API.

Назначением API может быть следующее:

основное назначение. Взаимодействие с front-end частью системы для выполнения основной бизнес-логики системы

вторичное. Использование методов, предоставляемых API, сторонними приложениями;

точка доступа для осуществления однократного входа пользователя в рамках использования нескольких систем ООО НЦР «РУКОНТ».

Основные типы клиентов можно подразделить на

браузерные;

не браузерные.

Отсюда можно сделать вывод о необходимости внедрения двух способов аутентификации.

аутентификация по cookie, являющаяся классическим решением, применяющимся для браузеров;

аутентификация по токену, являющаяся широко распространенным решением для RESTful сервисов.

О технологии

Web API применяет спецификацию Oath2, которая описывает механизм аутентификации на основе токенов. Конкретную реализацию этой спецификации представляют компоненты OWIN, благодаря которым и производит генерация токенов, их выдача клиенту и их дальнейшая валидация. Поэтому при создании приложения Web API нам не надо самим реализовывать сервер авторизации, все эти детали, а досточно взять готовый механизм, который предоставляет ASP.NET [17].

2. Реализация аутентификации и авторизации

2.1 Аутентификация по cookie

Для реализации метода входа в систему с дальнейшим присвоением пользователю аутентифкационной cookie была выбрана стандартная реализация, имплементированная в OWIN Middleware.

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

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

срок действия cookie - 12 часов с момента аутентификации;

режим аутентификации - активный, что гарантирует создание пользовательской сущности как только получен запрос;

название cookie - rucontAPI.

Реализация аутентификации по cookie включает следующие два метода:

POST api/account/session - вход в систему;

DELETE api/account/session - выход из системы.

Блок-схемы алгоритмов аутентификации и выхода из учетной записи представлены на рисунках 2.1 и 2.2.

Рисунок 2.1 - Блок-схема алгоритма аутентификации пользователя по cookie

Рисунок 2.2- Блок-схема алгоритма аутентификации пользователя по cookie

Исходные коды методов представлены в приложении 1.

2.2 Аутентификация по токену

Авторизация на основе токенов состоит из нескольких компонентов:

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

веб-сервис, к ресурсу которого обращается клиент;

токен доступа (access token), наличие которого дает доступ к ресурсам веб-сервиса;

Bearer-токен - специальный вид токена доступа;

сервер авторизации, который выдает токены доступа клиенту.

Весь процесс аутентификации выглядит следующим образом, представленным на рисунке 2.3.

Рисунок 2.3 - Схема процесса аутентификации по токену

Пользователь вводит данные авторизации (логин, пароль) и нажимает на кнопку отправки;

клиент (веб-браузер) отправляет данные серверу авторизации;

сервер авторизации аутентифицирует пользователя и возвращает токен доступа;

для доступа к ресурсу веб-сервиса клиент добавляет в запрос ранее полученный токен доступа.

Хотя выше сервер авторизации и веб-сервис, но в реальности они могут быть объединены, как это и происходит в приложении Web API (рисунок 2.4).

Размещено на http://www.allbest.ru/

[Введите текст]

Рисунок 2.4 - Объединение сервера авторизации и веб-сервиса

Отличием технологии OAuth 2.0 является то, что, поскольку она не относится к разряду аутентификационных протоколов, в ней не существует такого понятия, как выход из системы. Все можно сделать для отключения доступа пользователя - это удалить токен доступа на стороне клиента. В связи с этим реализация аутентификации пользователя для дальнейшего использования ресурсов API требует доработки. Доработка заключается во вводе понятия сессии и создания сессионного хранилища, что обеспечивает возможность управления токенами в плане присвоения такового пользователю, а также принудительного выхода из системы по требованию пользователя.

Настройки аутентификации по токену имеют следующие параметры:

срок действия токена - 14 дней с момента аутентификаци;

режим аутентификации - пассивный.

Проектирование таблицы в базе данных Identity

Для обеспечения хранения информации о «сессиях» в базе данных Identity спроектируем дополнительную таблицу UserSession. Схема базы данных в части обеспечения хранения сессии пользователя представлена на рисунке 2.3

Рисунок 2.3 - Схема базы данных в части обеспечения хранения сессии пользователя

2.3 Реализация аутентификации по токену

Реализация аутентификации по cookie включает следующие два метода:

POST api/account/token - вход в систему;

DELETE api/account/token - выход из системы.

Блок-схемы алгоритмов аутентификации и выхода из учетной записи представлены на рисунках 2.5 и 2.6.

Рисунок 2.5 - Блок-схема алгоритма аутентификации пользователя по токену

Рисунок 2.6 - Блок-схема алгоритма аутентификации пользователя по токену

Исходные коды методов представлены в приложении 2.

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

3. Регистрация пользователя и управление паролем

Наряду с процедурой аутентификации и авторизации пользователя также были реализованы метод регистрации пользователя и управления его паролем:

Регистрация - POST api/account/register;

Смена пароля авторизованного пользователя - PUT api/account/password;

Запрос токена для сброса пароля неавторизованным пользователем DELETE api/account/password;

Сброс пароля по токену неавторизованным пользователем POST api/account/password?token=<token>&email=<email>.

3.1 Проверка работоспособности реализованных методов

Аутентификация по cookie

Запрос на аутентификацию по cookie

Рисунок 3.1 - Запрос на вход в систему по cookie

Таблица 3.1 - Ответ в случае успешного входа в систему

Ответ

Заголовки

Тело

Response Status 200:OK

Сache-Control: no-cachePragma: no-cacheExpires: -1Server: Microsoft-IIS/8.0Access-Control-Allow-Origin: chrome-extension://hgmloofddffdnphfgcellkdfbfbjeloo

Access-Control-Allow-Credentials: trueX-AspNet-Version: 4.0.30319

Set-Cookie: rucontAPI=kLWSrXVniz-Pdfks0PZBmgWMBwegWZ_0HD_DswN-WOKSV2uCk-GdDGFGDEmc7f8r_fzQjZxHKSW5Au0g8Ma8Z-wT-my8CfFym7ECq-uiLMQirDS3o-6VWDZk-3NjoG41N8wXdJpimhE152EON-ZLBWE5KfjSL0pVVDSN1bcPRTvQSuqW1-76rvsC97TIonIa1z4XHee9Um5jaY3tMkXGORx2cNX2r9qgi96D-TBssA5wiaxnvbaj9PuLk6biTFm_5Dq9BEHSPoeLExqj7Q17DVh37ewz8uh9i7jDkTBo_GS8eBf1BOnAUw3fNxTmvu-BBGu_yKHE1SKTvY2kAGjy6ByQ6uGELxKgzZy9tTiLCu-Z0wvp4ivj6vLAHr00wHs5gtMBrgXtxYndtAa1MGur6QlIE8dI95O4Ux4ySjVOWBmREbECT14IBgKC1mEhyAYVJ9ZpMHoTbCdUU3oK9ZYmV8CpEwLaXEkBGe1-uPiHIC0; path=/; HttpOnly

X-SourceFiles: =?UTF-8?B?RDpcTmV3UnVjb250XFJ1Y29udEFQSVxhcGlcYWNjb3VudFxzZXNzaW9u?=

X-Powered-By: ASP.NETDate: Tue, 29 Mar 2016 10:01:44 GMT

Content-Length: 0

3.2 Вызов метода, требующего авторизации по cookie

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

Рисунок 3.2 - Вызов метода, требующего авторизации

3.3 Выход из аккаунта

Пользователь может самостоятельно инициировать выход из системы, не дожидаясь окончания срока действия аутентификационной cookie.

Рисунок 3.3 - Вызов метода, осуществляющего аутентификацию пользователя по токену

Таблица 3.2 - Ответ в случае успешного выхода из системы

Ответ

Заголовки

Тело

Response Status 200:OK

Сache-Control: no-cache Pragma: no-cache Content-Type: application/json; charset=utf-8 Expires: -1 Server: Microsoft-IIS/8.0

Access-Control-Allow-Origin: chrome-extension://hgmloofddffdnphfgcellkdfbfbjelooAccess-Control-Allow-Credentials: true X-AspNet-Version: 4.0.30319

Set-Cookie: rucontAPI=; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT

X-SourceFiles: =?UTF-8?B?RDpcTmV3UnVjb250XFJ1Y29udEFQSVxhcGlcYWNjb3VudFxzZXNzaW9u?=X-Powered-By: ASP.NETDate: Tue, 29 Mar 2016 10:05:30 GMT

Content-Length: 32

{

"message": "Logout successful."

}

Как видно из ответа, данный метод обнуляет значение аутентификационной cookie. После осуществления выхода из системы при повторном вызове метода, требующего авторизации (рисунок 3.2), будет получен ответ со следующим содержанием.

Таблица 3.3 - Ответ в случае вызова метода, требующего авторизации, после выхода из системы

Ответ

Заголовки

Тело

Response Status 401: Unauthrized

Cache-Control: no-cache Pragma: no-cache

Content-Type: application/json; charset=utf-8

Expires: -1

Server: Microsoft-IIS/8.0 X-AspNet-Version: 4.0.30319

WWW-Authenticate: Bearer X-SourceFiles: =?UTF-8?B?RDpcTmV3UnVjb250XFJ1Y29udEFQSVxhcGlcdmFsdWVz?=X-Powered-By: ASP.NETDate: Tue, 29 Mar 2016 10:06:44 GMT

Content-Length: 61

{

"message": "Authorization has been denied for this request."

}

3.4 Аутентификация по токену

Запрос на вход по токену

Рисунок 3.4 - Вызов метода, осуществляющего аутентификацию по токену

Таблица 3.4 - Ответ в случае успешной аутентификации по токену

Ответ

Заголовки

Тело

Response Status 200:OK

Cache-Control: no-cache

Pragma: no-cache

Content-Length: 846

Content-Type: application/json; charset=UTF-8

Expires: -1

Server: Microsoft-IIS/8.0

Access-Control-Allow-Origin: chrome-extension://hgmloofddffdnphfgcellkdfbfbjeloo

Access-Control-Allow-Credentials: true

X-SourceFiles: =?UTF-8?B?RDpcTmV3UnVjb250XFJ1Y29udEFQSVxUb2tlbg==?=

Set-Cookie: rucontAPI=ilOhvVHHQN97s2PdCl9khTKgz2t5mMx89GJSe-bNF6stRx0zVZsf0878ILXPu2ipVLOxLN3BNKfTlTgG1yJrZzztF5lzIvsIQuZr88W1DCW0wkxuUXKQZHOX-68CVq_MQaCcRe_ZUlOOB0FB5T2a-mG9973xrSL0Q59eAzbFSIf1JmYUoZdyVeFxWQp8hNNXRzk7CFg0NnaXmQxbNj0dUQa-9Dr4rPqC6dqUt-n17MdXbdAcRBC3HLIRBA0T8sUgeZCQHbpCZN4nnirYM2V6mcqG0pk8b69-QdTatiNM_jSUsumDNZ0-NMidAjsM_BFvLDJ1zbCRd1Ly-eLiC2ncRdO8O6oRDLHeKZ9lQbEHRMPVwyQx-XnV9ZC_1rH5mKC3MWT75ZFav00Xk9SFl6HTLHPSJ3jsVbJ1nUeRunFdfJUv3d10as2D5qbIHZj7moek_ymq5UOaH9ckKD6wOWKFuaN6WHMVIpHF5-OxExL3_ck; path=/; HttpOnly

Server: Microsoft-IIS/8.0

X-Powered-By: ASP.NET

X-AspNet-Version: 4.0.30319

X-Powered-By: ASP.NET

Date: Tue, 29 Mar 2016 10:08:59 GMT

{

"access_token": "kCVPxvyGli4w9JErgQWXOefl2AQ6AIxUS4FHuu15xWN0XjKkKNOzrjOTAPEmvjtxX0cT4h7MaqGXyjxL9Hk-zAT-n8jy2pb5dnZ6jVT-i12Q5Od6MpGdU7WkMhAj-psCs86Ok1QfjAf94_BAlCL59gjk08LhUoUF4K9cp415y4dpkkPamTxAKYQ0Zlqnt5UihUhRdKAT7JqEpkPoPw9AL-9V3PDT9X5HhUNGNuTdkw8TrOeVTAjP_2fbLqjUlMdwVhnWgiEEbUj5iIvVDrb2zErvx7wqfboy4UyqaWvnLQA7rD1oMTMEipeLM3tPqrSB1Rl5oh2sWIXhW9CuiGA3wWOVm3_qVldhdi2Fa_Nncm_FIPDD3_4dVkLQgLrojcgwRMNnSuTG598fqJWUfCeZRZnpdZdoKodm44HxNcVFXBWDqvEpTsm3lRRJPtDA6ER4SEOwoPx5RNfa4X6j5jzrZxNDk3ttali3MdNg-4BYM3nkGFbMCI62fLjUU9vH9XG7MvYaI08h03FvFsa7hGeMCLd1S3saEXAX3lLuOUQD-80"

"token_type": "bearer"

"expires_in": 1209599

"userName": "sozinova@akc.ru"

"userId": "458a8828-b4bf-49f3-b326-cb3f134301e2"

"redirectUrl": "api//user_info458a8828-b4bf-49f3-b326-cb3f134301e2"

".issued": "Tue, 29 Mar 2016 10:08:56 GMT"

".expires": "Tue, 12 Apr 2016 10:08:56 GMT"

}

Вызов метода, требующего авторизации по токену

Рисунок 3.5 - Вызов метода, требующего авторизации по токену

Таблица 3.5 - Ответ в случае успешной аутентификации по токену

Ответ

Заголовки

Тело

Response Status 200:OK

Cache-Control: no-cache

Pragma: no-cache

Content-Type: application/json; charset=utf-

8Expires: -1Server: Microsoft-IIS/8.0

X-AspNet-Version: 4.0.30319

X-SourceFiles: =?UTF-8?B?RDpcTmV3UnVjb250XFJ1Y29udEFQSVxhcGlcdmFsdWVzXDU=?=

X-Powered-By: ASP.NETDate: Tue, 29 Mar 2016 10:11:32 GMT

Content-Length: 7

"value"

Выход из аккаунта

Рисунок 3.6 - Вызов метода для выхода из аккаунта

Таблица 3.6 - Ответ в случае успешного выхода из системы

Ответ

Заголовки

Тело

Response Status 200:OK

Cache-Control: no-cache

Pragma: no-cache

Content-Type: application/json; charset=utf-8

Expires: -1

Server: Microsoft-IIS/8.0

Access-Control-Allow-Origin: chrome-extension://hgmloofddffdnphfgcellkdfbfbjelooAccess-Control-Allow-Credentials: trueX-AspNet-Version: 4.0.30319

X-SourceFiles: =?UTF-8?B?RDpcTmV3UnVjb250XFJ1Y29udEFQSVxhcGlcYWNjb3VudFx0b2tlbg==?=

X-Powered-By: ASP.NET

Date: Tue, 29 Mar 2016 10:13:53 GMT

Content-Length: 32

{

"message": "Logout successful."

}

Попытка вызова метода, требующего авторизации, не увенчается успехом, так как из базы сессия пользователя была удалена во время осуществления выхода (рисунок 3.5).

Таблица 3.7 - Ответ в случае неавторизованного вызова метода, требующего аутентификации по токену

Ответ

Заголовки

Тело

Response Status 401:Unauthrized

Cache-Control: no-cache

Pragma: no-cache

Content-Length: 35

Content-Type: text/plain; charset=utf-8

Expires: -1

Server: Microsoft-IIS/8.0

X-AspNet-Version: 4.0.30319

X-SourceFiles: =?UTF-8?B?RDpcTmV3UnVjb250XFJ1Y29udEFQSVxhcGlcdmFsdWVzXDU=?=

X-Powered-By: ASP.NETDate: Tue, 29 Mar 2016 10:15:08 GMT

Session token expried or not valid.

3.5 Проектирование системы единой аутентификации

Single Sign On - механизм единого входа в систему или в приложение, принцип работы которого состоит в распознавании любого интерфейса процесса аутентификации и автоматического заполнения формы ввода пароля для каждого корпоративного приложения. Другими словами, решения на основе SSO осуществляют аутентификацию во все приложения вместо пользователя, при этом исключают необходимость запоминания множества паролей и сокращают время доступа к приложениям. Ключевыми особенностями таких решений являются быстрая реакция на действия пользователя и отсутствие внесения каких-либо сценариев или изменений в существующие процессы аутентификации приложений [18].

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

Проектирование технологии единого входа может пойти по двум направлениям в зависимости от этапа, на котором происходит переход к сервису идентификации:

«незатребованная» или инициированная идентификационным сервисом идентификация и аутентификация (англ. «unsolicited»),

«затребованная» или инициированная сервсисом-поставщиком идентификация и аутентификация аутентификация (англ. «unsolicited») [19].

В перовом случае пользователь посещает идентификационный сервис и аутентифицирован в нем. Затем при обращении пользователем к Серису-поставщику идентифицирующий сервис отправляет данные с утверждениями о том, что пользователь идентифицирован, аутентифицирован и другой необходимой информацией о пользователе, после чего пользователь будет успешно авторизован в Сервисе-поставщике

Второй случай - это сценарий, в котором при использовании Сервсиа-поставщика происходит перенаправление пользователя к идентифицирующему сервису для установления его «личности». В случае положительного ответа от идентификационного сервиса, SP авторизует пользователя в системе. К данному сценарию можно отнести активно используемую на многих веб-сайтах возможность войти в систему при помощи социальной сети.

В пункте 1.2.5 уже были упомянуты основные компоненты, которые в совокупности представляют собой систему единого входа. Перечислим их еще раз:

- идентификационный сервер,

- сервер-провайдер (любой Сервис из описанных в данной работе),

- безопасное соединение протокол взаимодействия между IdP и SP.

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

Исходные данные к задаче проектирования системы единого входа

Как уже было описано во введении, существует несколько Сервисов, каждый из которых имеет выход в сеть Интернет. Иными словами - это веб-сайты, предоставляющие услуги в сфере распространения различного вида литературы.

Основной целевой аудиторией каждого из представленных сайтов являются внешние пользователи.

Каждая из систем абсолютно автономна и независима от любой другой из описанных.

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

4. Проектирование системы

Система аутентификации «Контекстум-ID» (далее Система) должна иметь архитектуру, представленную на рисунке 4.1.

Рисунок 4.1 - Архитектура Системы SSO

На диаграмме представлены следующие компоненты:

Сервис1 - Сервис3 - сервисы консорциума «Контекстум»;

OpenID провайдеры - внешние сервисы, предоставляющие аутентификацию по протоколу OpenID;

ID-Сервер - сервер аутентификации;

Логин-Сервер - сервер с интерфейсом аутентификации;

IDDB - база данных с аутентификационными данными пользователей.

Логин-сервер и ID-сервер архитектурно являются разными сущностями, но очень тесно связаны и на практике планируется реализовывать их как один сервер. Тем не менее во всех диаграммах они присутствуют раздельно.

4.2 Назначение компонентов системы

Login-сервер

Login-сервер обеспечивает контроль данных аутентификации пользователей, принимает запросы от Сервисов на идентификацию пользователя.

ID-Сервер

ID-Сервер обеспечивает контроль над данными пользователей, производит идентификацию пользователя, перенаправляет пользователя на Сервисы с данными аутентификации.

IDDB

База данных пользовательских ID обеспечивает хранение и репликацию аутентификационных данных пользователей Сервисов. Этот модуль не должен содержать данных о ролях и правах пользователей.

Сервис

Сервисы в рамках Системы обеспечивают контроль над авторизацией пользователей, перенаправление не аутентифицированных пользователей на ID-Сервер, коммуникацию с ID-Сервером для поддержания актуальности сессии пользователей. Хранение данных о ролях и правах пользователей обеспечивается модулями авторизации Сервисов. В целях синхронизации баз данных Сервисов и ID-Сервера на стороне Сервисов должна быть реализована возможность создания, изменения и удаления пользовательских данных по запросу от ID-Сервера (по защищённым каналам связи), например, по протоколу JSON-RPC или SOAP.

4.3 Структура взаимодействия компонентов системы

Компоненты должны взаимодействовать таким образом, чтобы была возможность обеспечить незаметный для пользователя переход между Сервисами. Для этого при первичном переходе пользователя на сайт Сервиса необходимо проверять наличие активной сессии пользователя на ID-Сервере. В случае наличия такой сессии, ID-Сервер посылает данные, необходимые для авторизации пользователя Сервису, а Сервис в свою очередь, используя эти данные инициализирует сессию пользователя на своей стороне. В случае отсутствия сессии на ID-Сервере пользователю инициализируется временная «гостевая» сессия до востребования повышения полномочий. Всего предполагается несколько вариантов взаимодействия компонентов Системы, в зависимости от поведения пользователя. При этом пользователь может быть Авторизован/Не авторизован, посещать разделы требующие авторизации/не требующие авторизации, может самостоятельно инициализировать вход на Login-Сервер. Для комбинации этих вариантов взаимодействия предлагается следующие ряд схем, описание которых приводится ниже.

4.4 Неавторизованный пользователь

При посещении пользователем сайта Сервиса впервые инициализируется последовательность, описанная на диаграммах 4.2-4.3.

Рисунок 4.2 - Инициализация запроса к сервису неавторизованным пользователем к незащищенному ресурсу

Рисунок 4.3 - Инициализация запроса к сервису неавторизованным пользователем к защищенному ресурсу

4.5 Login-последовательность

Если требуется авторизация пользователя Сервисом либо самим пользователем инициируется следующая последовательность:

Рисунок 4.4 - Схема формирования базы данных пользователей

В целях аутентификации пользователей на ID-Сервере создаётся база данных пользователей, агрегирующая всех пользователей Сервисов на момент запуска системы. Модификация баз данных пользователей на стороне Сервисов требуется в ограниченном объёме, должна обеспечивать возможность авторизации пользователя по сообщению ID-Сервера без ввода пароля и не должна влиять на структуру базы.

Так как базы данных Сервисов в настоящий момент имеют различные структуры и не имеют единого набора полей, то предполагается объединить структуры баз данных Сервисов на ID-Сервере следующим образом:

Предположим, что в базах данных Сервисов хранятся следующие поля:

Сервис1:

Login

E-Mail

PassHash

Сервис2:

E-Mail

PassHash

Сервис3:

E-Mail

PassHash

Тогда база данных на ID-Сервере должна хранить следующие поля (предполагается идентификация уникального пользователя по полю E-Mail, о разрешении конфликтов в таком подходе см. далее):

Login

E-Mail

PassHash1

PassHash2

PassHash3

При этом в том случае, если на нескольких Сервисах существуют пользователи с одним и тем же E-Mail, производится слияние этих записей в одну. Но приоритет остаётся за сервисом НЦР «РУКОНТ». В случае, если пользователь с правами Админ или аналогичными на Сервисе НЦР «РУКОНТ» зарегистрирован c почтовым адресом, конфликтующим с записями в базах данных какого-либо другого Сервиса, остаётся только запись Сервиса НЦР «РУКОНТ» (Конфликтующие записи рекомендуется хранить в отдельной базе данных для разрешения конфликта в ручном режиме).

Пароли пользователей переносятся в базу данных ID-Сервера в неизменном виде (в HASH), об использовании того или иного пароля пользователя спросят при первом визите, то тех пор он сможет зайти по любому из личных паролей, использовавшихся на сайтах Сервисов.

4.6 Протоколы взаимодействия

Для взаимодействия компонентов системы предполагается использовать протокол SAML2 для передачи идентификационных данных пользователей. Если в процессе разработки выяснятся принципиальные особенности Сервисов, не позволяющие использовать протокол SAML2, можно использовать любой другой протокол над HTTP, вплоть до передачи данных в виде JSON, но с шифрованием, потому что коммуникация будет производиться по сети Интернет.

Для организации возможности аутентификации через социальные сети предполагается использование протокола OpenID. Вся коммуникация пользователя через браузер должна производиться по протоколу HTTPS с шифрованием SSL, чтобы избежать атак с подменой пользователя.

4.7 Протокол SAML 2.0

Язык разметки для систем безопасности - это структура, базированная на XML для описания и обмена конфиденциальной информацией между двумя партнерами в сети. Эта конфиденциальная информация передается в форме поддающихся передаче и разбору SAML-утверждений, которым приложения v могут доверять в рамках домена безопасности [20].

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

- система сквозной аутентификации

- хранилище совокупности идентификационных данных пользователей всех систем

- веб сервисы и прочие стандарты в рамках функционирования системы.

Базовая концепция SAML включает следующие составляющие:

- Утверждения - некая информация о принципале, достоверность которой заверена утверждающей стороной. Структура и контент этих утверждений определена в прописанной в SAML-протоколе XML-схеме;

- Связи - способы, которыми взаимодействие на более низком уровне или прикладные протоколы используются для передачи сообщений по протоколу SAML между участниками.

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

- Метаданные - определяет способ для задания и распространения конфигурационной информации между сторонами

- контекст аутентификации - детализация информации о типе и степени надежности механизма аутентификации, который прошел пользователь в идентифицирующем сервисе.

5. Реализация идентификационного сервиса в качестве основы Системы

5.1 База данных

Как было описано в пункте 4.6.1, основным компонентом для построения полноценной системы единой аутентификации является хранилище совокупности идентификационных данных пользователей всех систем. В ходе создания API с методами регистрации и «залогинивания» пользователя уже была спроектирована и настроена база данных - хранилище всех учетных данных пользователей для авторизации в данном API. База данных была построена на основе стандартной технологии ASP.NET Identity. Схема спроектированной базы данных представлена на рисунке 5.1.

Рисунок 5.1 - Схема базы данных пользователей API

Основной задачей данной работы является построение поставщика идентификации. Данная задача решена при помощи надстройки существующей базы данных ASP.NET Identity. А рисунке 5.2 представлена схема таблицы «AspNetUsers», в которой собраны учетные данные о всех существующих на данный момент пользователях в базах данных «Руконт», «Руаест», «Руконтекст».

Рисунок 5.1 - Схема таблицы «AspNetUsers»

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

Также в ходе построения «центральной» базы данных (БД) были настроены репликации для сопоставления учетной записи пользователя в центральной БД с учетной записью пользователя в базе данных Сервиса. Это прежде всего диктуется тем, что разграничение прав доступа контролируется на уровне каждого Сервиса отдельно, а значит процедура авторизации происходит на стороне Сервиса-поставщика. Пример триггера для репликации учетной записи нового пользователя приведен в приложении 4.

5.2 Идентификационный сервис

Для реализации сервиса идентификации были созданы несколько контроллеров:

DiscoveryServiceController,

MetadataController.

FederationController,

и, наконец, тот, с которым работает конечный пользователь - IdPController.

...

Подобные документы

  • Трансляция полей формы. Метод аутентификации в Web как требование к посетителям предоставить имя пользователя и пароль. Форма для передачи данных. Использование базу данных для хранения паролей. Разработка сценарий для аутентификации посетителей.

    лекция [225,0 K], добавлен 27.04.2009

  • Понятие процесса биометрической аутентификации. Технология и вероятность ошибок аутентификации по отпечатку пальца, радужной оболочке или по сетчатке глаза, по геометрии руки и лица человека, по термограмме лица, по голосу, по рукописному почерку.

    презентация [1,2 M], добавлен 03.05.2014

  • Разработка средствами языка PHP и Фреймворка Yii системы регистрации и аутентификации пользователей на сайте. Проектирование приложения с помощью языка UML, построение диаграммы прецедентов. База данных приложения. Страница регистрации пользователей.

    отчет по практике [1,1 M], добавлен 15.09.2014

  • Обеспечение безопасности сетевого соединения. Процесс аутентификации при установке соединения и процесс передачи данных. Использование криптостойкого шифрования. Протокол аутентификации Kerberos. Основные этапы процедуры аутентификации клиента.

    презентация [162,8 K], добавлен 10.09.2013

  • Использование электронных ключей как средства аутентификации пользователей. Анализ методов идентификации и аутентификации с точки зрения применяемых в них технологий. Установка и настройка средств аутентификации "Rutoken", управление драйверами.

    курсовая работа [4,6 M], добавлен 11.01.2013

  • Разработка предложений по внедрению биометрической аутентификации пользователей линейной вычислительной сети. Сущность и характеристика статических и динамических методов аутентификации пользователей. Методы устранения угроз, параметры службы защиты.

    курсовая работа [347,3 K], добавлен 25.04.2014

  • Разработка подключаемых модулей аутентификации как средства аутентификации пользователей. Модуль Linux-PAM в составе дистрибутивов Linux. Принцип работы, администрирование, ограничение по времени и ресурсам. Обзор подключаемых модулей аутентификации.

    курсовая работа [192,0 K], добавлен 29.01.2011

  • Создание базы данных для хранения информации о пользователях системы. Применение механизма аутентификации и управления сессиями. Описание программных мер, предпринятых для обеспечения безопасности информационных ресурсов образовательного веб-портала.

    дипломная работа [2,2 M], добавлен 27.06.2012

  • Нормативно-правовые документы в сфере информационной безопасности в России. Анализ угроз информационных систем. Характеристика организации системы защиты персональных данных клиники. Внедрение системы аутентификации с использованием электронных ключей.

    дипломная работа [2,5 M], добавлен 31.10.2016

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

    дипломная работа [917,1 K], добавлен 31.01.2015

  • Основные угрозы по отношению к информации. Понятия, методы и способы обеспечения защиты данных. Требования к системе защиты. Механизм авторизации в информационной базе для определения типа пользователя. Работа администратора с системой безопасности.

    курсовая работа [201,1 K], добавлен 24.06.2013

  • Общая характеристика киноиндустрии как предметной области работы. Разработка базы данных и дерева вопросов для получения информации для выбора фильма. Программная реализация экспертной системы. Тестирование системы и создание руководства пользователя.

    курсовая работа [1,9 M], добавлен 19.05.2014

  • Понятие безопасности данных. Базовые технологии сетевой аутентификации информации на основе многоразового и одноразового паролей: авторизация доступа, аудит. Сертифицирующие центры, инфраструктура с открытыми ключами, цифровая подпись, программные коды.

    курсовая работа [861,3 K], добавлен 23.12.2014

  • Информационные задачи и круг пользователей системы. Выработка требований и ограничений. Разработка проекта базы данных. Программная реализация проекта базы данных. Разработка хранимых процедур для поддержки сложных ограничений целостности в базе данных.

    курсовая работа [706,2 K], добавлен 17.06.2012

  • Разработка web-приложения для оперирования данными с помощью базы данных и web-браузера в качестве клиента пользователя. Основные преимущества языка программирования Java. Осуществление редактирования, добавления информации и поиска по архивам данных.

    дипломная работа [2,1 M], добавлен 30.09.2016

  • Анализ предметной области. Разработка информационной системы для регистратуры поликлиники. Построение диаграмм и моделей с использование объектно-ориентированного подхода. Формы, таблицы, отчеты и запросы. Создание, редактирование и обработка данных.

    курсовая работа [2,7 M], добавлен 04.12.2015

  • Системный анализ предметной области. Нормальные формы таблиц. Физическое проектирование базы данных. Реализация структуры БД в СУБД MySQL. Запросы на создание таблиц, добавление и выборку данных. Реализация триггера и функции. Программный код WEB-страниц.

    курсовая работа [748,9 K], добавлен 01.11.2014

  • Проектирование базы данных для автоматизированной системы "Склад". Разработка концептуальной модели (ER-диаграмма). Преобразование в реляционную модель и ее нормализация. Разработка запросов к базе данных на языке SQL. Скрипт для создания базы данных.

    курсовая работа [161,8 K], добавлен 07.10.2013

  • Определения криптографии как практической дисциплины, изучающей и разрабатывающей способы шифрования сообщений. История развития шифров. Хэш-функции и понятие электронной подписи. Системы идентификации, аутентификации и сертификации открытых ключей.

    реферат [77,1 K], добавлен 10.12.2011

  • Понятие офтальмологии, виды и методы ее диагностики. Глазные заболевания и их симптомы. Применимость экспертных систем. Проектирование модели байесовской сети. Разработка инфологической модели базы данных. Руководство пользователя и тестирование системы.

    дипломная работа [1,4 M], добавлен 13.11.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.