Вам потребуется:
- PEP (точка применения политики), чтобы перехватить запрос к серверу. В вашем случае вы контролируете доступ к веб-серверу. Если вы используете веб-сервер Java, например Tomcat, вы можете внедрить PEP Servlet Filter.
- PDP (точка принятия решения о политике), чтобы получить запрос от PEP и вернуть решение (либо Разрешение, либо Отрицать). Oracle раньше имел решение PDP под названием Oracle Сервер прав (OES), но оно было прекращено. В настоящее время у вас есть несколько вариантов
- Balana, движок с открытым исходным кодом XACML
- AuthZForce, новейшая и, возможно, наиболее полная открытая исходная кодия XACML 3.0 PDP
- Axiomatics, коммерческое решение который предоставляет вам готовые PDP, PEP и авторизацию политик (также известный как PAP)
- a PAP (точка администрирования / авторизации политики): вам необходимо написать свою политику. Обычно я использую alfa , что является легко читаемой сокращенной записью для XACML.
В вашем случае политика будет выглядеть следующим образом:
policy allowOfficeHours{
apply firstApplicable
rule allowOfficeHours{
target clause current_time>"09:00:00":time and current_time<"17:00:00":time
permit
}
}
План действий
Старт
- Начните с загрузки PDP по вашему выбору. Если вам нужно бесплатно, то go для AuthZForce. Вы можете задать и отметить вопросы с помощью authzforce здесь. Их главный архитектор / разработчик активен здесь.
- Затем загрузите плагин ALFA для Eclipse, чтобы начать писать некоторые политики.
- Наконец, используйте PEP SDK от AuthZForce, чтобы написать свой собственный PEP. Посмотрите на Java фильтры сервлетов как на простое средство для написания PEP. Посмотрите этот пост и этот для советов.