Перейти к основному содержимому

Настройка прав доступа

При создании 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-сервиса. Пример:

ВидЭлемента: SoapСервис
Ид: 20658364-7777-4b14-9423-ec212de5be72
Имя: СервисМагазина
ОбластьВидимости: ВПодсистеме
КонтрольДоступа:
Разрешения:
Вызов: РазрешеноВсем
ПространствоИменСервиса: https://mycustomshop.ru
ИмяСервиса: ShopService
КорневойUrl: shopservice
Обработчики:
-
Имя: AddToCart
Метод: ДобавитьВКорзину
Ошибки:
- СервисМагазина.MyCustomException
КонтрольДоступа:
Разрешения:
Вызов: РазрешеноАутентифицированным

Если необходимо настроить нестандартный расчет прав доступа, то в группе свойств КонтрольДоступа у нужного обработчика, в свойстве Вызов, следует задать значение РазрешенияВычисляются, а в свойстве Обработчик указать имя обработчика, который будет выполнять расчет прав доступа для вызова данной операции. Код обработчика следует расположить в модуле SOAP-сервиса. Пример:

Обработчики:
-
Имя: AddToCart
Метод: ДобавитьВКорзину
Ошибки:
- СервисМагазина.MyCustomException
КонтрольДоступа:
Разрешения:
Вызов: РазрешенияВычисляются
Обработчик: ВычислитьРазрешенияДляОперации

Пример модуля SOAP-сервиса:

метод ВычислитьРазрешенияДляОперации(): ЧитаемаяКоллекция<КлючДоступа.Объект>
возврат [новый МойКлючДоступа.Объект()]
;