Фильтр безопасности на основе идентификатора API веб-приложения Java

Мы создаем наш API и ищем организованный способ предоставления пользователям доступа в зависимости от их роли и разрешения.

С начала мы имеем 3 роли

  • Администратор: может получать и редактировать все в своей организации
  • Администратор команды: может получать и редактировать только информацию о своей команде и информацию о пользователях
  • Пользователь: может получить любое редактирование своей информации

сущность

  • команда
  • пользователь

Для фильтров безопасности:

  1. Мы используем JAX-RS с ролями безопасности и @RoleAllowed для фильтрации доступа к ресурсам
  2. Фильтр на основе идентификатора по функции if / then / else. Пример с командным доступом администратора к пользователю.

    function isAllowAccess (teamAdminId, userId) {
        allowUserIdsList = queryfor(teamAdminId);
        if (userId в allowUserIdsList) затем... еще BAD_REQUEST 
    }

Этот код растет с увеличением сложности нескольких ролей и множества сущностей. Итак, мои вопросы:

  1. Каков будет лучший способ иметь организованный фильтр на основе идентификаторов, есть ли для этого авторитетная библиотека?

  2. Должны ли мы поддерживать отдельную таблицу, содержащую доступные идентификаторы каждой сущности для каждого team_admin_id? Затем каждая строка, обновленная или вставленная, будет запускать обновление этой таблицы.

  3. Существует ли формальный или широко приемлемый метод для сокращения затрат на вызовы базы данных при каждом вызове, чтобы проверить, разрешен ли team_admin доступ к конкретному пользователю?

0 ответов

Другие вопросы по тегам