Настройки прав доступа
При создании HTTP-сервиса вы можете настроить права доступа на трех уровнях:При вызове конкретного HTTP-метода, принадлежащего определенному URL-шаблону,
проверка разрешений доступа в HTTP-сервисе будет производиться следующим образом:
- Если для данного HTTP-метода задана группа свойств КонтрольДоступа, то будет выполнена проверка по заранее рассчитанным разрешениям доступа для данного HTTP-метода конкретного URL-шаблона. Дальнейшие пункты не выполняются.
- Если для данного URL-шаблона задана группа свойств КонтрольДоступа, то будет выполнена проверка по заранее рассчитанным разрешениям доступа для конкретного URL-шаблона. Дальнейшие пункты не выполняются.
- Если вышеупомянутые группы свойств не заданы, то проверяются общие разрешения доступа для HTTP-сервиса, заданные группой свойств КонтрольДоступа HTTP-сервиса.
Важно: Если URL-шаблон или его HTTP-метод
имеет группу свойств КонтрольДоступа и в очередном обновлении вы изменили
свойство URL-шаблона Имя, то нужно обязательно вызвать перерасчет разрешений
доступа для этого HTTP-сервиса в обработчике ПриОбновлении в модуле проекта. В
противном случае, права доступа для переименованных шаблонов могут работать с
ошибкой, так как рассчитанные разрешения доступа хранятся в разрезе имен
URL-шаблонов. Аналогично и при добавлении новых URL-шаблонов с группой свойств
КонтрольДоступа: если вы добавили такой шаблон в существующий
HTTP-сервис, то при обновлении приложения необходимо заново рассчитать разрешения
доступа.
Настройка прав доступа для HTTP-сервиса
Чтобы настроить права доступа для вызова HTTP-сервиса в целом, следует в группе свойств
HTTP-сервиса КонтрольДоступа задать необходимые настройки прав доступа.
Пример YAML-файла:
ВидЭлемента: HttpСервис
Id: a565661f-f458-465b-8f71-1f90cd490890
ОбластьВидимости: ВПодсистеме
Имя: СделкиHttpСервис
КорневойUrl: /opportunities
КонтрольДоступа:
Вызов: РазрешеноАутентифицированным
Данные настройки будут
распространяться на все доступные в HTTP-сервисе URL-шаблоны и их методы. Если
необходимо настроить нестандартный расчет прав доступа, то в группе свойств
КонтрольДоступа вы можете указать значение РазрешенияВычисляются,
а в модуле HTTP-сервиса задать обработчик, который будет выполнять расчет прав
доступа для HTTP-сервиса.
Пример:ВидЭлемента: HttpСервис
Id: a565661f-f458-465b-8f71-1f90cd490890
ОбластьВидимости: ВПодсистеме
Имя: СделкиHttpСервис
КорневойUrl: /opportunities
КонтрольДоступа:
Вызов: РазрешенияВычисляются
Пример модуля
HTTP-сервиса:@Обработчик
метод ВычислитьРазрешенияДоступа() : Массив<РазрешениеДоступа>
пер Разрешения: Массив<РазрешениеДоступа> // массив для возврата разрешений доступа
// Получить экземпляры ключа доступа
пер КлючМенеджеров = новый КлючиГруппСотрудников.Объект(ГруппыСотрудников.Менеджеры)
пер КлючРуководителей = новый КлючиГруппСотрудников.Объект(ГруппыСотрудников.Руководители)
// Создать разрешение доступа
Разрешения.Добавить(новый РазрешениеДоступа([КлючМенеджеров, КлючРуководителей], [Сущность.Право.Чтение]))
возврат Разрешения
;
Настройка прав доступа для отдельного URL-шаблона
Чтобы настроить права доступа для отдельного URL-шаблона, следует добавить группу
свойств КонтрольДоступа у нужного URL-шаблона в описании HTTP сервиса.
Пример:
ВидЭлемента: HttpСервис
Ид: a565661f-f458-465b-8f71-1f90cd490890
Имя: СделкиHttpСервис
ОбластьВидимости: ВПодсистеме
КонтрольДоступа:
Вызов: РазрешеноВсем
КорневойUrl: /opportunities
ШаблоныUrl:
-
Имя: ПолучитьСделки
Шаблон: /
Методы:
-
Метод: GET
Обработчик: ПолучитьСделки
КонтрольДоступа:
Вызов: РазрешеноАутентифицированным
-
Имя: ПолучитьСделку
Шаблон: /{opportunity}
Методы:
-
Метод: GET
Обработчик: ПолучитьСделку
Если необходимо настроить нестандартный расчет прав доступа, то в группе свойств
КонтрольДоступа URL-шаблона, в свойстве Вызов, следует задать
значение РазрешенияВычисляются, а в свойстве Обработчик указать имя
обработчика, который будет выполнять расчет прав доступа для данного URL-шаблона.
Код обработчика следует расположить в модуле HTTP-сервиса.
Пример:
ШаблоныUrl:
-
Имя: ПолучитьСделки
Шаблон: /
Методы:
-
Метод: GET
Обработчик: ПолучитьСделки
КонтрольДоступа:
Вызов: РазрешенияВычисляются
Обработчик: ВычислитьРазрешения
-
Имя: ПолучитьСделку
Шаблон: /{opportunity}
Методы:
-
Метод: GET
Обработчик: ПолучитьСделку
Пример модуля
HTTP-сервиса:метод ВычислитьРазрешения(): ЧитаемаяКоллекция<КлючДоступа.Объект>
возврат [новый МойКлючДоступа.Объект()]
;
Настройка прав доступа для отдельного HTTP-метода URL-шаблона
Чтобы настроить права доступа для вызова конкретного HTTP-метода URL-шаблона, следует
добавить группу свойств КонтрольДоступа у нужного HTTP-метода в описании
HTTP-сервиса.
Пример:
ВидЭлемента: HttpСервис
Ид: a565661f-f458-465b-8f71-1f90cd490890
Имя: СделкиHttpСервис
ОбластьВидимости: ВПодсистеме
КонтрольДоступа:
Вызов: РазрешеноВсем
КорневойUrl: /opportunities
ШаблоныUrl:
-
Имя: ПолучитьСделки
Шаблон: /
Методы:
-
Метод: GET
Обработчик: ПолучитьСделки
-
Метод: POST
Обработчик: ДобавитьСделки
КонтрольДоступа:
Вызов: РазрешеноАутентифицированным
-
Имя: ПолучитьСделку
Шаблон: /{opportunity}
Методы:
-
Метод: GET
Обработчик: ПолучитьСделку
Если необходимо настроить нестандартный расчет прав доступа, то в группе свойств
КонтрольДоступа HTTP-метода URL-шаблона, в свойстве Вызов, следует
задать значение РазрешенияВычисляются, а в свойстве Обработчик указать
имя обработчика, который будет выполнять расчет прав доступа для данного HTTP-метода
URL-шаблона. Код обработчика следует расположить в модуле HTTP-сервиса.
Пример:
ШаблоныUrl:
-
Имя: ПолучитьСделки
Шаблон: /
Методы:
-
Метод: GET
Обработчик: ПолучитьСделки
КонтрольДоступа:
Вызов: РазрешенияВычисляются
Обработчик: ВычислитьРазрешения
-
Имя: ПолучитьСделку
Шаблон: /{opportunity}
Методы:
-
Метод: GET
Обработчик: ПолучитьСделку
Пример модуля
HTTP-сервиса:метод ВычислитьРазрешения(): ЧитаемаяКоллекция<КлючДоступа.Объект>
возврат [новый МойКлючДоступа.Объект()]
;