Not so long ago, I wrote a series of posts about Flowable:

And recently, I wrote a series of posts about Keycloak:

In this post, I'll walk you through the steps I followed to get Keycloak to work with Flowable and OpenLDAP.

Getting Started

Flowable does not support email as username, so I had to update my realm's 'Login' settings:

Check 'User registration' and 'Edit username'. Uncheck everything else and then click the 'Save' button.

The Login (Username) page:

The Register (Username) page:

Flowable and OpenLDAP

Follow the steps in this post to configure Flowable to use OpenLDAP.

User Federation

To create a new User Federation click 'User Federation' in the sidemenu and then choose 'ldap' as the provider:

Check 'Enabled' and 'Import Users' then select 'Edit Mode: WRITABLE' and check 'Sync Registrations' so that user registrations will be created in OpenLDAP.

Select 'Vendor: Other' and enter 'uid' for the 'Username LDAP attribute', the 'RDN LDAP attribute' and the 'UID LDAP attribute'.

You can use an LDAP Browser to check your settings:

Network settings:

Authentication settings:

Note: I'm using Docker Desktop for Mac hence the need to use the special DNS name: host.docker.internal

User Registration

Now when a new user creates an account:

The new user is available in Flowable:

And in Serendipity:

Keycloak Issue

I raised the following Keycloak issue:

Afterword

Flowable's REST API supports HTTP Basic access authentication. I'm using Angular 8 and I had to update my proxy.conf.json as follows:

  "/flowable-task": {
    "target": "http://localhost:8080",
    "secure": false,
    "logLevel": "debug",
    "headers": {
      "Content-Type": "application/json",
      "Authorization": "Basic Zmxvd2FibGUtcmVzdDp0ZXN0"
    }
  }

What's Next

In the next post, I'll walk you through the steps I followed to create a RESTful API (Resource Server) that embeds Flowable's BPMN engine, exposes the BPMN engine's RESTful API and leverages Spring Security’s support for OAuth 2.0 and Jason Web Tokens (JWTs).

Source Code: