How to force authentication in Java api?

Hi! I am able to start processes & tasks through these services without authenticating a valid user. I want to know how to force the Java api to look for an authenticated user before executing?I am using Camunda BPM 7.13. I am trying use IdentityService.setAuthenticatedUserId ,It will appear

Preformatted text org.camunda.bpm.engine.exception.NullValueException: no processes deployed with key '***': processDefinition is null.

If I cancel this method, startProcessInstanceByKey will be success!

Hi @clark,

your way to authenticate is correct. But you have to authorize your user to start the process instance. The user has to have authorization on the process definition and the process instance. https://docs.camunda.org/manual/7.13/user-guide/process-engine/authorization-service/.

Hope this helps, Ingo

1 Like

Thanks! I am trying

org.camunda.bpm.engine.authorization.Authorization authProcessDefinition = authorizationService.createNewAuthorization(1);
org.camunda.bpm.engine.authorization.Authorization authProcessInstance = authorizationService.createNewAuthorization(1);
authProcessDefinition.setUserId(“02004361”);
authProcessInstance.setUserId(“02004361”);
authProcessInstance.setResource(Resources.PROCESS_INSTANCE);
authProcessDefinition.setResource(Resources.PROCESS_DEFINITION);
authProcessInstance.setResourceId("");
authProcessDefinition.setResourceId("
");
authProcessDefinition.addPermission(Permissions.CREATE_INSTANCE);
authProcessInstance.addPermission(Permissions.CREATE);
authorizationService.saveAuthorization(authProcessDefinition);
authorizationService.saveAuthorization(authProcessInstance);
processEngineConfiguration.setAuthorizationEnabled(true);
apiIdentityService.setAuthenticatedUserId(userId);
ProcessInstance processInstance = apiRuntimeService.startProcessInstanceByKey(processDefinitionKey,businessKey,variables);

but still exist erro. Please help me . :皱眉:

Hi @clark

should be:

authProcessInstance.setResourceId("*");
authProcessDefinition.setResourceId("yourProcessDefinitionID");

Hope this helps, Ingo

Thanks! All the problems have been solved. :咧着嘴笑: