Настройка прав доступа
При создании SOAP-сервиса вы можете настроить права доступа на двух уровнях:
При вызове конкретной операции проверка разрешений доступа в SOAP-сервисе будет производиться следующим образом:
- Если для операции задана группа свойств КонтрольДоступа, то будет выполнена проверка по заранее рассчитанным разрешениям доступа для данной операции. Дальнейшие пункты не выполняются.
- Если вышеупомянутая группа свойств не задана, то проверяются общие разрешения доступа для SOAP-сервиса, заданные группой свойств КонтрольДоступа SOAP-сервиса.
Важно: Если операция имеет группу свойств КонтрольДоступа и
в очередном обновлении вы изменили свойство операции Имя, то нужно обязательно вызвать
перерасчет разрешений доступа для этого SOAP-сервиса в обработчике ПриОбновлении
в модуле проекта. В противном случае, права
доступа для переименованных операций могут работать с ошибкой, так как рассчитанные
разрешения доступа хранятся в разрезе имен операций.
Настройка прав доступа для SOAP-сервиса
Чтобы настроить права доступа для вызова SOAP-сервиса в целом, следует в группе свойств
SOAP-сервиса КонтрольДоступа задать необходимые настройки прав доступа. Пример
YAML-файла:
ВидЭлемента: SoapСервис
Ид: 20658364-7777-4b14-9423-ec212de5be72
Имя: СервисМагазина
ОбластьВидимости: ВПодсистеме
КонтрольДоступа:
Вызов: РазрешеноАутентифицированным
Данные настройки будут
распространяться на все доступные в SOAP-сервисе операции. Если необходимо настроить
нестандартный расчет прав доступа, то в группе свойств КонтрольДоступа вы можете
указать значение РазрешенияВычисляются, а в модуле SOAP-сервиса задать
обработчик, который будет выполнять расчет прав доступа.
Пример:ВидЭлемента: SoapСервис
Ид: 20658364-7777-4b14-9423-ec212de5be72
Имя: СервисМагазина
ОбластьВидимости: ВПодсистеме
КонтрольДоступа:
Вызов: РазрешенияВычисляются
Пример модуля
SOAP-сервиса:@Обработчик
метод ВычислитьРазрешенияДоступа() : Массив<РазрешениеДоступа>
знч Разрешения: Массив<РазрешениеДоступа> // массив для возврата разрешений доступа
// Получить экземпляры ключей доступа
знч КлючМенеджеров = новый КлючиГруппСотрудников.Объект(ГруппыСотрудников.Менеджеры)
знч КлючРуководителей = новый КлючиГруппСотрудников.Объект(ГруппыСотрудников.Руководители)
// Создать разрешение доступа
Разрешения.Добавить(новый РазрешениеДоступа([КлючМенеджеров, КлючРуководителей], [Сущность.Право.Чтение]))
возврат Разрешения
;
Настройка прав доступа для отдельной операции сервиса
Чтобы настроить права доступа для отдельной операции, следует добавить группу свойств
КонтрольДоступа у нужного обработчика в описании SOAP-сервиса.
Пример:
ВидЭлемента: SoapСервис
Ид: 20658364-7777-4b14-9423-ec212de5be72
Имя: СервисМагазина
ОбластьВидимости: ВПодсистеме
КонтрольДоступа:
Вызов: РазрешеноВсем
ПространствоИменСервиса: https://mycustomshop.ru
ИмяСервиса: ShopService
КорневойUrl: shopservice
Обработчики:
-
Имя: AddToCart
Метод: ДобавитьВКорзину
Ошибки:
- СервисМагазина.MyCustomException
КонтрольДоступа:
Вызов: РазрешеноАутентифицированным
Если необходимо настроить
нестандартный расчет прав доступа, то в группе свойств КонтрольДоступа у
нужного обработчика, в свойстве Вызов, следует задать значение
РазрешенияВычисляются, а в свойстве Обработчик указать имя обработчика,
который будет выполнять расчет прав доступа для вызова данной операции. Код обработчика
следует расположить в модуле SOAP-сервиса.
Пример:Обработчики:
-
Имя: AddToCart
Метод: ДобавитьВКорзину
Ошибки:
- СервисМагазина.MyCustomException
КонтрольДоступа:
Вызов: РазрешенияВычисляются
Обработчик: ВычислитьРазрешенияДляОперции
Пример модуля
SOAP-сервиса:метод ВычислитьРазрешенияДляОперции(): ЧитаемаяКоллекция<КлючДоступа.Объект>
возврат [новый МойКлючДоступа.Объект()]
;