An overview of new security realm implementations
We have added a new functionality to WildFly Elytron
It is now possible to configure security realms that delegate authentication and authorization to multiple realms.
Distributed realm
First added realm is the distributed-realm
, which can be used to join multiple realms into one, for example if you
have user data on two databases. Unlike aggregate-realm
, which uses one realm for authentication and multiple realms
or authorization, distributed-realm
uses multiple realms for both authentication and authorization.
Lets say we have two realms called realm1
and realm2
, which we want to use as one. We can do so in CLI using following command:
/subsystem=elytron/distributed-realm=newrealm:add(realms=[realm1, realm2])
which results in following configuration:
<security-realms>
...
<distributed-realm name="newrealm" realms="realm1 realm2"/>
...
</security-realms>
The new distributed-realm newrealm
will use both realm1
and realm2
for authentication and authorization.
Failover realm
The other added realm is the failover-realm
, which enables you to configure a backup realm in case another realm is
unavailable. For example, we can have a file based as a backup for database realm,
so we can still access the deployed application using backup identity stored in the file based realm,
even if we lose network connection to the jdbc-realm
database.
Lets say we have user data in jdbc-realm called realm1
and we want to use filesystem-realm called realm2
as a backup.
We can do this in CLI using following command:
/subsystem=elytron/failover-realm=newrealm:add(delegate-realm=realm1, failover-realm=realm2)
which results in following configuration:
<security-realms>
...
<failover-realm name="newrealm" delegate-realm="realm1" failover-realm="realm2"/>
...
</security-realms>
The new failover-realm newrealm
will use realm1
as a primary realm for authentication and authorization, but if the
realm becomes unavailable, it will switch to using realm2
. The failover happens per authentication, so if the realm1
becomes
unavailable for a short time, you will be able to authenticate using it as soon as it comes back up without any reloads.
Summary
This blog post has given an overview of WildFly Elytron distributed-realm and failover-realm.