[keycloak-dev] client query caches getting complicated

Bill Burke bburke at redhat.com
Thu Feb 18 09:03:36 EST 2016



On 2/18/2016 8:56 AM, Stian Thorgersen wrote:
>
>
> On 18 Feb 2016 13:53, "Bill Burke" <bburke at redhat.com 
> <mailto:bburke at redhat.com>> wrote:
> >
> >
> >
> > On 2/18/2016 2:07 AM, Stian Thorgersen wrote:
> >>
> >> Having two many joins (fetching everything about a realm in one 
> query) is probably going to be bad for performance, especially if 
> there are loads of clients and roles. There can also be large 
> difference between different vendors.
> >>
> >> Another thing in the future we should separate clients out into a 
> separate store. There could be thousands of clients or even more. So 
> they should be treated in a similar fashion to users. Does that have 
> impact on how we improve/refactor/fix caching now?
> >>
> >
> > As I said before, OIDC logout queries *ALL* clients to obtain a list 
> of valid redirects to compare against the redirect-uri passed to the 
> logout endpoint.  That's about the only very frequent, 
> non-adminstrative function that requires obtaining a list of all 
> clients.  We also really need a way to figure out of a realm 
> invalidation is the result of the realm being removed or just 
> updated.  Otherwise, you'll be evicting thousands of clients and other 
> realm related items every time a realm is updated.  Actually, maybe 
> we're better off not evicting clients on a realm removal, and just 
> registering invalidations for every client in the realm instead.
>
> Why does OIDC logout need to list all clients? It used to just get the 
> clients that had client sessions for the specific user session.
>
> >
>
OIDC logout endpoint has a redirect_uri parameter which tells keycloak 
where to redirect *after* logout happens.  This redirect_uri needs to be 
checked.   we may or may not know who initiated the logout request based 
on the "id_token_hint" parameter, nor is it guaranteed that the 
redirect-uri is in the list of clients that are part of the session.

This is one of the reasons why I wanted to create a generic query 
cache.  I could cache this list of redirect uri patterns and not load 
every client.

-- 
Bill Burke
JBoss, a division of Red Hat
http://bill.burkecentral.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/keycloak-dev/attachments/20160218/960b5dd6/attachment.html 


More information about the keycloak-dev mailing list