Настройка полного дистрибутива для 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 в веб-приложениях
Чтобы настроить сессионную 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 только в том случае, если этот атрибут ещё не присутствует.
Он не изменяет какое-либо существующее значение, установленное до выполнения фильтра.
Сервлет-фильтр принимает несколько параметров инициализации помимо описанного выше. В следующем списке описаны все возможные параметры, которые вы можете использовать для конфигурации фильтра:
| Имя | Описание | Значение по умолчанию |
|---|---|---|
enableSecureCookie |
Если установлено в true, флаг cookie Secure включается для
сессионной cookie. + Примечание: если флаг Secure уже установлен в cookie любым другим способом, это свойство не удалит его при установке в false. |
false |
enableSameSiteCookie |
Если установлено в false, флаг cookie SameSite отключается. Значение по умолчанию для cookie SameSite — LAX, и его можно изменить с помощью свойства конфигурации same-site-cookie-option. + Примечание: если флаг SameSite уже установлен в cookie любым другим способом, это свойство не изменит и не удалит его. |
true |
sameSiteCookieOption |
Можно настроить в STRICT или LAX. + Примечание:
|
Не задано |
sameSiteCookieValue |
Пользовательское значение свойства cookie. + Примечание:
|
Не задано |
cookieName |
Пользовательское значение для настройки имени сессионной cookie, которую нужно скорректировать. |
JSESSIONID |
См. также подробный обзор безопасности 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>
...
См. также подробный обзор настроек конфигурации безопасности HTTP-заголовков.
Лицензия и атрибуция
Эта документация была создана на базе материала "Camunda 7 Docs" от Camunda, находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License .
Оригинал документации: https://docs.camunda.org