Realms, users and roles
Authentication and Authorization in the OpenRemote stack is powered by the Keycloak OpenID Connect Provider
and utilises OAuth 2.0
. Generally within in an instance of the OpenRemote stack the Keycloak server is accessible at: /auth
but should only be used by advanced users that know what they're doing as you can completely break your instance.
Realms
Realms (also known as Tenants) in OpenRemote provide a layer of isolation with each realm having their own users, assets, rules and even UI styling. This allows for multi-tenancy use cases and realms can only be managed by superusers. A realm user can only see and access their own realm and resources within this realm, super users are able to access all realms. Individual Realms can be reached at https://youradress/manager/?realm=realmname
. For more details, see Realms.
Users
There are two basic types of user within OpenRemote, all can be managed within the Manager UI or programmatically via custom setup code:
Regular users
These are users that login interactively by filling in their username and password on the login page, in OAuth 2.0 terminology this is the authorizationCode
grant type.
Service users
These are users that login programmatically using a client ID and secret and is designed for confidential clients to connect to the Manager APIs (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the client_credentials
grant type.
Roles
Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in ClientRole.
Realm roles
There are two additional realm roles for users within OpenRemote.
Restricted user realm role
User set with realm role 'Restricted user' and are linked to one or mores assets will only have visibility to those assets. Note that they will only see the attributes of that asset which have been set to 'restricted access read -or write'. Restricted users will also have the roles they are assigned to.
Super admin realm role
Within the system we have the concept of superusers, these are users in the master realm with the Super admin
realm role, they have the ability to create and manage realms and everything within any realm. Note that you should additionally give them all 'read/write' roles.