Details
-
Enhancement
-
Resolution: Unresolved
-
Major
-
None
-
13.0.0
-
None
Description
Motivation:
On keycloak’s account management console, if a realm has a lot of identity providers, the user is presented with a huge list which he has to scroll in order to find the desired identity provider to link his account with, since there is no search/filtering in the UI. Moreover, a lot of information is fetched, making the webpage quite resource demanding in terms of memory and network bandwidth.
Design proposal:
We propose to perform minimal changes on the current design and add a paging and filtering on both {Linked Login Providers, Unlinked Login Providers} lists.
Our enhancement is done by making as few as possible changes on both the react and java sides.
So, with the following minimal changes:
- on the backend side (java), we enabled LinkedAccountRepresentation items to be fetched in pages in LinkedAccountsResource.java
- on the frontend side (react/patternfly), we added a patternfly Pagination element to drive the requests of the pages from the backend and also added a filter, to filter out (server-side) the response
The loading times are hugely improved:
We have ~4300 IdPs in our keycloak and we measured the loading times and the idp-related data fetching.
Before | After | |
Data needed to fetch from /auth/realms/master/account/linked-accounts | 1,1 mb | 3,5 kb |
Total time to load webpage | 7,49 sec | 0,834 sec |
We also attach two screenshots to showcase the UI changes:
Before:
After: