Creatio development guide
PDF
Это документация Creatio версии 7.16.0. Мы рекомендуем использовать новую версию документации.

Создание анонимного веб-сервиса

Glossary Item Box

Общие положения

Сервисная модель Creatio реализует базовый набор веб-сервисов, с помощью которых может быть организована интеграция Creatio с внешними приложениями и системами.

Примеры системных сервисов:

Эти сервисы реализованы на основе технологии WCF и управляются на уровне IIS.

Также в Creatio существуют конфигурационные веб-сервисы, предназначенные для вызова из клиентской части приложения. С помощью конфигурационных веб-сервисов можно реализовывать специфические интеграционные задачи. Как создать пользовательский конфигурационный сервис, читайте в статье "Создание пользовательского конфигурационного сервиса".

Большинство WCF-сервисов требуют предварительной аутентификации пользователя. Некоторые из сервисов, например, AuthService.svc, доступны для анонимного использования.

Анонимный доступ к конфигрурационным сервисам в ASP.Net Framework

Чтобы создать WCF-сервис, доступный без аутентификации пользователей:

  1. Создайте конфигурационный веб-сервис (при необходимости).
  2. Зарегистрируйте WCF-сервис в каталоге ..\Terrasoft.WebApp\ServiceModel.
  3. Сконфигурируйте WCF-сервис для протоколов http и https.
  4. Настройте доступ к WCF-сервису для всех пользователей.

Создание конфигурационного сервиса

Как создать конфигурационный сервис, читайте в статье "Создание пользовательского конфигурационного сервиса".

При создании анонимного конфигурационного сервиса необходимо использовать системное подключение SystemUserConnection вместо пользовательского UserConnection.

Для обеспечения работоспособности бизнес-процессов при работе с Entity из анонимного веб-сервиса после получения SystemUserConnection необходимо вызвать метод SessionHelper.SpecifyWebOperationIdentity пространства имён Terrasoft.Web.Common:

Terrasoft.Web.Common.SessionHelper.SpecifyWebOperationIdentity(HttpContextAccessor.GetInstance(), SystemUserConnection.CurrentUser);

Данный метод позволяет указать пользователя, от имени которого будет выполняться обработка данного http-запроса.

Регистрация WCF-сервиса

Для регистрации WCF-сервиса в каталоге ..\Terrasoft.WebApp\ServiceModel необходимо создать файл с расширением svc и добавить в него следующую запись:

<% @ServiceHost
Service = "Service, ServiceNamespace"
Factory = "Factory, FactoryNamespace"
Debug = "Debug"
Language = "Language"
CodeBehind = "CodeBehind"
%>

В атрибуте Service необходимо указать полное имя класса конфигурационного сервиса. Подробнее о WCF-директиве @ServiceHost читайте в документации Microsoft.

Конфигурирование WCF-сервиса для протоколов http и https

Для конфигурирования WCF-сервиса для протоколов http и https необходимо в файлах services.config, расположенных в каталогах ..\Terrasoft.WebApp\ServiceModel\http и ..\Terrasoft.WebApp\ServiceModel\https, добавить следующую запись:

<services>
    ...
    <service name="Terrasoft.Configuration.[Service name]">
        <endpoint name="[Service name]EndPoint"
            address=""
            binding="webHttpBinding"
            behaviorConfiguration="RestServiceBehavior"
            bindingNamespace="http://Terrasoft.WebApp.ServiceModel"
            contract="Terrasoft.Configuration.[Service name]" />
    </service>
</services>

Здесь выполняется конфигурирование сервиса. Элемент <services> должен содержать перечень конфигураций всех сервисов приложения (вложенные элементы <service>). Атрибут name должен содержать название типа (класса или интерфейса), реализующего контракт сервиса. Вложенный элемент <endpoint> требует адрес, привязку и интерфейс, определяющий контракт сервиса, указанный в атрибуте name элемента <service>.

Подробное описание элементов конфигурирования сервиса доступно в документации Microsoft.

Настройка доступа к WCF-сервису для всех пользователей

Для настройки доступа к WCF-сервису для всех пользователей в файл ..\Terrasoft.WebApp\Web.config необходимо внести следующие изменения:

  • Добавить элемент <location>, определяющий относительный путь и права доступа к сервису.
  • В элементе <appSettings> изменить значение value для ключа "AllowedLocations", добавив в него относительный путь к сервису.

Пример изменений в файле ..\Terrasoft.WebApp\Web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  ...
  <location path="ServiceModel/[Service name].svc">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
  ... 
  <appSettings>
    ...
    <add key="AllowedLocations" value="...;ServiceModel/[Service name].svc"  />
    ...
  </appSettings>
  ...
</configuration>

После перезагрузки пула приложения в IIS сервис станет доступен по адресу:

[Адрес приложения]/0/ServiceModel/[Название сервиса].svc/[Конечная точка пользовательского сервиса]?[Опциональные параметры]

К сервису можно обращаться из браузера, как с предварительным вводом логина и пароля, так и без их использования.

Для настройки анонимного веб-сервиса требуется изменение конфигурационных файлов приложения. При обновлении приложения все конфигурационные файлы заменяются новыми. Следовательно, после обновления приложения потребуется повторная настройка веб-сервиса.

Анонимный доступ к конфигурационным сервисам в ASP.Net Core

Для анонимного доступа к конфигурационным сервисам в ASP.Net Core необходимо  только добавить информацию о сервисе в блок AnonymousRoutes конфигурационного файла ..\Terrasoft.WebHost\appsettings.json.

"Terrasoft.Configuration.[Service name]": [
    "/ServiceModel/[Service name].svc"
]

При этом исходный код сервиса изменять не нужно. Если используется пространство имен System.Web, то его необходимо заменить на Terrasoft.Web.Http.Abstractions.

Сервис будет доступен по следующим адресам:

[Адрес приложения]/ServiceModel/[Service name].svc/[Service endpoint name]?[Options]
[Адрес приложения]/0/ServiceModel/[Service name].svc/[Service endpoint name]?[Options]

Смотрите также:

© Terrasoft 2002-2020.

Был ли данный материал полезен?

Как можно улучшить эту статью?