Камунда: не удается создать сеанс после подтверждения ответа - PullRequest
1 голос
/ 23 апреля 2020

Я сегодня пробую Camunda Enterprise и замечаю проблему:

java.lang.IllegalStateException: Cannot create a session after the response has been committed
    at org.apache.catalina.connector.Request.doGetSession(Request.java:2993)
    at org.apache.catalina.connector.Request.getSession(Request.java:2432)
    at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:908)
    at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:920)
    at org.camunda.bpm.webapp.impl.security.auth.AuthenticationFilter.doFilter(AuthenticationFilter.java:68)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at com.parkway.camunda.config.filter.CorsFilter.doFilterInternal(CorsFilter.java:25)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
    ...

Не уверен, что это ошибка или нет? Происходит только на

Spring-Boot:  (v2.2.1.RELEASE)
Camunda BPM: (v7.12.0-ee)
Camunda BPM Spring Boot Starter: (v3.4.0)

Я пробовал с тем же набором кода, и он отлично работает на

Spring-Boot:  (v2.2.1.RELEASE)
Camunda BPM: (v7.10.0)
Camunda BPM Spring Boot Starter: (v3.2.0)

Может кто-нибудь помочь мне проверить? Спасибо,

1 Ответ

0 голосов
/ 24 апреля 2020

После поиска в Inte rnet в течение дня я наконец нашел проблему.

Root причина: , потому что я вызываю REST API вне веб-сайта Camunda без включите механизм аутентификации, а также используйте / api / abc / do -thing

Ref: https://docs.camunda.org/manual/7.6/reference/rest/overview/authentication/

REST API поставляется с реализацией HTTP Basi c Аутентификация. По умолчанию он отключен.

Любой запрос, который не обращается к указанному c механизму (т. Е. Он не имеет формы / engine / {name} / ...), будет аутентифицирован по механизм по умолчанию.

Решение:

  1. Изменить путь API: from /api/abc/do-something -> /engine/api/abc/do-something
  2. Включить аутентификацию, добавив этот класс конфигурации (если вы используете Spring Boot)
@Configuration
public class CamundaSecurityFilter {

    @Bean
    public FilterRegistrationBean processEngineAuthenticationFilter() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setName("camunda-auth");
        registration.setFilter(getProcessEngineAuthenticationFilter());
        registration.addInitParameter("authentication-provider",
                "org.camunda.bpm.engine.rest.security.auth.impl.HttpBasicAuthenticationProvider");
        registration.addUrlPatterns("/*");
        return registration;
    }

    @Bean
    public Filter getProcessEngineAuthenticationFilter() {
        return new ProcessEngineAuthenticationFilter();
    }
}

Спасибо этим ребятам: https://forum.camunda.org/t/turn-on-basic-http-authentication-for-rest-api-in-spring-boot/3431

...