[keycloak-user] Integration with legacy systems

Marek Posolda mposolda at redhat.com
Mon Mar 13 04:50:56 EDT 2017


On 10/03/17 18:41, Marcelo Nardelli wrote:
> Hello,
>
> We recently started using Keycloak in our organization but we are not sure
> which approach would be best to use when there are some user permissions
> that rely on information managed by other systems (legacy systems that we
> have).
>
> In our specific case, we have the following setup:
>
> - A Keycloak server integrated with LDAP to retrieve users
> - A Java backend protected by Bearer Token
> - A Javascript frontend developed in EmberJS that accesses the Java backend
>
> One of the requirements we have is the following:
>
> - Users who have a certain managerial position must have a common set of
> permissions.
>
> To meet this requirement, we created a group, included the relevant users,
> and assigned the appropriate permissions (roles) to the group. This works
> fine for us.
>
> However, we have a legacy system that manages the positions that a user
> assumes in the organization, so that a user who today holds a management
> position may no longer have that position tomorrow in the legacy system.
> When he loses the management position, someone needs to be warned and
> manually remove the user from the Keycloak group.
>
> Ideally, we would like this process not to be so manual. Which approaches
> would be recommended for this situation?
>
> - Make the legacy system somehow access Keycloak to remove users from the
> group when needed
That should work. We have admin REST API, which can be used to remove 
user from some group. So if you can somehow notify that change in legacy 
system will invoke this REST API, you should be fine.
> - Make our application query the legacy system to verify that the
> permissions that are on the token are appropriate for the user's current
> position
That can work too, but question here is performance.
> - Change the keycloak in some way to query the legacy system and determine
> based on this information whether the user should receive the permissions
That can finally work too. If your users are in LDAP and the information 
about group membership is in LDAP too, you can use our builtin LDAP 
Group mapper. Then will mean that Keycloak will be able to retrieve 
group memberships from LDAP. If this information is somewhere else, but 
still, your users are in LDAP, you can possibly implement new LDAP 
mapper, which will be able to query your 3rd party system. But note that 
we have caching for LDAP, so Keycloak may not be immediatelly aware of 
the change in legacy system.

In shortcut, last solution is the best in case that your group 
membership can be retrieved from LDAP. Otherwise probably the first one 
as long as you can be automatically notified by your legacy system. 
Really depends on the details of your usecase which solution is best.

Marek
>
> Thanks for the attention
>
> Marcelo Nardelli
> _______________________________________________
> keycloak-user mailing list
> keycloak-user at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/keycloak-user




More information about the keycloak-user mailing list