Теперь мы представляем управление доступом на основе атрибутов или ролей (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
}
Код: Выделить всё
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