Я изучаю различные типы моделей управления доступом и узнал, что abac и rbac являются самыми популярными.
У меня есть базовый сценарий для одного из моих проектов, и я не мог понять, следует ли мне использовать RBAC или ABAC. Очевидно, что RBAC является подмножеством ABAC, поэтому я определенно должен выбрать ABAC, но ABAC требует некоторого опыта для написания политик в xacml. Мы используем WSO IS и APIM.
У меня есть роли администратора, владельца и участника на моем сервере идентификации (IS).
В настоящий момент я использую глаголы HTTP для достижения желаемых результатов, то есть владельцы не могут получить доступ к запросам DELETE, а участники не могут получить доступ к PUT и DELETE.
Проблема
У меня есть панель инструментов, где я отображаю различные разделы, такие как топ-пользователи, биллинг, услуги, топ-потребители и т. д.
nav-bar на основе роли пользователя и атрибутов с сервера, например. участники не должны иметь доступа для просмотра других пользователей (Добавить, Список) в nav-bar. Элементы nav-bar зависят от роли пользователя, поэтому мы можем управлять ими через RBAC?Вопрос
Мы можем реализовать все эти сценарии через RBAC, но для управления nav-bar и просмотра соответствующей реализации нам нужно добавить бизнес-логику на наш сервер вместо использования WSO2-IS и WSO2-APIM. Есть ли способ управлять разрешениями просмотра, такими как кнопки и разделы скрытия / отображения, и даже использовать один и тот же API, но он должен возвращать другой результат для разных потребителей api.

После некоторых наблюдений я могу думать об одном.
Используйте приведенные выше API WSO2 APIM, чтобы получить swagger.json для данного API (они должны / будут иметь все доступные API). Теперь используйте соответствующий HTTP-verbs для сопоставления ресурсов с ролями и ответами.
Например. если участники не должны иметь доступа к DELETE, то, используя этот подход, мы можем попросить сервер вернуть все разрешения для текущей страницы / представления и сопоставить эти значения во внешнем интерфейсе, чтобы скрыть / показать кнопку / представления или весь контент.
Обратная сторона: Чтобы избежать дублирования и повторения, мы можем сохранить это отображение в нашей базе данных. Но эта логика требует некоторой бизнес-логики на вашем собственном сервере и доступа к операциям чтения / записи базы данных.