Настройка полного дистрибутива для Tomcat

Этот раздел перенесён из документации Camunda 7 и в дальнейшем будет доработан с учётом особенностей OpenBPM Engine

На этой странице объясняется, как настроить полный дистрибутив для сервера приложений Tomcat.

LDAP

Чтобы настроить LDAP для дистрибутива Tomcat, необходимо выполнить следующие шаги:

Добавление библиотеки LDAP

Убедитесь, что файл camunda-identity-ldap-$PLATFORM_VERSION.jar присутствует в папке $TOMCAT_DISTRIBUTION/lib/.

Готовый дистрибутив

Если вы используете готовый дистрибутив, плагин ldap уже присутствует, и этот шаг можно пропустить.

Корректировка конфигурации движка процессов

Отредактируйте файл bpm-platform.xml, расположенный в папке $TOMCAT_HOME/conf, и добавьте плагин провайдера идентификации LDAP и плагин авторизации администратора.

<?xml version="1.0" encoding="UTF-8"?>
<bpm-platform xmlns="http://www.camunda.org/schema/1.0/BpmPlatform"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.camunda.org/schema/1.0/BpmPlatform http://www.camunda.org/schema/1.0/BpmPlatform ">
  ...
  <process-engine name="default"> ...
    <properties>...</properties>
    <plugins>
      <plugin>
        <class>io.openbpm.bpm.identity.impl.ldap.plugin.LdapIdentityProviderPlugin</class>
        <properties>

          <property name="serverUrl">ldap://localhost:4334/</property>
          <property name="managerDn">uid=jonny,ou=office-berlin,o=camunda,c=org</property>
          <property name="managerPassword">s3cr3t</property>

          <property name="baseDn">o=camunda,c=org</property>

          <property name="userSearchBase"></property>
          <property name="userSearchFilter">(objectclass=person)</property>

          <property name="userIdAttribute">uid</property>
          <property name="userFirstnameAttribute">cn</property>
          <property name="userLastnameAttribute">sn</property>
          <property name="userEmailAttribute">mail</property>
          <property name="userPasswordAttribute">userpassword</property>

          <property name="groupSearchBase"></property>
          <property name="groupSearchFilter">(objectclass=groupOfNames)</property>
          <property name="groupIdAttribute">ou</property>
          <property name="groupNameAttribute">cn</property>

          <property name="groupMemberAttribute">member</property>

        </properties>
      </plugin>
      <plugin>
        <class>io.openbpm.bpm.engine.impl.plugin.AdministratorAuthorizationPlugin</class>
        <properties>
          <property name="administratorUserName">admin</property>
        </properties>
      </plugin>
    </plugins>
  </process-engine>
</bpm-platform>

Свойство administratorUserName должно содержать идентификатор LDAP-пользователя, которому вы хотите предоставить права администратора. Затем вы можете использовать этого пользователя для входа в веб-приложение и предоставления прав другим пользователям.

Полную документацию см. в нашем руководстве пользователя по плагину провайдера идентификации LDAP и плагину авторизации администратора.

Кеширование HAL-ресурсов

Если вы используете LDAP в качестве провайдера идентификации, вам следует рассмотреть включение кеширования пользователей и групп в веб-приложении OpenBPM. Чтобы включить его, добавьте следующую конфигурацию в файл web.xml веб-приложения OpenBPM (camunda-webapp-tomcat-$PLATFORM_VERSION.war/WEB-INF/web.xml):

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  <!-- ... -->

  <listener>
    <listener-class>io.openbpm.bpm.engine.rest.hal.cache.HalRelationCacheBootstrap</listener-class>
  </listener>

  <context-param>
    <param-name>io.openbpm.bpm.engine.rest.hal.cache.config</param-name>
    <param-value>
      {
        "cacheImplementation": "io.openbpm.bpm.engine.rest.hal.cache.DefaultHalResourceCache",
        "caches": {
          "io.openbpm.bpm.engine.rest.hal.user.HalUser": {
            "capacity": 100,
            "secondsToLive": 900
          },
          "io.openbpm.bpm.engine.rest.hal.group.HalGroup": {
            "capacity": 100,
            "secondsToLive": 900
          }
        }
      }
    </param-value>
  </context-param>

  <!-- ... -->

</web-app>

Чтобы настроить сессионную cookie, вы можете скорректировать дескриптор развёртывания веб-приложений. Его можно найти в файле WEB-INF/web.xml в следующем разделе:

...
<session-config>
  <cookie-config>
    <secure>false</secure>
    <http-only>true</http-only>
  </cookie-config>
</session-config>
...

Обратите внимание, что связанные с безопасностью настройки сессионной cookie можно применять только при версии дескриптора развёртывания (web.xml), установленной в 3.0.

Чтобы настроить атрибут SameSite сессионной cookie, вы можете скорректировать SessionCookieFilter. Его также можно найти в файле WEB-INF/web.xml в следующем разделе:

...
<filter>
  <filter-name>SessionCookieFilter</filter-name>
  <filter-class>io.openbpm.bpm.webapp.impl.security.filter.SessionCookieFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>SessionCookieFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
...

По умолчанию фильтр устанавливает флаг SameSite в значение LAX. Вы можете изменить поведение по умолчанию, добавив параметры конфигурации в конфигурацию сервлет-фильтра:

...
<filter>
  <filter-name>SessionCookieFilter</filter-name>
  <filter-class>io.openbpm.bpm.webapp.impl.security.filter.SessionCookieFilter</filter-class>
  <init-param>
    <param-name>sameSiteCookieValue</param-name>
    <param-value>Strict</param-value>
  </init-param>
</filter>
...

Обратите внимание, что фильтр добавляет атрибут SameSite к cookie только в том случае, если этот атрибут ещё не присутствует. Он не изменяет какое-либо существующее значение, установленное до выполнения фильтра.

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

См. также подробный обзор безопасности cookie.

Связанные с безопасностью HTTP-заголовки в веб-приложениях

Чтобы настроить конфигурацию связанных с безопасностью HTTP-заголовков в веб-приложениях, необходимо скорректировать их дескриптор развёртывания. Его можно найти в файле WEB-INF/web.xml.

Обратите внимание на следующий раздел:

...
<filter>
  <filter-name>HttpHeaderSecurity</filter-name>
  <filter-class>
    io.openbpm.bpm.webapp.impl.security.filter.headersec.HttpHeaderSecurityFilter
  </filter-class>
</filter>

<filter-mapping>
  <filter-name>HttpHeaderSecurity</filter-name>
  <url-pattern>/*</url-pattern>
  <dispatcher>REQUEST</dispatcher>
</filter-mapping>
...

Вы можете изменить поведение по умолчанию, добавив параметры конфигурации в конфигурацию сервлет-фильтра:

...
<filter>
  <filter-name>HttpHeaderSecurity</filter-name>
  <filter-class>
    io.openbpm.bpm.webapp.impl.security.filter.headersec.HttpHeaderSecurityFilter
  </filter-class>

  <init-param>
    <param-name>contentSecurityPolicyValue</param-name>
    <param-value>
      base-uri 'self';
      default-src 'self' 'unsafe-inline'
    </param-value>
  </init-param>

</filter>
...

Лицензия и атрибуция

Эта документация была создана на базе материала "Camunda 7 Docs" от Camunda, находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License .

Оригинал документации: https://docs.camunda.org