Настройка аутентификации
|
Этот раздел перенесён из документации 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