Настройки прав доступа
При создании 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-сервиса:
@Обработчик
метод ВычислитьРазрешенияДоступа() : Массив<РазрешениеДоступа>
пер Разрешения: Массив<РазрешениеДоступа> // массив для возврата разрешений доступа
// Получить экземпляры ключа доступа
пер КлючМенеджеров = новый КлючиГруппСотрудников.Объект(ГруппыСотрудников.Менеджеры)
пер КлючРуководителей = новый КлючиГруппСотрудников.Объект(ГруппыСотрудников.Руководители)
// Создать разрешение доступа
Разрешения.Добавить(новый РазрешениеДоступа([КлючМенеджеров, КлючРуководителей], [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-сервиса:
метод ВычислитьРазрешения(): ЧитаемаяКоллекция<КлючДоступа.Объект>
возврат [новый МойКлючДоступа.Объект()]
;