public class SecurityContextLoginModule extends Object implements LoginModule
LoginModule
that uses a Spring Security SecurityContext
to provide authentication.
This LoginModule provides opposite functionality to the JaasAuthenticationProvider
API, and should not
really be used in conjunction with it.
The JaasAuthenticationProvider
allows Spring Security to authenticate against Jaas.
The SecurityContextLoginModule allows a Jaas based application to authenticate against Spring Security.
If there is no Authentication in the SecurityContextHolder
the login() method will throw a LoginException
by default. This functionality can be changed with the ignoreMissingAuthentication option by setting it
to "true". Setting ignoreMissingAuthentication=true will tell the SecurityContextLoginModule to simply return false
and be ignored if the authentication is null.
Constructor and Description |
---|
SecurityContextLoginModule() |
Modifier and Type | Method and Description |
---|---|
boolean |
abort()
Abort the authentication process by forgetting the Spring Security
Authentication . |
boolean |
commit()
Authenticate the
Subject (phase two) by adding the Spring Security
Authentication to the Subject 's principals. |
void |
initialize(Subject subject,
CallbackHandler callbackHandler,
Map sharedState,
Map options)
Initialize this
LoginModule . |
boolean |
login()
Authenticate the
Subject (phase one) by extracting the Spring Security
Authentication from the current SecurityContext . |
boolean |
logout()
Log out the
Subject . |
public boolean abort() throws LoginException
Authentication
.abort
in interface LoginModule
LoginModule
should be ignored.LoginException
- if the abort failspublic boolean commit() throws LoginException
Subject
(phase two) by adding the Spring Security
Authentication
to the Subject
's principals.commit
in interface LoginModule
LoginModule
should be ignored.LoginException
- if the commit failspublic void initialize(Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options)
LoginModule
. Ignores the callback handler, since the code establishing the
LoginContext
likely won't provide one that understands Spring Security. Also ignores the
sharedState
and options
parameters, since none are recognized.initialize
in interface LoginModule
subject
- the Subject
to be authenticated.callbackHandler
- is ignoredsharedState
- is ignoredoptions
- are ignoredpublic boolean login() throws LoginException
Subject
(phase one) by extracting the Spring Security
Authentication
from the current SecurityContext
.login
in interface LoginModule
LoginModule
should be ignored.LoginException
- if the authentication failspublic boolean logout() throws LoginException
Subject
.logout
in interface LoginModule
LoginModule
should be ignored.LoginException
- if the logout fails