Spring takes away some of the great complexities of JEE and is a more light-weight and agile framework. It enables enterprise-level applications to be built with plain POJOs. But Spring also introduces dependency injection and inversion of control as important vehicles to help meet requirements that are shared across multiple layers in an application. This is especially important from a security perspective since security typically is a cross-cutting concern.
Spring Security, a project of Spring, is aimed at providing authentication and authorization framework around the core Spring. It started its life as Acegi Security in 2003 before getting absorbed into the Spring framework. Recently we saw the release of version 4 of Spring Security.
Spring Security examines security as a cross-cutting concern and provides good separation between application logic and security and business logic. Architecturally and from an implementation point of view, Spring Security provides the right capabilities to support an XACML based externalized policy-driven access control architecture.
The ABAC Angle
Version 3 of Spring introduced the concept of Spring Expression Language (SpEL), a language that “supports querying and manipulating an object graph at runtime”. This can also be used to provide authorization support in the Spring security framework. While Spring Security comes with built-in expressions like hasRole, hasPermission etc. (that can be used in conjunction with Web and Method security expressions), the existing capability is still not enough to support policy-based, fine-grained, externalized access control systems, like XACML.
Axiomatics provides an SDK for customers who are interested in integrating XACML into their Spring and Spring Security framework based enterprise Java applications. In our webinar “Enhancing Spring Security” we explore the approach and provide some details about the SDK. You can find the recording below: