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

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