Data is served from a data source to a user by way of an interface having a
cache. The data source has a plurality of pre-defined user groups. The interface
receives a request from the user for the data from the data source and requests
the data source to provide a cache key corresponding to the requesting user. The
data source generates the cache key for the requesting user based on a set of the
user groups of such user and returns the generated cache key to the interface.
The generated cache key represents exact access rights for the user based on the
set of the user groups of the user. The interface thereafter determines whether
any data that satisfies the request is stored in the cache with the generated cache key.