Обобщенный алгоритм работы серверных модулей систем Pseudo-SSO
© Кирилл Аверченко, Сергей Панасенко, 2011.
Системы единой аутентификации (SSO) помогают решить проблему хранения и использования множества пар «идентификатор (логин) – пароль» для доступа пользователя к различным ресурсам. Одним из двух основных типов SSO-систем являются системы Pseudo-SSO. Их основная особенность состоит в том, что они, однократно аутентифицировав пользователя, в дальнейшем только используют учетные данные, соответствующие аутентифицированному пользователю, для доступа к требуемому ресурсу. В данной работе мы предлагаем обобщенную схему взаимодействия пользователя и серверных модулей систем единой аутентификации.
В настоящее время пользователи ресурсов часто сталкиваются с ситуацией, когда необходимо запоминать большое количество аутентифицирующей информации (прежде всего, паролей) для доступа к различным ресурсам сети. Нередко такая необходимость приводит к тому, что пользователь либо записывает учетные данные на бумаге или в компьютерном файле, либо использует одни и те же данные для доступа к разным ресурсам. Оба этих варианта снижают безопасность и могут позволить злоумышленнику получить доступ ко многим ресурсам при компрометации аутентифицирующей информации на одном из них.
В этом случае может помочь единая аутентификация. Схема работы данной технологии довольно проста. Пользователь один раз аутентифицируется на сервере, а далее этот сервер аутентифицирует пользователя при обращении к нужным ресурсам.
Широко известными примерами реализаций единой аутентификации являются протокол OpenID, использующийся в LiveJournal, и сервис Windows Live ID, который позволяет получить доступ ко многим ресурсам Microsoft.
Системам единой аутентификации и их реализациям посвящено множество работ. Приведем некоторые из них в качестве примера.
В данной работе мы предлагаем обобщенную схему взаимодействия пользователя и серверных модулей систем единой аутентификации. Данная схема обобщает использование Pseudo-SSO систем.
Системы Pseudo-SSO
Понятие Pseudo-SSO было введено в работе [7], авторы которой представили классификацию систем SSO, разделив их на две основные категории:
Основная особенность Pseudo-SSO систем состоит в том, что они, однократно аутентифицировав пользователя, в дальнейшем, при необходимости доступа пользователя к какому-либо ресурсу системы, лишь используют некие учетные данные (скажем, логин и пароль), соответствующие аутентифицированному пользователю, для доступа к требуемому ресурсу. Схема Pseudo-SSO системы приведена на рис. 1.
Основное отличие систем True SSO от Pseudo-SSO заключается в том, что True SSO компонент представляет собой аутентифицирующий сервис (Authentication Service Provider – ASP), который активно участвует в обмене аутентифицирующей информацией между пользователем и ресурсами (рис. 2). Кроме того, в системах True SSO отношение «учетные данные/сервис» может быть «многие ко многим». Таким образом, пользователь потенциально может выбрать один из нескольких идентификаторов для данного сервиса, а также этот идентификатор может быть использован для нескольких сервисов.
В следующем разделе представим обобщенный механизм работы Pseudo-SSO систем.
Обобщение алгоритма работы систем Pseudo-SSO
Описанная в предыдущем разделе Pseudo-SSO система позволяет выполнять аутентификацию пользователя однократно в каждом сеансе его работы в рамках некоей распределенной системы – все дополнительные действия по аутентификации пользователя будет выполнять (без дополнительного обращения к пользователю) компонент Pseudo-SSO. Фактически, пользователь делегирует полномочия по его аутентификации данному компоненту, который играет роль сервера-посредника, при необходимости применяя хранящуюся на нем информацию о пользователе для выполнения его аутентификации и перенаправляя запросы от клиента к необходимому сервису (ресурсу) и ответы сервиса в обратном направлении.
Для реализации данных функций компонент Pseudo-SSO должен содержать предварительно заданные наборы информации Ii, каждый из которых можно представить как совокупность следующих параметров для каждого i-го пользователя системы:
Ii = {Ui, Ai, {Si}}, i = 1…N,
где:
N – количество пользователей системы;
Ui – идентификатор i-го пользователя;
Ai – набор информации, необходимой для аутентификации i-го пользователя на компоненте Pseudo-SSO;
{Si} – совокупность наборов прав i-го пользователя на доступ к J ресурсам, а также параметров, необходимых для аутентификации пользователя на данных ресурсах:
Si,j = {Ui,j, Ai,j, Ri,j}, j = 1…J,
где:
Si,j – набор прав и параметров i-го пользователя по отношению к j-му ресурсу;
Ui,j – идентификатор i-го пользователя на j-м ресурсе;
Ai,j – информация, необходимая для прохождения аутентификации i-го пользователя на j-м ресурсе;
Ri,j – множество прав пользователя по отношению к j-му ресурсу.
Логическая схема наборов данных, используемых сервером Pseudo-SSO, представлена на рис. 3.
Перепишем приведенную ранее последовательность аутентификации пользователя в системе с использованием введенных обозначений, разделив ее на два этапа.
Этап 1. Первичная аутентификация пользователя (рис. 4):
Этап 2. Аутентификация i-го пользователя на j-м ресурсе, выполняемая компонентом Pseudo-SSO по мере необходимости от имени пользователя:
Литература:
Рисунки:
Ключевые слова: единая аутентификация, Pseudo-SSO, авторизация.