Настройка аутентификации

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

REST API поставляется с реализацией HTTP Basic Authentication. По умолчанию она отключена, но её можно активировать, добавив сервлет-фильтр следующим образом:

<filter>
  <filter-name>camunda-auth</filter-name>
  <filter-class>
    io.openbpm.bpm.engine.rest.security.auth.ProcessEngineAuthenticationFilter
  </filter-class>
  <async-supported>true</async-supported>
  <init-param>
    <param-name>authentication-provider</param-name>
    <param-value>io.openbpm.bpm.engine.rest.security.auth.impl.HttpBasicAuthenticationProvider</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>camunda-auth</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

После этого любой запрос, относящийся к конкретному движку, будет аутентифицироваться через identity service этого движка. Запрос GET /engine, который возвращает список всех доступных процессных движков, — единственный запрос, не требующий аутентификации. Любой запрос, который не адресован конкретному движку (то есть имеет форму, отличную от /engine/{name}/…​), будет аутентифицироваться через движок по умолчанию.

В готовых дистрибутивах аутентификация движка по умолчанию отключена. Вы можете заглянуть в файл web.xml дистрибутива и убрать маркеры комментариев у упомянутого выше объявления фильтра, чтобы активировать аутентификацию.

Обратите внимание, что HTTP Basic Authentication не обеспечивает шифрования и должна защищаться SSL-соединением.

Провайдер аутентификации является заменяемым. Вы можете реализовать интерфейс io.openbpm.bpm.engine.rest.security.auth.AuthenticationProvider, чтобы предоставить другой метод аутентификации, и соответствующим образом изменить параметр инициализации фильтра.

Особенности RESTEasy

Фильтр аутентификации работает корректно всякий раз, когда JAX-RS-приложение, содержащее REST API, развёрнуто как сервлет. Это не всегда так. Один из известных нам случаев — некоторые типы развёртываний RESTEasy:

RESTEasy позволяет развёртывать JAX-RS-приложение как сервлет-фильтр (см. документацию RESTEasy). Если вы выбираете этот способ развёртывания приложения REST API, как делаем мы в дистрибутиве Tomcat, фильтр аутентификации требует дополнительного init-param с именем rest-url-pattern-prefix. Значение должно соответствовать пути сервлета (см. HttpServletRequest#getServletPath()), как и в случае, когда JAX-RS-приложение развёрнуто как сервлет.

Пример: если конфигурация RESTEasy такова

<filter>
  <filter-name>Resteasy</filter-name>
  <filter-class>
      org.jboss.resteasy.plugins.server.servlet.FilterDispatcher
  </filter-class>
  <init-param>
      <param-name>javax.ws.rs.Application</param-name>
      <param-value>io.openbpm.bpm.engine.rest.impl.application.DefaultApplication</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>Resteasy</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

то необходимо задать следующий init-param:

<init-param>
  <param-name>rest-url-pattern-prefix</param-name>
  <param-value></param-value>
</init-param>

В приведённом выше примере значение пустое, поскольку маппинг фильтра RESTEasy — /*, а сервлет с таким маппингом имел бы пустой путь сервлета. Аналогично, URL маппинга фильтра /rest/\* отображается на init-param /rest и так далее.

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

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

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