Пример Device Access
Пример Device Access
демонстрирует использование паттерна Privilege Separation.
Архитектура примера
Пример содержит три программы: Device
, LoginManager
и Storage
.
В этом примере программа Device
обращается к программе Storage
для получения информации и к программе LoginManager
для авторизации.
Программа Device
получает доступ к программе Storage
только после успешной авторизации.
Пример демонстрирует возможность разделения логики авторизации и логики доступа к данным на независимые компоненты. Такое разделение гарантирует, что доступ к данным может быть открыт только после успешной авторизации. При этом контроль за тем, что авторизация была проведена и закончилась успешно, осуществляется модулем безопасности. Кроме этого, такая архитектура позволяет производить независимую разработку и тестирование логики авторизации и логики предоставления доступа к данным.
Политика безопасности в примере Device Access
имеет следующие особенности:
- Программа
Device
имеет возможность обращаться к программеLoginManager
для авторизации. - Вызовами метода
GetInfo()
программыStorage
управляют методы модели безопасности Flow:- Конечный автомат, описанный в конфигурации объекта
session
, имеет два состояния:unauthenticated
иauthenticated
. - Исходное состояние –
unauthenticated
. - Разрешены переходы из
unauthenticated
вauthenticated
и обратно. - Объект
session
создается при запуске программыDevice
. - При успешном вызове программой
Device
методаLogin()
программыLoginManager
состояние объектаsession
изменяется наauthenticated
. - При успешном вызове программой
Device
методаLogout()
программыLoginManager
состояние объектаsession
изменяется наunauthenticated
. - При вызове программой
Device
методаGetInfo()
программыStorage
проверяется текущее состояние объектаsession
. Вызов разрешается, только если текущее состояние объекта –authenticated
.
- Конечный автомат, описанный в конфигурации объекта
Файлы примера
Код примера и скрипты для сборки находятся по следующему пути:
Сборка и запуск примера
См. "Сборка и запуск примеров".