Security - Authentication and Authorization

Imixs-Office-Workflow supports a broad set of security mechanisms to authentication and authorizes users. You can setup security directly on the application server using the corresponding security domain configuration. For this Imixs-Office-Workflow offers a Form-Based Authentication realm named imixsrealm per default. When you build the Wildfly Docker image a database security domain is configured per default. You can change the security domain directly in the standalone.xml file in various ways. E.g. you can change the security domain from a database realm to a LDAP based realm. Another way is to implement the security with the Jakarta EE Security API 3.0. This module includes a corresponding implementation for OpenID Connect.

The following section will describe details about how to setup security in Imixs-Office-Workflow

User Profile Patterns

Imixs-Office-Workflow supports different input formats for the user login name. This is helpful to avoid different spellings of a login name. This feature is supported by the Plugin:

org.imixs.marty.profile.ProfilePlugin

The plugin should be added to the system workflow model including the Profile Workflow.

Regex Pattern for UserID

During a Login or when you create new user in the user database, the plugin verifies the userId and email address for input patterns and validates for duplicates. The input pattern for the userID can be defined by the imixs property security.userid.input.pattern

The default value is ^[A-Za-z0-9.@\\-\\w]+ which allows normal characters and numbers

To extend the pattern so the for example also special characters are allowed you can use the following regex:

security.userid.input.pattern=^[\p{L}0-9.@\\-]+

to set this param in the Environment variables of your server use the UNIX style for parameter names:

DEFAULT_USERID_PATTERN=^[\p{L}0-9.@\\-]+

Special Characters in Login Name:

Note: Depending on the server it may be necessary to configure also the encoding of the servlet container. For example for Wildfly the servlet-container parameter in the undertow subsystem need to be edited. And the default-encoding attribute with the value UTF-8:

....
            <servlet-container name="default" default-encoding="UTF-8">
                <jsp-config />
                <websockets />
            </servlet-container>
...

Regex Pattern for E-Mail Address

Also the E-Mail address is validated by the ProfilePlugin. by teh following pattern:

EMAIL_PATTERN = "^[_A-Za-z0-9-\\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[-A-Za-z0-9]+)*(\.[A-Za-z]{2,})$

You can adapt this pattern if needed.

Upper and Lowercase Input

The login page of Imixs-Office-Workflow lowercases all inputs for the userid by default. This is controlled by the property security.userid.input.mode. The following options are supported:

  • lowercase - userid input will be automatically lowercased
  • uppercase - userid input will be automatically uppercased
  • none - userid input will not be changed

You can change this setting by the imixs.properties or in the environment variables (take care about the unix style for environment variable names!)

Unique E-Mail Address

Per default a E-Mailaddress in the Imixs Profiles need to be unique. This feature can be disabled by the Imixs property security.email.unique by setting its value to false.

Profile Image Width

User can set a profile image in Imixs-Office-Workflow. The width of the image is automatically set to a max with of 600px. This can be changed by the imixs property profile.image.maxwith