Authorizers: (v6.2)
Authorizers are meant to check authorizations to access an url (in the “security filter”):
- either on the authenticated user profile: has the user the appropriate role?
- or on the web context: can you call this resource in an iframe?
Notice that this concept of
Authorizer has a broader meaning than generally in the security field.Generally, authorizers are defined in the security configuration of the application.
Various authorizers are available:
- Roles/permissions - Anonymous/remember-me/(fully) authenticated - Profile type, attribute
- CORS - CSRF - Security headers - IP address, HTTP method
▸ Default authorizer names
Most pac4j implementations use pac4j logics and authorizers and thus the DefaultAuthorizationChecker component. In that case, the following Authorizer are automatically available via the following short names:
hstsfor theStrictTransportSecurityHeaderauthorizernosnifffor theXContentTypeOptionsHeaderauthorizernoframefor theXFrameOptionsHeaderauthorizerxssprotectionfor theXSSProtectionHeaderauthorizernocachefor theCacheControlHeaderauthorizersecurityheadersas a shortcut forhsts,nosniff,noframe,xssprotection,nocachecsrfTokenfor theCsrfTokenGeneratorAuthorizerauthorizercsrfCheckfor theCsrfAuthorizerauthorizercsrfas a shortcut forcsrfToken,csrfCheckisAnonymousfor theIsAnonymousAuthorizerauthorizerisAuthenticatedfor theIsAuthenticatedAuthorizerauthorizerisFullyAuthenticatedfor theIsFullyAuthenticatedAuthorizerauthorizerisRememberedfor theIsRememberedAuthorizerauthorizerallowAjaxRequestsfor a default configuration of theCorsAuthorizerauthorizer with theAccess-Control-Allow-Originheader set to*.
These short names are defined as constants in DefaultAuthorizers.
▸ The composition of authorizers
You can create a composition (conjunction or disjunction) of authorizers. For example:
final Authorizer<CommonProfile> authorizer = or(
and(
requireAnyRole("profile_role1"),
requireAnyPermission("profile_permission1")
),
and(
requireAnyRole("profile_role2"),
requireAnyPermission("profile_permission2")
)
);