I followed the directions to a t, but when I build with docker I get this, I even used the automated keycloak setup (I also setup a secure keycloak server before that).
| Camunda BPM Spring Boot Starter: (v7.13.0)
forms-flow-bpm_1 |
forms-flow-bpm_1 | 2021-05-26 14:51:50.339 INFO 1 --- [
main] o.c.b.e.k.showcase.CamundaApplication : Starting CamundaApplication using Java 11.0.3 on 989965dc503a with PID 1 (/app/camunda-bpm-identity-keycloak-examples-sso-kubernetes.jar started by root in /app)
forms-flow-bpm_1 | 2021-05-26 14:51:50.352 DEBUG 1 --- [
main] o.c.b.e.k.showcase.CamundaApplication : Running with Spring Boot v2.4.2, Spring v5.3.3
forms-flow-bpm_1 | 2021-05-26 14:51:50.353 INFO 1 --- [
main] o.c.b.e.k.showcase.CamundaApplication : No active profile set, falling back to default profiles: default
forms-flow-bpm_1 | WARNING: An illegal reflective access operation
has occurred
forms-flow-bpm_1 | WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (jar:file:/app/camunda-bpm-identity-keycloak-examples-sso-kubernetes.jar!/BOOT-INF/lib/groovy-2.5.14.jar!/) to method java.lang.Object.finalize()
forms-flow-bpm_1 | WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass
forms-flow-bpm_1 | WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
forms-flow-bpm_1 | WARNING: All illegal access operations will be denied in a future release
forms-flow-bpm_1 | 2021-05-26 14:51:50.782 WARN 1 --- [
main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [org.camunda.bpm.extension.keycloak.showcase.CamundaApplication]; nested exception is org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'keycloakAuthenticationConverter' for bean class [org.camunda.bpm.extension.keycloak.showcase.rest.KeycloakAuthenticationConverter] conflicts with existing, non-compatible bean definition of same name and class [org.camunda.bpm.extension.keycloak.showcase.sso.KeycloakAuthenticationConverter]
forms-flow-bpm_1 | 2021-05-26 14:51:50.799 INFO 1 --- [
main] ConditionEvaluationReportLoggingListener :
forms-flow-bpm_1 |
forms-flow-bpm_1 | Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
forms-flow-bpm_1 | 2021-05-26 14:51:50.824 ERROR 1 --- [
main] o.s.boot.SpringApplication : Application run failed
forms-flow-bpm_1 |
forms-flow-bpm_1 | org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [org.camunda.bpm.extension.keycloak.showcase.CamundaApplication]; nested exception is org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'keycloakAuthenticationConverter' for bean class [org.camunda.bpm.extension.keycloak.showcase.rest.KeycloakAuthenticationConverter] conflicts with existing, non-compatible bean definition of same name and class [org.camunda.bpm.extension.keycloak.showcase.sso.KeycloakAuthenticationConverter]
forms-flow-bpm_1 | at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:189) ~[spring-context-5.3.3.jar!/:5.3.3]
forms-flow-bpm_1 | at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:336) ~[spring-context-5.3.3.jar!/:5.3.3]
forms-flow-bpm_1 | at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:252) ~[spring-context-5.3.3.jar!/:5.3.3]
forms-flow-bpm_1 | at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:285) ~[spring-context-5.3.3.jar!/:5.3.3]
forms-flow-bpm_1 | at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:99) ~[spring-context-5.3.3.jar!/:5.3.3]
forms-flow-bpm_1 | at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:751) ~[spring-context-5.3.3.jar!/:5.3.3]
forms-flow-bpm_1 | at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:569) ~[spring-context-5.3.3.jar!/:5.3.3]
forms-flow-bpm_1 | at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144) ~[spring-boot-2.4.2.jar!/:2.4.2]
forms-flow-bpm_1 | at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:767) ~[spring-boot-2.4.2.jar!/:2.4.2]
forms-flow-bpm_1 | at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) ~[spring-boot-2.4.2.jar!/:2.4.2]
forms-flow-bpm_1 | at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426) ~[spring-boot-2.4.2.jar!/:2.4.2]
forms-flow-bpm_1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:326) ~[spring-boot-2.4.2.jar!/:2.4.2]
forms-flow-bpm_1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:1311) ~[spring-boot-2.4.2.jar!/:2.4.2]
forms-flow-bpm_1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:1300) ~[spring-boot-2.4.2.jar!/:2.4.2]
forms-flow-bpm_1 | at org.camunda.bpm.extension.keycloak.showcase.CamundaApplication.main(CamundaApplication.java:68) ~[classes!/:na]
forms-flow-bpm_1 | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
forms-flow-bpm_1 | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
forms-flow-bpm_1 | at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
forms-flow-bpm_1 | at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
forms-flow-bpm_1 | at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) ~[camunda-bpm-identity-keycloak-examples-sso-kubernetes.jar:na]
forms-flow-bpm_1 | at org.springframework.boot.loader.Launcher.launch(Launcher.java:107) ~[camunda-bpm-identity-keycloak-examples-sso-kubernetes.jar:na]
forms-flow-bpm_1 | at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) ~[camunda-bpm-identity-keycloak-examples-sso-kubernetes.jar:na]
forms-flow-bpm_1 | at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:467) ~[camunda-bpm-identity-keycloak-examples-sso-kubernetes.jar:na]
forms-flow-bpm_1 | Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'keycloakAuthenticationConverter' for bean class [org.camunda.bpm.extension.keycloak.showcase.rest.KeycloakAuthenticationConverter] conflicts with existing, non-compatible bean definition of same name and class [org.camunda.bpm.extension.keycloak.showcase.sso.KeycloakAuthenticationConverter]
forms-flow-bpm_1 | at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.checkCandidate(ClassPathBeanDefinitionScanner.java:349) ~[spring-context-5.3.3.jar!/:5.3.3]
forms-flow-bpm_1 | at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:287) ~[spring-context-5.3.3.jar!/:5.3.3]
forms-flow-bpm_1 | at org.springframework.context.annotation.ComponentScanAnnotationParser.parse(ComponentScanAnnotationParser.java:132) ~[spring-context-5.3.3.jar!/:5.3.3]
forms-flow-bpm_1 | at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:296) ~[spring-context-5.3.3.jar!/:5.3.3]
forms-flow-bpm_1 | at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:250)
~[spring-context-5.3.3.jar!/:5.3.3]
forms-flow-bpm_1 | at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:207) ~[spring-context-5.3.3.jar!/:5.3.3]
forms-flow-bpm_1 | at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:175) ~[spring-context-5.3.3.jar!/:5.3.3]
forms-flow-bpm_1 | ... 22 common frames omitted
forms-flow-bpm_1 |
docker_forms-flow-bpm_1 exited with code 1
forms-flow-webapi_1 | WARNING: SECRET_KEY being set as a one-shot
forms-flow-webapi_1 | Configure logging, from conf:/usr/local/lib/python3.8/site-packages/api/logging.conf
forms-flow-webapi_1 | Traceback (most recent call last):
forms-flow-webapi_1 | File "/usr/local/lib/python3.8/urllib/request.py", line 1354, in do_open
forms-flow-webapi_1 | h.request(req.get_method(), req.selector, req.data, headers,
forms-flow-webapi_1 | File "/usr/local/lib/python3.8/http/client.py", line 1252, in request
forms-flow-webapi_1 | self._send_request(method, url, body, headers, encode_chunked)
forms-flow-webapi_1 | File "/usr/local/lib/python3.8/http/client.py", line 1298, in _send_request
forms-flow-webapi_1 | self.endheaders(body, encode_chunked=encode_chunked)
forms-flow-webapi_1 | File "/usr/local/lib/python3.8/http/client.py", line 1247, in endheaders
forms-flow-webapi_1 | self._send_output(message_body, encode_chunked=encode_chunked)
forms-flow-webapi_1 | File "/usr/local/lib/python3.8/http/client.py", line 1007, in _send_output
forms-flow-webapi_1 | self.send(msg)
forms-flow-webapi_1 | File "/usr/local/lib/python3.8/http/client.py", line 947, in send
forms-flow-webapi_1 | self.connect()
forms-flow-webapi_1 | File "/usr/local/lib/python3.8/http/client.py", line 918, in connect
forms-flow-webapi_1 | self.sock = self._create_connection(
forms-flow-webapi_1 | File "/usr/local/lib/python3.8/socket.py", line 808, in create_connection
forms-flow-webapi_1 | raise err
forms-flow-webapi_1 | File "/usr/local/lib/python3.8/socket.py", line 796, in create_connection
forms-flow-webapi_1 | sock.connect(sa)
forms-flow-webapi_1 | ConnectionRefusedError: [Errno 111] Connection refused
forms-flow-webapi_1 |
forms-flow-webapi_1 | During handling of the above exception, another
exception occurred:
forms-flow-webapi_1 |
forms-flow-webapi_1 | Traceback (most recent call last):
forms-flow-webapi_1 | File "manage.py", line 14, in
forms-flow-webapi_1 | APP = create_app()
forms-flow-webapi_1 | File "/usr/local/lib/python3.8/site-packages/api/init.py", line 30, in create_app
forms-flow-webapi_1 | setup_jwt_manager(app, jwt)
forms-flow-webapi_1 | File "/usr/local/lib/python3.8/site-packages/api/init.py", line 49, in setup_jwt_manager
forms-flow-webapi_1 | jwt_manager.init_app(app)
forms-flow-webapi_1 | File "/usr/local/lib/python3.8/site-packages/flask_jwt_oidc/jwt_manager.py", line 80, in init_app
forms-flow-webapi_1 | jurl = urlopen(url=self.well_known_config)
forms-flow-webapi_1 | File "/usr/local/lib/python3.8/urllib/request.py", line 222, in urlopen
forms-flow-webapi_1 | return opener.open(url, data, timeout)
forms-flow-webapi_1 | File "/usr/local/lib/python3.8/urllib/request.py", line 525, in open
forms-flow-webapi_1 | response = self._open(req, data)
forms-flow-webapi_1 | File "/usr/local/lib/python3.8/urllib/request.py", line 542, in _open
forms-flow-webapi_1 | result = self._call_chain(self.handle_open,
protocol, protocol +
forms-flow-webapi_1 | File "/usr/local/lib/python3.8/urllib/request.py", line 502, in _call_chain
forms-flow-webapi_1 | result = func(*args)
forms-flow-webapi_1 | File "/usr/local/lib/python3.8/urllib/request.py", line 1383, in http_open
forms-flow-webapi_1 | return self.do_open(http.client.HTTPConnection, req)
forms-flow-webapi_1 | File "/usr/local/lib/python3.8/urllib/request.py", line 1357, in do_open
forms-flow-webapi_1 | raise URLError(err)
forms-flow-webapi_1 | urllib.error.URLError: <urlopen error [Errno 111] Connection refused>
also here is the env file.. (and yes I got the keycloak_bpm_client secret from the new keycloak server
##To define project level configuration possible values development,test,production
NODE_ENV=development
##Set CORS Origin
APP_SECURITY_ORIGIN=*
Environment Variables for Keycloak
KEYCLOAK_URL=http://127.0.0.1:8080
KEYCLOAK_URL_REALM=formsflow-ai
KEYCLOAK_BPM_CLIENTID=forms-flow-bpm
KEYCLOAK_BPM_CLIENTSECRET=6fff85f4-30d3-4dd7-b0bc-1b397345ce30
KEYCLOAK_WEB_CLIENTID=forms-flow-web
KEYCLOAK_TOKEN_URL=http://127.0.0.1:8080/auth/realms/forms-flow-ai/protocol/openid-connect/token
KEYCLOAK_JWT_OIDC_CONFIG=http://127.0.0.1:8080/auth/realms/forms-flow-ai/.well-known/openid-configuration
KEYCLOAK_JWT_OIDC_JWKS_URI=http://127.0.0.1:8080/auth/realms/forms-flow-ai/protocol/openid-connect/certs
KEYCLOAK_JWT_OIDC_ISSUER=http://127.0.0.1:8080/auth/realms/forms-flow-ai
#Orbeon integration with camunda
CAMUNDA_FORMBUILDER_PIPELINE_USERNAME={Basic Authentication Username}
CAMUNDA_FORMBUILDER_PIPELINE_PASSWORD={Basic Authentication Password}
CAMUNDA_FORMBUILDER_PIPELINE_BPM_URL={Camunda URL with elevated privilege}
#Session Management settings
CAMUNDA_SESSION_STORE_TYPE={Session store type}
CAMUNDA_SESSION_STORE_TIMEOUT={Session store timeout}
#Audit Settings
CAMUNDA_BPM_HISTORY_LEVEL={History flag}
CAMUNDA_AUTHORIZATION_FLAG=true
CAMUNDA_AUTHORIZATION_REVOKE_CHECK_FLAG=auto
#Primary Datasource connection and settings
#Variable CAMUNDA_JDBC_DB is not required for managed postgres instance
CAMUNDA_JDBC_DB={Database name}
CAMUNDA_JDBC_URL={Database URL}
CAMUNDA_JDBC_USER={Database username}
CAMUNDA_JDBC_PASSWORD={Database password}
CAMUNDA_JDBC_DRIVER=org.postgresql.Driver
CAMUNDA_HIKARI_CONN_TIMEOUT={Hikari connection timeout}
CAMUNDA_HIKARI_IDLE_TIMEOUT={Hikari idle connection timeout}
CAMUNDA_HIKARI_MAX_POOLSIZE={Hikari max pool size}
CAMUNDA_HIKARI_VALID_TIMEOUT={Hikari connection validation timeout}
#Session Management Datasource connection and settings
#CAMUNDA_SESSION_JDBC_URL={Database URL}
#CAMUNDA_SESSION_JDBC_USER={Database username}
#CAMUNDA_SESSION_JDBC_PASSWORD={Database password}
#CAMUNDA_SESSION_JDBC_DRIVER=org.postgresql.Driver
#CAMUNDA_SESSION_HIKARI_CONN_TIMEOUT={Hikari connection timeout}
#CAMUNDA_SESSION_HIKARI_IDLE_TIMEOUT={Hikari idle connection timeout}
#CAMUNDA_SESSION_HIKARI_MAX_POOLSIZE={Hikari max pool size}
#CAMUNDA_SESSION_HIKARI_VALID_TIMEOUT={Hikari connection validation timeout}
#Analytics Management Datasource connection and settings
CAMUNDA_ANALYTICS_JDBC_URL={Database URL}
CAMUNDA_ANALYTICS_JDBC_USER={Database username}
CAMUNDA_ANALYTICS_JDBC_PASSWORD={Database password}
CAMUNDA_ANALYTICS_JDBC_DRIVER=org.postgresql.Driver
CAMUNDA_ANALYTICS_HIKARI_CONN_TIMEOUT={Hikari connection timeout}
CAMUNDA_ANALYTICS_HIKARI_IDLE_TIMEOUT={Hikari idle connection timeout}
CAMUNDA_ANALYTICS_HIKARI_MAX_POOLSIZE={Hikari max pool size}
CAMUNDA_ANALYTICS_HIKARI_VALID_TIMEOUT={Hikari connection validation timeout}
#Job pool settings
CAMUNDA_JOB_CORE_POOL_SIZE={Core pool size}
CAMUNDA_JOB_MAX_POOL_SIZE={Max pool size}
CAMUNDA_JOB_QUEUE_SIZE={Queue Size}
CAMUNDA_JOB_LOCK_TIME_MILLIS={Lock time}
CAMUNDA_JOB_MAXJOBS_PER_ACQUISITION={Max jobs per acquisition}
CAMUNDA_JOB_WAIT_TIME_MILLIS={Job Wait time}
CAMUNDA_JOB_MAX_WAIT={Job Max Wait}
CAMUNDA_METRICS_FLAG=false
#Log Settings
CAMUNDA_APP_ROOT_LOG_FLAG=debug
##Environment variables for adaptive tier (Python Webapi) Datastore
WEB_API_DATABASE_URL=postgresql://postgres:changeme@forms-flow-webapi-db:5432/webapi
WEB_API_POSTGRES_USER=postgres
WEB_API_POSTGRES_PASSWORD=changeme
WEB_API_POSTGRES_DB=webapi
##Mapping of application roles from keycloak
CLIENT_ROLE=formsflow-client
DESIGNER_ROLE=formsflow-designer
REVIEWER_ROLE=formsflow-reviewer
##Mapping of application roles from FORMIO server
CLIENT_ROLE_ID=60ae42d220e6d93a1bf8dea6
DESIGNER_ROLE_ID=60ae428120e6d9530ff8de94
REVIEWER_ROLE_ID=60ae42d220e6d92826f8dea5
ANONYMOUS_ID=60ae428120e6d9bb7ff8de96
USER_RESOURCE_ID=60ae428120e6d9c3c5f8de97
#URL of forms-flow-forms
FORMIO_DEFAULT_PROJECT_URL=http://localhost:3001
##Environment Variables for FormIO Datastore
FORMIO_MONGO_USERNAME=admin
FORMIO_MONGO_PASSWORD=changeme
FORMIO_MONGO_DATABASE=formio
##Environment Variables for FormIO Server root-admin credential
FORMIO_ROOT_EMAIL=[email protected]
FORMIO_ROOT_PASSWORD=CHANGEME
#Insight Api End point
INSIGHT_API_BASE=http://localhost:7000
INSIGHT_API_KEY={API Key from Redash}
#web Api End point
WEB_API_BASE_URL=http://localhost:5000
FORMSFLOW_API_URL=http://localhost:5000
CAMUNDA_API_URI=http://localhost:8000/camunda
Environment variables for mongodb database
WEBAPI_ANALYTICS_USERNAME=mongo
WEBAPI_ANALYTICS_PASSWORD=changeme
WEBAPI_ANALYTICS_DATABASE=analytics
MONGODB_URI=mongodb://mongo:changeme@forms-flow-webapi-analytics-db:27019/analytics?authSource=admin&authMechanism=SCRAM-SHA-256
#Websocket Settings for task events
WEBSOCKET_SECURITY_ORIGIN={Allowed Origin}
#Allowed Options: TASK_EVENT, TASK_EVENT_DETAILS. To send multiple seperate by comma.
WEBSOCKET_MESSAGE_TYPE=TASK_EVENT
WEBSOCKET_ENCRYPT_KEY={Any secret phrase}