[[servlet-authentication]] = Authentication Spring Security provides comprehensive support for <>. This section discusses: [[servlet-authentication-architecture]] *Architecture Components* This section describes the main architectural components of Spring Security's used in Servlet authentication. If you need concrete flows that explain how these pieces fit together, look at the <> specific sections. * <> - the `SecurityContextHolder` is where Spring Security stores the details of who is <>. * <> - is obtained from the `SecurityContextHolder` and contains the `Authentication` of the currently authenticated user. * <> - can be the input to `AuthenticationManager` to provide the credentials a user has provided to authenticate or the current user from the `SecurityContext`. * <> - an authority that is granted to the principal on the `Authentication` (i.e. roles, scopes, etc.) * <> - the API that defines how Spring Security's Filters perform <>. * <> - the most common implementation of `AuthenticationManager`. * <> - used by `ProviderManager` to perform a specific type of authentication. * <> - used for requesting credentials from a client (i.e. redirecting to a log in page, sending a `WWW-Authenticate` response, etc.) * <> - a base `Filter` used for authentication. This also gives a good idea of the high level flow of authentication and how pieces work together. [[servlet-authentication-mechanisms]] *Authentication Mechanisms* // FIXME: brief description * <> - how to authenticate with a username/password * <> - OAuth 2.0 Log In with OpenID Connect and non-standard OAuth 2.0 Login (i.e. GitHub) * <> - SAML 2.0 Log In * <> - Central Authentication Server (CAS) Support * <> - how to remember a user past session expiration * <> - authenticate with JAAS * <> - OpenID Authentication (not to be confused with OpenID Connect) * <> - authenticate with an external mechanism such as https://www.siteminder.com/[SiteMinder] or Java EE security but still use Spring Security for authorization and protection against common exploits. * <> - X509 Authentication // FIXME: Add other mechanisms // We intentionally do not increase leveloffset, this is just for organization vs document structure include::architecture/index.adoc[] include::unpwd/index.adoc[leveloffset=+1] include::session-management.adoc[] include::rememberme.adoc[] include::openid.adoc[] include::anonymous.adoc[] include::preauth.adoc[] include::jaas.adoc[] include::cas.adoc[] include::x509.adoc[] include::runas.adoc[] include::logout.adoc[] include::events.adoc[]