Процесс аутентификация пользователя выполняется поэтапно:
- На основе информации из запроса получаем код объекта (его положение на информационном дереве).
- Если объект имеет настройки прав безопасности, используем их. Если нет – ищём ближайшего родителя (т.е. поднимаемся вверх по дереву), пока не встретим объект с настройками безопасности.
- Если текущую операцию над объектом нельзя выполнить любому пользователю, извлекаем из сессии имя пользователя и пароль. Если они ещё не были введены – просим их ввести. После проведения авторизации будет проведено автоматическое обновление Cookies на клиентском компьютере.
- Получаем список групп, которым принадлежит пользователь, а также таблицу соответствия группы и ролей над данным объектом.
- На основе этой информации собираем список ролей, которые соответствуют данному пользователю при операциях с данным объектом.
- При запуске сервера из XML-файла получаем информацию о том, какие операции над объектом может выполнять каждая из ролей.
- Используя эту таблицу, получаем список операций, которые может выполнять пользователь над данным объектом.
- Если операция, которую пытается выполнить пользователь, есть в списке разрешённых, она разрешается. Иначе – выдаётся ошибка 403 и (если шаблон ошибки не был переопределён) предлагается ввести другие имя и пароль.
Процесс проверки прав пользователя изображён на следующей схеме: