выглядит как бот IRC или приложение-служба.«обычный» подход для этого состоит в том, чтобы иметь список команд / привилегий с int, представляющим необходимый уровень доступа, и список пользователей с соответствующим уровнем доступа ... всякий раз, когда используется команда / привилегия, попытайтесь получитьуровень доступа пользователей из списка или значение по умолчанию (0), если пользователя нет в списке.затем сравните это значение со значением используемой команды / привилегии
преимущество: довольно легко реализовать
недостаток: ограничивает уровни команд / привилегий до некоторой иерархической альтернативы
, которая допускает произвольноекомплексные разрешения:
используется Типы:
Пользователь - представляет пользователя
Группа - представляет группу пользовательских объектов
Контекст - представляет контекст набора правил (в терминахIRC (это может быть канал)
Привилегия - представляет привилегию или команду, которую можно использовать
Разрешение - говорит о том, что привилегия либо предоставлена, либо запрещена
Объекты пользователя и группы могут быть связанысо списком разрешений по контексту
контекст хранит список действующих разрешений для пользователей, которые имеют разрешения в этом контексте, или пользователей, которые являются членами групп, которые имеют разрешения в этом контексте.эти действующие разрешения определяются следующим образом:
for each user itterate all group memberships
for each group itterate all permissions
if the permission is denying a Privilege, add this privilege as denied to the effective permissions of this user, overwriting any permission for this privilege that may already be present in that list
else, if the permission is granting a privilege add it to the effective permissions only if no permission for this privilege is present in the list
finally itterate over the users permissions
add the permission to the effective permissions list, overwriting any permission for this privilege that may already be present in the list.
все привилегии получают разрешение по умолчанию, инициализируемое как «отказано» (сохранено в контексте)
при изменении разрешений во время выполнения,действующие разрешения должны быть перестроены.
когда система должна проверить разрешение, она ищет пользователя и в конечном итоге выполняет аутентификацию.если пользователь аутентифицирован, действующие разрешения ищутся контекстом.если для этого пользователя найдены эффективные разрешения, запрашивается запрашиваемая привилегия и проверяется соответствующее разрешение.если мы либо получим, либо отклоним, проверка будет завершена.если разрешение не найдено, используется разрешение по умолчанию для этой привилегии.