Camunda:在提交响应后无法创建会话



我今天正在试用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)
...

不确定这个是不是bug?仅发生在上

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)

有人能帮我检查一下吗
谢谢,

在网上搜索了一天后,我终于找到了这个问题。

根本原因:因为我在Camunda网站之外调用REST API而没有打开身份验证机制,并且还使用/API/abc/do-something

参考编号:https://docs.camunda.org/manual/7.6/reference/rest/overview/authentication/

REST API附带了HTTP基本身份验证的实现。默认情况下关闭。

任何不针对特定引擎的请求(即,它不是/engine/{name}/…形式(都将根据默认引擎进行身份验证。

解决方案:

  1. 更改API路径:from /api/abc/do-something -> /engine/api/abc/do-something
  2. 通过添加此配置类打开Authentication(如果您使用的是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

最新更新