Spring Security

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
Spring Security
Developer4
Stable release
6.5.1 / June 16, 2025; 9 months ago (2025-06-16) [1]
Repository
  • {{URL|example.com|optional display text}}Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
Written inJava
Engine
    Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
    Operating systemCross-platform
    Typeweb application framework security
    LicenseApache License 2.0
    Websiteprojects.spring.io/spring-security/

    Spring Security is a Java/Java EE framework that provides authentication, authorization and other security features for enterprise applications. The project was started in late 2003 as 'Acegi Security' (pronounced Ah-see-gee /ɑːs/, whose letters are the first, third, fifth, seventh, and ninth characters from the English alphabet, in order to prevent name conflicts[2]) by Ben Alex, with it being publicly released under the Apache License in March 2004. Subsequently, Acegi was incorporated into the Spring portfolio as Spring Security, an official Spring sub-project. The first public release under the new name was Spring Security 2.0.0 in April 2008, with commercial support and training available from SpringSource.

    Authentication flow

    [edit | edit source]

    Diagram 1 shows the basic flow of an authentication request using the Spring Security system. It shows the different filters and how they interact from the initial browser request, to either a successful authentication or an HTTP 403 error.

    Browser submits "authentication credentials"
    "Authentication mechanism" collects the details
    An "authentication request" object is built
    Authentication request sent to an AuthenticationManager
    AuthenticationManager (this is responsible for passing requests through a chain of AuthenticationProviders)
    "Authentication provider" will ask a UserDetailsService to provide a UserDetails object
    The resultant UserDetails object (which also contains the GrantedAuthority[]s) will be used to build the fully populated Authentication object.
    If "Authentication mechanism" receives back the fully populated Authentication object, it will deem the request valid, put the Authentication into the SecurityContextHolder; and cause the original request to be retried.
    If, on the other hand, the AuthenticationProvider rejected the request, the authentication mechanism will ask the user agent to retry.
    AbstractSecurityInterceptor authorizes the regenerated request and throws Java exceptions. (Asks AccessDecisionManager for decision.)
    ExceptionTranslationFilter translates the exceptions thrown by AbstractSecurityInterceptor into HTTP related error codes
    Error code 403 – if the principal has been authenticated and therefore simply lacks sufficient access
    Launch an AuthenticationEntryPoint – if the principal has not been authenticated which is an authentication mechanism

    Key authentication features

    [edit | edit source]

    Key authorization features

    [edit | edit source]

    Instance-based security features

    [edit | edit source]

    Other features

    [edit | edit source]

    Releases

    [edit | edit source]
    • 2.0.0 (April 2008)
    • 3.0.0 (December 2009)
    • 3.1.0 (December 7, 2011)
    • 3.1.2 (August 10, 2012)
    • 3.2.0 (December 16, 2013)
    • 4.0.0 (March 26, 2015)
    • 4.1.3 (August 24, 2016)
    • 4.2.0 (November 10, 2016)
    • 3.2.10, 4.1.4, 4.2.1 (December 22, 2016)
    • 4.2.2 (March 2, 2017)
    • 4.2.3 (June 8, 2017)
    • 5.0.0 (November 28, 2017)
    • 5.0.8, 4.2.8 (September 11, 2018)[5]
    • 5.1.0 GA (September 27, 2018)[6]
    • 5.1.1, 5.0.9, 4.2.9 (October 16, 2018)[7]
    • 5.1.2, 5.0.10, 4.2.10 (November 29, 2018)[8]
    • 5.1.3, 5.0.11, 4.2.11 (January 11, 2019)[9]
    • 5.1.4 (February 14, 2019)[10]
    • 5.1.5, 5.0.12, 4.2.12 (April 3, 2019)[11]

    Citations

    [edit | edit source]
    1. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    3. ^ a b c Deinum et al. 2014.
    4. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    5. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    6. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    7. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    8. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    9. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    10. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    11. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).

    References

    [edit | edit source]
    • Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    • Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    [edit | edit source]

    Lua error in mw.title.lua at line 392: bad argument #2 to 'title.new' (unrecognized namespace name 'Portal').