SecurityContextHolder - contains and provides access to the SecurityContext in the application.
SecurityContext - the default implementation of Spring Security containing the Authentication object.
Authentication - provides a token for an authentication request or for a principal who has authenticated. It also contains a list of powers that the principal has access to.
GrantedAuthority - Contains the authority granted to the GrantedAuthority principal.
UserDetails - contains information about the user: password, login, permissions. This information is used to create an Authentication object after successful authentication.
UserDetailsService - this service extracts information about the user from the repository (program memory, database, etc.) and puts it in UserDetails.