Рекомендации по использованию RBAC/ABAC в REST API с обязательными и необязательными атрибутамиJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Рекомендации по использованию RBAC/ABAC в REST API с обязательными и необязательными атрибутами

Сообщение Anonymous »

В настоящее время я работаю над REST API, в котором мы традиционно указываем, какие поля являются обязательными, а какие необязательными в ответе или DTO. Это было несложно, поскольку каждая конечная точка имела фиксированный набор обязательных и необязательных полей.
Теперь мы представляем управление доступом на основе атрибутов или ролей (RBAC) или управление доступом по атрибутам (ABAC). ) на определенных конечных точках, и этот подход больше не работает. Например. Каждая роль может иметь свой набор обязательных и необязательных полей, что усложняет поддержание четких и последовательных ответов и DTO.
Например:
У нас есть 3 атрибута в ответе a,b,c
a и c являются обязательными, а b необязательным
Роль A позволяет видеть атрибут a, b, но не c.
Роль B позволяет видеть атрибут c, b, но не a.
Должны ли все атрибуты быть необязательными?
Кроме того, в этом примере отсутствует/нулевой/необязательный параметр семантически то же самое в ответе.
Мой вопрос: каковы наилучшие методы управления доступом в REST API, где обязательные и необязательные атрибуты могут различаться в зависимости от правил доступа?
Как я могу поддерживать понятную и удобную для пользователя документацию API+ответы+классы DTO в этих условиях?
Любые лучшие практики или примеры будут полезны.
Даже если возможно более одного решения.
Примеры
Java

Код: Выделить всё

public class MyDto
{
@NotNull
String a;

Optional b;

//String c or Optional c
}
Открыть API

Код: Выделить всё

MyDto:
required:
- a
#- c
properties:
a:
type: string
b:
type: string
c:
type: string
Чтобы начать обсуждение.
Первой мыслью были следующие 4 решения
a) Одна конечная точка с разными полезными нагрузками/DTO для каждого роль
b) Для каждой роли своя конечная точка с выделенной полезной нагрузкой/DTO
c) Каждый атрибут роли является необязательным
d) Каждая роль имеет собственный необязательный корневой элемент, который включает в себя определенные атрибуты.
Еще какие идеи?

Подробнее здесь: https://stackoverflow.com/questions/787 ... attributes
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»