Class CachingAuthorizer<P extends Principal>

java.lang.Object
io.dropwizard.auth.CachingAuthorizer<P>
Type Parameters:
P - the type of principals on which the authorizer operates
All Implemented Interfaces:
Authorizer<P>

public class CachingAuthorizer<P extends Principal> extends Object implements Authorizer<P>
An Authorizer decorator which uses a Caffeine cache to temporarily cache principals' role associations.

Cache entries include both inclusion and exclusion of a principal within a given role.

  • Constructor Summary

    Constructors
    Constructor
    Description
    CachingAuthorizer(com.codahale.metrics.MetricRegistry metricRegistry, Authorizer<P> authorizer, com.github.benmanes.caffeine.cache.Caffeine<Object,Object> builder)
    Creates a new cached authorizer.
    CachingAuthorizer(com.codahale.metrics.MetricRegistry metricRegistry, Authorizer<P> authorizer, com.github.benmanes.caffeine.cache.Caffeine<Object,Object> builder, Supplier<com.github.benmanes.caffeine.cache.stats.StatsCounter> supplier)
    Creates a new cached authorizer.
    CachingAuthorizer(com.codahale.metrics.MetricRegistry metricRegistry, Authorizer<P> authorizer, com.github.benmanes.caffeine.cache.CaffeineSpec cacheSpec)
    Creates a new cached authorizer.
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    authorize(P principal, String role, @Nullable jakarta.ws.rs.container.ContainerRequestContext requestContext)
    Decides if access is granted for the given principal in the given role.
    getAuthorizationContext(P principal, String role, @Nullable jakarta.ws.rs.container.ContainerRequestContext requestContext)
    Returns an AuthorizationContext object, to be used in CachingAuthorizer as cache key.
    void
    invalidate(P principal)
    Discards any cached role associations for the given principal.
    void
    invalidate(P principal, String role, jakarta.ws.rs.container.ContainerRequestContext requestContext)
    Discards any cached role associations for the given principal and role.
    void
    Discards all cached role associations.
    void
    invalidateAll(Iterable<P> principals)
    Discards any cached role associations for the given collection of principals.
    void
    invalidateAll(Predicate<? super P> predicate)
    Discards any cached role associations for principals satisfying the given predicate.
    long
    Returns the number of principals for which there are cached role associations.
    com.github.benmanes.caffeine.cache.stats.CacheStats
    Returns a set of statistics about the cache contents and usage.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • CachingAuthorizer

      public CachingAuthorizer(com.codahale.metrics.MetricRegistry metricRegistry, Authorizer<P> authorizer, com.github.benmanes.caffeine.cache.CaffeineSpec cacheSpec)
      Creates a new cached authorizer.
      Parameters:
      metricRegistry - the application's registry of metrics
      authorizer - the underlying authorizer
      cacheSpec - CaffeineSpec
    • CachingAuthorizer

      public CachingAuthorizer(com.codahale.metrics.MetricRegistry metricRegistry, Authorizer<P> authorizer, com.github.benmanes.caffeine.cache.Caffeine<Object,Object> builder)
      Creates a new cached authorizer.
      Parameters:
      metricRegistry - the application's registry of metrics
      authorizer - the underlying authorizer
      builder - a CaffeineSpec
    • CachingAuthorizer

      public CachingAuthorizer(com.codahale.metrics.MetricRegistry metricRegistry, Authorizer<P> authorizer, com.github.benmanes.caffeine.cache.Caffeine<Object,Object> builder, Supplier<com.github.benmanes.caffeine.cache.stats.StatsCounter> supplier)
      Creates a new cached authorizer.
      Parameters:
      metricRegistry - the application's registry of metrics
      authorizer - the underlying authorizer
      builder - a Caffeine spec
      supplier - a Supplier<com.github.benmanes.caffeine.cache.stats.StatsCounter>
  • Method Details

    • authorize

      public boolean authorize(P principal, String role, @Nullable jakarta.ws.rs.container.ContainerRequestContext requestContext)
      Description copied from interface: Authorizer
      Decides if access is granted for the given principal in the given role.
      Specified by:
      authorize in interface Authorizer<P extends Principal>
      Parameters:
      principal - a Principal object, representing a user
      role - a user role
      requestContext - a request context.
      Returns:
      true, if the access is granted, false otherwise
    • getAuthorizationContext

      public AuthorizationContext<P> getAuthorizationContext(P principal, String role, @Nullable jakarta.ws.rs.container.ContainerRequestContext requestContext)
      Description copied from interface: Authorizer
      Returns an AuthorizationContext object, to be used in CachingAuthorizer as cache key.
      Specified by:
      getAuthorizationContext in interface Authorizer<P extends Principal>
      Parameters:
      principal - a Principal object, representing a user
      role - a user role
      requestContext - a request context.
      Returns:
      AuthorizationContext object, to be used in CachingAuthorizer.
    • invalidate

      public void invalidate(P principal, String role, jakarta.ws.rs.container.ContainerRequestContext requestContext)
      Discards any cached role associations for the given principal and role.
      Parameters:
      principal -
      role -
      requestContext -
    • invalidate

      public void invalidate(P principal)
      Discards any cached role associations for the given principal.
      Parameters:
      principal -
    • invalidateAll

      public void invalidateAll(Iterable<P> principals)
      Discards any cached role associations for the given collection of principals.
      Parameters:
      principals - a list of principals
    • invalidateAll

      public void invalidateAll(Predicate<? super P> predicate)
      Discards any cached role associations for principals satisfying the given predicate.
      Parameters:
      predicate - a predicate to filter credentials
    • invalidateAll

      public void invalidateAll()
      Discards all cached role associations.
    • size

      public long size()
      Returns the number of principals for which there are cached role associations.
      Returns:
      the number of cached principals
    • stats

      public com.github.benmanes.caffeine.cache.stats.CacheStats stats()
      Returns a set of statistics about the cache contents and usage.
      Returns:
      a set of statistics about the cache contents and usage