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

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

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

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

Настройка прав доступа для отдельного 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-сервиса:

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