RapidMiner Identity (RMID)
RMID is the authentication and authorization service used by Auto Model Web.
RMID is a Spring Boot application and so it can be configured using the
SPRING_PROFILES_ACTIVE environment variable in docker-compose.yml.
This a comma separated list of the active spring profiles -- the default value is
This means that default database is PostgreSQL, and default identity provider is the internal database.
On top of these profiles you can also specify environment variables -- these will override the default value of the profiles.
RMID has its own database -- in the default docker setup this is in the same container/database instance as Auto Model Web's database -
rapidminer-automodel-db -- but it could be in a separate database instance.
The supported database profiles are
RMID can be configured to use several identity providers (IDP) to authenticate users.
The following table shows the different IDP's and the corresponding spring profile:
|IDP||Spring profile||Protocol||Login UI/method|
|DB||is-db||N/A||username/password form, HTTP POST|
|Auth0||is-auth0||OAuth2 password grant||username/password form, HTTP POST|
|LDAP capable 3rd party IDP||is-ldap||LDAP||username/password form, HTTP POST|
|SAML capable 3rd party IDP||is-saml||SAML||hyperlink redirecting to SAML provider|
Multiple IDPs can be switched on -- in that case RMID will try to authenticate with all of them until it succeeds.
RMID Login screen can be accessed at
The login type is determined by the configured IDP -- it is a username/password form for DB, LDAP, AUTH0, and for SAML it is a link redirecting to the SAML IDP.
If SAML and another IDP are used together, you have to explicitly configure a dual login type with the help of the environment variable:
RMID_FRONTEND_LOGINTYPE: LOGINTYPE_DUAL -- this will display a login form and redirect link together.
After a successful login, the user is automatically redirected to Auto Model Web.
After a successful logout from Auto Model Web, the user is redirected back to RMID.
RMID Administration app can be accessed at
/rmid/admin -- default credentials are
For each user there is an entry in the
RMID_USERS table and one entry in the profile tables for the configured IDPs.
RMID_USERS table contains user's
displayName and a few Auto Model Web related fields.
Users can be banned by switching off
active field. This results in the user being logged out from Auto Model Web (and any service using RMID) within 5 minutes (configurable in the service).
The profile tables contain user data coming from a specific IDP.
Local users are created and updated in the admin app -- they are stored
External profiles are read-only in the admin -- their content is created and updated during login based on user info from the external IDP.
For instance, if
is-auth0, is-saml profiles are active,
RMID_PROFILE_SAML tables will contain user data coming from these IDPs.
In this case, the User view in the Admin app will contain 3 forms:
- one editable form for the users table (displayName, active, acceptEula)
- 2 read-only forms for the 2 profiles -- saml and auth0
The following table lists IDPs and profile tables:
|IDP||Profile table||Admin operations||Display name|
|SAML||RMID_PROFILE_SAML||R||SAML name assertion|
If Auth0 is configured as IDP, a user sign-in with Auth0 credentials will create an entry in
RMID_USERS table and an entry in
RMID_PROFILE_AUTH0 table if necessarry.
Auth0 nickname will be stored in profile table and also copied to
RMID_USERS displayName field.
On later logins nickname and displayName will be updated for this user if there was a change on the IDP side.
The default display name mapping can changed in the case of SAML.
Groups, roles, privileges
RMID defines a role based authorization system on the service level governed by these entities:
User ↔ Group ↔ Role ↔ Privilege
The entities are in many-to-many relationship.
A user can access specific API endpoints and URLs based on the privileges he or she has.
Privileges are predefined in the system and read-only.
However privileges are not directly assigned to users, but to roles.
Roles are predfined sets of privileges. Roles are assigned to groups and finally users are assigned to groups.
For example to give admin right to a user you would add the user to the RMID_ADMIN group. This group has by default ADMIN role assigned, and ADMIN role has the 'rmid:admin' privilege assigned.
This system enables fine grained control but is also powerful.
Groups can be created freely to reflect organisational hierarchy or for the needs of a data-science project.